generated: '2026-09-19' method: searched source: https://macaroonnetwork.com/auth.md derived_from: openapi/macaroonnetwork-com-openapi.json docs: - https://macaroonnetwork.com/auth.md - https://macaroonnetwork.com/terms - https://macaroonnetwork.com/listings/vat-validate-v1 - https://github.com/kevmoz/macaroonnetwork-mcp base_url: https://api.macaroonnetwork.com media_type: application/json api_style: REST over HTTPS (FastAPI); JSON request and response bodies; JSON-RPC 2.0 for MCP and A2A auth: style: >- None, by design. auth.md: "Macaroon Network does not use OAuth registration, user accounts, API keys, or bearer credentials for its public pay-per-call services." Discovery endpoints are anonymous; paid resources are gated by x402 v2 payment (HTTP 402 + PAYMENT-REQUIRED, retry with PAYMENT-SIGNATURE, success carries PAYMENT-RESPONSE); a verified payment "authorizes only the requested resource transaction" and creates no session, token or identity. An optional self-assigned X-Macaroon-Agent-Id header scopes the free-tier quota and "is never an identity or trust credential". The RFC 9728 document intentionally advertises no authorization server. Faith Evidence Pro (PayPal) is the one credentialed surface ("authenticated REST access ... key recovery"); its key mechanics are not documented publicly. detail: authentication/macaroonnetwork-com-authentication.yml payment: protocol: x402 v2 network: Base mainnet (CAIP-2 eip155:8453); Polygon USDC listed as testnet_only/live on a minority of listings; Lightning L402 advertised for feed purchases (MCP macaroons_purchase) and 13 listings' payment_rails, not observed asset: USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 on Base) headers: challenge: PAYMENT-REQUIRED (base64 JSON x402 v2 requirements; also returned as the 402 body) proof: PAYMENT-SIGNATURE (base64 signed payment payload) receipt: PAYMENT-RESPONSE (on the successful paid response) rail_hints: 'X-Macaroon-Payment-Rail: x402 and X-Macaroon-X402-Network: base (shown in the listing-page curl; optional)' challenge_validity: maxTimeoutSeconds 60 price_preflight: GET /execute/{capability_id} returns the 402 and price without executing ("exists purely to advertise the price -- it never executes anything and never takes payment"; also how x402 Bazaar crawlers index it) request_shape: '{ "input": , "predicate": }' response_shape: '{ "payload": , "predicate_passed": bool, "receipt": {...} }' predicate: 'JSON: {"type": "all"|..., "conditions": [{"type": "field_changed"|"count_gte"|..., "field": "$.jsonpath", "value": ..., "operator": "eq"}]}; every listing publishes sample_predicate and predicate_hash (SHA-256) so the buyer can pin exactly what settlement is gated on.' receipts: GET /api/receipts/{receipt_id} -> ReceiptResponse {receipt_id, service_id, request_hash, payment_network, payment_reference, payment_protocol, payment_provider, challenge_reference, settlement_state, amount, currency, execution_id, predicate_hash, predicate_result, validation_run_id, result_hash, created_at} discovery: /.well-known/x402 (resources[]), /.well-known/ai-catalog.json (payment_rails + payment_offers per capability), /.well-known/api-catalog (RFC 9727) idempotency: supported: false coverage: none mechanism: null header: null scope: [] retention: undocumented description: >- No Idempotency-Key header, parameter or body field exists on any of the 120 operations, and no page documents one. The payment layer gives a narrower guarantee: each signed x402 payment "authorizes only the requested resource transaction" (auth.md) and settles once, so a captured PAYMENT-SIGNATURE cannot be replayed for a second execution. That is replay protection on the money, not idempotency on the call — an agent that times out after sending a paid request has no documented way to learn whether it executed other than GET /api/receipts/{receipt_id}, and a retry needs a new signed payment. Free-tier calls are consumed only on predicate_pass, so a failed or errored free call is not double-counted. gaps: - No idempotency key on POST /execute/{capability_id}, the operation that spends money. - No documented safe-retry guidance for an ambiguous outcome; receipts are the only reconciliation path. - No idempotency key on POST /listings, POST /api/provider/candidates or POST /api/marketing/email-signup. dry_run_mode: supported: false status: none note: >- No dry_run / simulate / preview / validate_only parameter exists on any operation. What the provider offers instead is (a) a price preflight — GET /execute/{capability_id} answers 402 without executing; (b) free-tier calls on 42 listings that run the real capability; (c) the free Bible Evidence MCP's *_preview tools, which return bounded real output for the paid christian-* twins; and (d) a published sample_predicate and input_schema per listing so a request can be validated client-side. None of these is a dry run of a paid execution, so this is recorded as none. reversibility: grade: documented docs: https://macaroonnetwork.com/terms note: >- The only reversal on the agent path is automatic and pre-settlement: the terms state funds are held, not settled, until the response is checked against the predicate, and "A failed predicate refunds automatically through that same rail; there is no separate chargeback process outside it." No buyer-initiated reversal operation exists and no window is stated for one, so the grade is documented (0.4), not verified. For the two PayPal subscriptions the pages state self-service cancellation "any time", which is a reversal of the recurring charge but not of the API surface. Nothing below asserts a window the provider has not written. write_surfaces: - operation: 'POST /execute/{capability_id} (72 execute_* operations; x402 exact payment)' action: Pay in USDC and run a live-data or scientific capability reversal: automatic refund when the acceptance predicate fails or the bridge errors (money never settles) reversal_operation: null window: null stated_terms: - verbatim: 'Funds are held, not settled, until the response is checked against the predicate you saw before paying. A failed predicate refunds automatically through that same rail; there is no separate chargeback process outside it.' - verbatim: "To the maximum extent permitted by law, Macaroon Network's total liability arising from a listing is limited to the amount actually paid for that specific request." grade: documented note: A passed predicate settles and cannot be reversed; the data has been delivered in-band. No refund for a settled call is offered anywhere. - operation: MCP macaroons_purchase (Lightning L402 hold invoice; feed change-events) action: Buy change-events for a feed target reversal: hold invoice settles only if the predicate passes, "otherwise it is fully refunded" (tool description) reversal_operation: null window: null grade: documented - operation: execute_polymathica_heated_channel_job_v1 (asynchronous GPU job, 0.25 USDC) action: Start a validated-workflow PINN training job "without holding an HTTP request open during training" reversal: none documented reversal_operation: null window: null grade: none note: No cancel-job operation exists in the contract. - operation: create_listing_listings_post -> delete_listing_listings__capability_id__delete action: Provider registers a capability manifest reversal: DELETE /listings/{capability_id} (204) reversal_operation: delete_listing_listings__capability_id__delete window: null grade: documented note: Provider-side surface; robots.txt on the API host disallows /api/provider/ and the whoami endpoint 404s anonymously, so this is not a public buyer surface. - operation: submit_provider_candidate_api_provider_candidates_post action: Submit a candidate capability for review reversal: none documented window: null grade: none - operation: marketing_email_signup_api_marketing_email_signup_post action: Join the new-listings waitlist reversal: none documented on the API; the waitlist page links the privacy policy, which offers deletion by email window: null grade: none - operation: PayPal subscriptions (Faith Evidence Pro, Logistics Compliance Pro) — not API operations action: Recurring charge reversal: 'self-service cancellation — "Cancel any time from your private lookup page" / "self-service cancellation"' window: any time (stated) grade: documented note: Cancellation stops future charges; no refund term for a current period is stated. pagination: style: limit-only request_params: limit: 1-20, default 10 (GET /listings/search, GET /api/public/services/search); 1-20 default 5 on MCP macaroons_search category: optional filter on /api/public/services and /api/public/services/search intent / query: required free-text on the search endpoints response_fields: {listings: array (ListingsResponse / SearchResponse, with similarity on search hits), services: array (PublicServicesResponse)} cursor: none note: GET /listings and GET /api/public/services return the whole registry (85 and 79 rows on 2026-09-19); there is no cursor, offset or next link. field_expansion: supported: false note: PublicServiceDetail adds provider, inputs and outputs over PublicServiceSummary; the detail is a separate GET, not an expand parameter. metadata: supported: false note: No client metadata field; every response carries provenance metadata instead (content_hash, generated_at, sources_checked, predicate_hash, receipt). request_tracing: request_id_header: x-request-id (UUID, observed on every API-host response; undocumented) correlation_fields: [RouterResolveResponse.request_id, ReceiptResponse.receipt_id, execution_id, validation_run_id, request_hash, result_hash, predicate_hash, content_hash] versioning: scheme: capability-id suffix (-v1, one -v2); OpenAPI info.version 1.0.0; no version in paths or headers detail: lifecycle/macaroonnetwork-com-lifecycle.yml error_envelope: media_type: application/json rfc9457: false shape: '{ "detail": string | ValidationError[] }; 402 carries the x402 JSON body + PAYMENT-REQUIRED header; JSON-RPC error objects on MCP/A2A' detail: errors/macaroonnetwork-com-problem-types.yml rate_limits: signal_status: undocumented (no 429 declared) headers: none; x-request-id only quotas: free-tier allowances per agent per capability; subscription quotas detail: rate-limits/macaroonnetwork-com-rate-limits.yml webhooks: supported: false note: No webhook, callback or AsyncAPI surface. "Change feed" listings (tx-new-business-change-feed-v1, uk-logistics-operator-change-feed-v1, gpu-llm-pricing-changes-v1) are pull-based paid queries; the Logistics Pro watchlist sends human email alerts. robots: api_host: 'User-agent: * Allow: /.well-known/, /openapi.json, /listings, /execute/, /a2a, /api/public/; Disallow: /payments/, /api/provider/, /api/admin/' apex: 'Allow: /; Sitemap: https://macaroonnetwork.com/sitemap.xml' other_conventions: - name: Capability id is the join key everywhere detail: The same id is the OpenAPI path suffix, the A2A skill id, the MCP macaroons_execute capability_id, the api-catalog anchor, the x402 resource URL and the listing page slug. - name: Amounts detail: amount_atomic is USDC in 6-decimal atomic units (3000 = 0.003 USDC); /listings also shows a legacy price_sats field. - name: Provenance fields detail: Responses label source, translation/corpus version, retrieval time and a deterministic content_hash (Bible evidence); listings publish validation evidence including on-chain canary transaction hashes. - name: Agent-facing guidance in the spec detail: 'info.x-guidance: "Choose a concrete POST /execute/ operation. Send the documented JSON body, receive an x402 v2 USDC challenge on Base, then retry with PAYMENT-SIGNATURE. Treat licence status and validation claims exactly as returned; unknown evidence is not permission."'