{"openapi":"3.1.0","info":{"title":"Munition API","version":"0.0.16","description":"Munition provides pay-per-call file sharing, HTML to PDF conversion, web search, page content extraction and flight data for AI agents. Upload a report or image and share its public download link; turn self-contained HTML into an A4 PDF; search and read web sources with Exa, Firecrawl and Serper. Direct HTTP services use USDC payments. The local @munition/mcp adapter (0.0.15+) supports files, flights, web research and HTML to PDF. This document lists pay-per-call x402/MPP routes, free public tools and discovery routes; the complete document including account-token routes is https://api.munition.io/openapi-full.json.","x-guidance":"Munition provides USDC-paid x402/MPP services and free public tools for AI agents. Pay-per-call routes settle in stablecoin USDC via x402 on Base/Polygon/Arbitrum/Solana, or MPP on Base/Polygon/Arbitrum (Solana is x402 only); no API key or signup is required for direct x402 routes. Fetch /llms.txt for the full agent guide.\n\n## Which route to call\n- Web search: POST /v1/exa/search (0.01 USDC, neural, best for research questions and finding sources; add contents.text to get page text in the same call). For Google-style results with snippets use POST /v1/serper/search (0.004 USDC).\n- Read a page: POST /v1/firecrawl/scrape (0.015 USDC, renders JavaScript, returns markdown; use when a plain fetch returns empty, JS-only or 403). For many URLs cheaply use POST /v1/exa/contents (0.002 USDC for up to 20 URLs from Exa's cache).\n- Direct answer with citations: POST /v1/exa/answer (0.01 USDC).\n- Related pages / competitors of a URL: POST /v1/exa/find-similar (0.01 USDC).\n- News, images, products: POST /v1/serper/news, /v1/serper/images, /v1/serper/shopping (0.004 USDC each; country gl and language hl selectable).\n- Search + full content of each result in one call: POST /v1/firecrawl/search (0.03 USDC).\n- Deliver a file to a human: POST /v1/render/pdf (0.02 USDC, self-contained HTML → PDF link) or POST /v1/uploads (0.005 USDC, presigned upload slot → public link, 7 days).\n- Ask people questions: POST /v1/forms (0.01 USDC) returns a hosted form link and a readToken; read answers free with GET /v1/forms/{id}/responses (Authorization: Bearer <readToken>).\n- Travel: POST /v1/flights/search (0.05 USDC), GET /v1/flights/offers/{id} (0.01 USDC), POST /v1/airports/search (0.001 USDC).\n- External flight search links: POST /v1/tools/flight-booking-links (free, no authentication or payment). Pass origin, destination, departureDate and optional returnDate to receive KAYAK and Kiwi.com search URLs. These start new searches and do not reserve a flight or guarantee a fare.\n\n## Calling convention for paid routes\n1. POST with a JSON body and no payment header → 402 with PAYMENT-REQUIRED (accepts[] with exact atomic amounts) and the Bazaar input/output schema.\n2. Sign and retry with PAYMENT-SIGNATURE. Send Idempotency-Key: replays return the stored result without a second charge.\n3. 400 = input rejected before any payment. 422/502 after payment = upstream provider failed; the response carries paidCallId for reconciliation, do not pay again blindly.\nMPP alternative: every web search/scrape/Google route above also exists under /v1/mpp/ (e.g. POST /v1/mpp/exa/search, same price and body); call without Authorization to get the WWW-Authenticate Payment challenge, then retry with Authorization: Payment.\nAll paid-route prices are fixed per call and listed at /v1/tools/prices. The free flight-booking-links route accepts JSON directly and returns 200 on success or 400 for invalid input; no payment headers or Idempotency-Key are required.","contact":{"name":"Munition","email":"hello@munition.io","url":"https://munition.io"}},"x-agentcash-guidance":{"llmsTxtUrl":"https://api.munition.io/llms.txt","agentOpenApiUrl":"https://api.munition.io/openapi.json","fullOpenApiUrl":"https://api.munition.io/openapi-full.json"},"x-agentcash-provenance":{"ownershipProofs":["https://munition.io","https://api.munition.io/openapi.json","https://api.munition.io/.well-known/x402.json","https://api.munition.io/.well-known/mpp.json"]},"servers":[{"url":"https://api.munition.io"}],"tags":[{"name":"Discovery"},{"name":"Upload"},{"name":"Flights"},{"name":"Airports"},{"name":"Proxy"},{"name":"Render"},{"name":"Forms"}],"paths":{"/v1/exa/search":{"post":{"tags":["Proxy"],"operationId":"exa_search_direct","summary":"Search the web and optionally retrieve page contents with Exa","description":"Munition Exa Search: x402-paid neural web search for AI agents. Pay 0.01 USDC per query and get up to 25 ranked results (title, url, date, author, optional page text/highlights/summary) from Exa's semantic index. Supports categories (news, research paper, company, github, people…), domain include/exclude and date filters.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaSearchInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaSearchOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/exa/contents":{"post":{"tags":["Proxy"],"operationId":"exa_contents_direct","summary":"Retrieve readable web page text from URLs with Exa","description":"Munition Exa Contents: x402-paid page content extraction for AI agents. Pay 0.002 USDC per call to fetch clean text (plus optional highlights and summaries) for up to 20 URLs from Exa's cache, with live crawl fallback.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaContentsInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaContentsOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/exa/find-similar":{"post":{"tags":["Proxy"],"operationId":"exa_find_similar_direct","summary":"Find web pages similar to a source URL with Exa","description":"Munition Exa Find Similar: x402-paid similar-page discovery for AI agents. Pay 0.01 USDC to get up to 25 pages semantically similar to a given URL (competitors, related articles, alternatives), with optional page contents.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaFindSimilarInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaFindSimilarOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/exa/answer":{"post":{"tags":["Proxy"],"operationId":"exa_answer_direct","summary":"Answer a web research question with cited sources using Exa","description":"Munition Exa Answer: x402-paid cited answers for AI agents. Pay 0.01 USDC to get a direct answer to a question grounded in live web search, with the source pages as citations.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaAnswerInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaAnswerOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/firecrawl/scrape":{"post":{"tags":["Proxy"],"operationId":"firecrawl_scrape_direct","summary":"Extract readable markdown from a web page with Firecrawl","description":"Munition Firecrawl Scrape: x402-paid web page scraping for AI agents. Pay 0.015 USDC per URL to get the page rendered with JavaScript and converted to clean markdown (optionally raw HTML, links, summary). Use when a plain fetch returns empty, JS-only or 403 content.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.015"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlScrapeInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlScrapeOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/firecrawl/search":{"post":{"tags":["Proxy"],"operationId":"firecrawl_search_direct","summary":"Search the web and optionally read result pages with Firecrawl","description":"Munition Firecrawl Search: x402-paid web search for AI agents. Pay 0.03 USDC per query to get up to 20 web results (url, title, description) and optionally the full markdown content of each result in the same call.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlSearchInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlSearchOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/serper/search":{"post":{"tags":["Proxy"],"operationId":"serper_search_direct","summary":"Search Google for web results and snippets with Serper","description":"Munition Google Search: x402-paid Google web search results for AI agents via Serper. Pay 0.004 USDC per query for organic results (title, link, snippet, position), answer box, knowledge graph, people-also-ask and related searches. Country and language selectable.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperSearchInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperSearchOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/serper/news":{"post":{"tags":["Proxy"],"operationId":"serper_news_direct","summary":"Search Google News for articles with Serper","description":"Munition Google News: x402-paid Google News results for AI agents via Serper. Pay 0.004 USDC per query for recent articles (title, link, source, date, snippet) with country, language and time filters.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperNewsInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperNewsOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/serper/images":{"post":{"tags":["Proxy"],"operationId":"serper_images_direct","summary":"Search Google Images for image URLs with Serper","description":"Munition Google Images: x402-paid Google Images results for AI agents via Serper. Pay 0.004 USDC per query for image URLs, thumbnails, dimensions and source pages.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperImagesInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperImagesOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/v1/serper/shopping":{"post":{"tags":["Proxy"],"operationId":"serper_shopping_direct","summary":"Search Google Shopping for products and prices with Serper","description":"Munition Google Shopping: x402-paid Google Shopping results for AI agents via Serper. Pay 0.004 USDC per query for products with price, seller, rating and link — useful for price comparison and product research.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperShoppingInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperShoppingOutput"}}}},"400":{"description":"Invalid input; rejected before any payment is verified or settled."},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."}}}},"/.well-known/mcp-server.json":{"get":{"tags":["Discovery"],"summary":"MCP Registry server metadata","security":[],"responses":{"200":{"description":"MCP server metadata"}}}},"/.well-known/api-catalog":{"get":{"tags":["Discovery"],"summary":"API catalog discovery document","security":[],"responses":{"200":{"description":"RFC 9727-style API catalog for Munition"}}}},"/.well-known/x402.json":{"get":{"tags":["Discovery"],"summary":"x402 resource discovery document","security":[],"responses":{"200":{"description":"x402-compatible Munition resources and supporting endpoints"}}}},"/.well-known/mpp.json":{"get":{"tags":["Discovery"],"summary":"MPP resource discovery document","security":[],"responses":{"200":{"description":"MPP-compatible stablecoin-only Munition resources and supporting endpoints"}}}},"/llms.txt":{"get":{"tags":["Discovery"],"summary":"LLM-facing Munition API guide","security":[],"responses":{"200":{"description":"Markdown guide for AI agents"}}}},"/v1/tools/prices":{"get":{"tags":["Discovery"],"summary":"Current tool pricing","security":[],"responses":{"200":{"description":"Current upload and renewal prices"}}}},"/v1/tools/flight-booking-links":{"post":{"tags":["Flights"],"summary":"Generate external flight search links","description":"Free external flight search links for KAYAK and Kiwi.com from airports and dates. No account, authentication, payment or provider request. These links start new searches; they do not reserve a flight or guarantee a previously displayed fare. No affiliate tracking or commission is configured.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightBookingLinksInput"}}}},"responses":{"200":{"description":"External search URLs and their limitations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightBookingLinksOutput"}}}},"400":{"description":"Invalid airports, dates or unsupported fields"}}}},"/v1/uploads":{"post":{"tags":["Upload"],"summary":"Upload a file and get a public download link via x402","description":"Munition Upload: temporary file hosting to share a PDF report, spreadsheet, image or other agent-created file through a public download link. Pay 0.005 USDC via x402 to reserve a slot for one file up to 10 MiB with seven-day retention. Send the exact file bytes to the returned presigned uploadUrl using PUT and uploadHeaders; only then is publicUrl ready to share. URLs are non-guessable but public. Supports browser downloads, webhook sharing and agent-to-human handoff. Call without payment for the canonical 402 challenge, then retry with the required x402 payment signature.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadInput"}}}},"responses":{"200":{"description":"Paid upload slot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadOutput"}}}},"402":{"description":"x402 payment required or settlement failed"},"413":{"description":"File too large"}}}},"/v1/flights/search":{"post":{"tags":["Flights"],"summary":"Search live flight offers through direct x402","description":"Munition Flight Search: x402-paid live flight offer search for AI agents. Pay 0.05 USDC to search Duffel flight offers and receive compact normalized itineraries, prices, carriers, and metadata suitable for replay and downstream planning.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlightsInput"}}}},"responses":{"200":{"description":"Paid flight search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlightsOutput"}}}},"402":{"description":"x402 payment required or settlement failed"}}}},"/v1/render/pdf":{"post":{"summary":"Convert HTML to PDF and return a public download link","description":"Convert self-contained HTML with inline CSS into an A4 PDF and return a public download URL. Use for agent-generated reports, invoices, proposals and source lists. Costs 0.020 USDC per call; accepts up to 1 MiB of HTML and produces up to 20 pages / 10 MiB. Submit HTML, not a webpage URL; scripts and external resources are rejected. Uses seven-day deletion eligibility, not a hard public-access cutoff; asynchronous cleanup and caches may persist. Not renewable. Non-guessable public URL, not private: do not submit sensitive content. Direct HTTP x402, or the account-funded MCP tool render_pdf; no MPP route.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderPdfInput"}}}},"responses":{"200":{"description":"Public nonconfidential PDF, not renewable; seven-day deletion eligibility, not a hard public-access cutoff (asynchronous cleanup and caches may persist)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderPdfOutput"}}}},"400":{"description":"Signed input rejected before payment verification, reservation or settlement. error.code=invalid_input; reason is invalid_json, invalid_input or forbidden_html, with at most three allowlisted path/rule issues and a minimal valid example. Submitted content is never echoed."},"402":{"description":"Unsigned requests receive the standard x402 PAYMENT-REQUIRED challenge before body parsing, including empty/malformed JSON; this is discovery, not input validation or renderer readiness. Canonical body schema: extensions.bazaar.schema.properties.input.properties.body. Signed payment rejection or settlement failure can also return 402; inspect the response, do not blindly pay again."},"409":{"description":"Replay conflict or payment requires reconciliation; do not pay again"},"503":{"description":"After signed input passes static validation, an unconfigured renderer is unpaid/unavailable; unsigned discovery does not check renderer configuration. render_settlement_unknown: ambiguous settlement, not proof of payment. Known-paid interrupted effect: pending manual reconciliation. Preserve paidCallId and payment evidence securely; do not pay again. No automatic PDF recovery/refund; owner-approved manual resolution: delivery without another charge or an explicitly authorized refund after verifying payment and non-delivery; no automatic refund or promised resolution SLA."}}}},"/v1/airports/search":{"post":{"tags":["Airports"],"summary":"Search airports through direct x402","description":"Munition Airport Search: x402-paid airport reference data search for AI agents. Pay 0.001 USDC to search airports by IATA code, city, airport name, or country and receive normalized IATA airport records suitable for travel planning.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AirportsSearchInput"}}}},"responses":{"200":{"description":"Paid airport search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AirportsSearchOutput"}}}},"402":{"description":"x402 payment required or settlement failed"}}}},"/v1/flights/offers/{id}":{"get":{"tags":["Flights"],"summary":"Flight offer details through direct x402","description":"Munition Flight Offer Details: x402-paid live Duffel offer detail lookup for AI agents. Pay 0.01 USDC to fetch normalized details for one flight offer, including itinerary segments, cabin, baggage allowance, fare conditions, total price, and booking-relevant conditions.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":256}}],"responses":{"200":{"description":"Paid flight offer details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightOfferDetailsOutput"}}}},"402":{"description":"x402 payment required or settlement failed"}}}},"/v1/uploads/{id}/renew":{"post":{"tags":["Upload"],"summary":"Renew a direct x402 upload","description":"Munition Upload Renew: x402-paid direct HTTP renewal for an existing Munition direct-upload file. Pay 0.005 USDC via x402 on Base, Polygon, Arbitrum, or Solana to extend the public files.munition.io link by 7 days, up to 30 days from the original upload time.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Renewed direct upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectRenewOutput"}}}},"402":{"description":"x402 payment required or settlement failed"},"403":{"description":"Payment wallet does not own this upload"},"404":{"description":"Upload not found"}}}},"/v1/uploads/{id}":{"delete":{"tags":["Upload"],"summary":"Delete a direct x402 upload","description":"Munition Upload Delete: x402-paid direct HTTP deletion for an existing Munition direct-upload file. Pay 0.001 USDC via x402 on Base, Polygon, Arbitrum, or Solana to let the original paying wallet delete the hosted object and mark the upload deleted.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted direct upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectDeleteOutput"}}}},"402":{"description":"x402 payment required or settlement failed"},"403":{"description":"Payment wallet does not own this upload"},"404":{"description":"Upload not found"}}}},"/v1/mpp/uploads":{"post":{"tags":["Upload"],"summary":"Upload a file and get a public download link via MPP","description":"Munition Upload over MPP: pay 0.005 USDC on Base/Polygon/Arbitrum using a stablecoin-only EIP-3009 charge authorization sent in Authorization: Payment. Returns a presigned PUT URL and a public files.munition.io link for sharing reports, PDFs, images or other files. Send the exact file bytes using the returned uploadHeaders before sharing publicUrl.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Paid upload slot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadOutput"}}}},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"413":{"description":"File too large"}}}},"/v1/mpp/flights/search":{"post":{"tags":["Flights"],"summary":"Search live flight offers through MPP","description":"Munition Flight Search over MPP: pay 0.05 USDC on Base/Polygon/Arbitrum via Authorization: Payment to search Duffel flight offers and receive normalized itineraries, prices, carriers, and metadata.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlightsInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Paid flight search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlightsOutput"}}}},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}}}}},"/v1/mpp/uploads/{id}/renew":{"post":{"tags":["Upload"],"summary":"Renew an MPP-paid direct upload","description":"Munition Upload Renew over MPP: pay 0.005 USDC on Base/Polygon/Arbitrum via Authorization: Payment to extend an existing direct-upload public link by 7 days, up to 30 days from the original upload.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Renewed direct upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectRenewOutput"}}}},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"403":{"description":"Payment wallet does not own this upload"},"404":{"description":"Upload not found"}}}},"/v1/mpp/uploads/{id}":{"delete":{"tags":["Upload"],"summary":"Delete an MPP-paid direct upload","description":"Munition Upload Delete over MPP: pay 0.001 USDC on Base/Polygon/Arbitrum via Authorization: Payment so the original paying wallet can delete the hosted object and mark the upload deleted.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Deleted direct upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectDeleteOutput"}}}},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"403":{"description":"Payment wallet does not own this upload"},"404":{"description":"Upload not found"}}}},"/v1/mpp/exa/search":{"post":{"tags":["Proxy"],"operationId":"exa_search_mpp","summary":"Search the web and optionally retrieve page contents with Exa (MPP)","description":"Munition Exa Search over MPP: Search the web and optionally retrieve page contents with Exa. Pay 0.01 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/exa/search.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaSearchInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaSearchOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/exa/contents":{"post":{"tags":["Proxy"],"operationId":"exa_contents_mpp","summary":"Retrieve readable web page text from URLs with Exa (MPP)","description":"Munition Exa Contents over MPP: Retrieve readable web page text from URLs with Exa. Pay 0.002 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/exa/contents.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaContentsInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaContentsOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/exa/find-similar":{"post":{"tags":["Proxy"],"operationId":"exa_find_similar_mpp","summary":"Find web pages similar to a source URL with Exa (MPP)","description":"Munition Exa Find Similar over MPP: Find web pages similar to a source URL with Exa. Pay 0.01 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/exa/find-similar.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaFindSimilarInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaFindSimilarOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/exa/answer":{"post":{"tags":["Proxy"],"operationId":"exa_answer_mpp","summary":"Answer a web research question with cited sources using Exa (MPP)","description":"Munition Exa Answer over MPP: Answer a web research question with cited sources using Exa. Pay 0.01 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/exa/answer.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaAnswerInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExaAnswerOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/firecrawl/scrape":{"post":{"tags":["Proxy"],"operationId":"firecrawl_scrape_mpp","summary":"Extract readable markdown from a web page with Firecrawl (MPP)","description":"Munition Firecrawl Scrape over MPP: Extract readable markdown from a web page with Firecrawl. Pay 0.015 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/firecrawl/scrape.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.015"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlScrapeInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlScrapeOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/firecrawl/search":{"post":{"tags":["Proxy"],"operationId":"firecrawl_search_mpp","summary":"Search the web and optionally read result pages with Firecrawl (MPP)","description":"Munition Firecrawl Search over MPP: Search the web and optionally read result pages with Firecrawl. Pay 0.03 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/firecrawl/search.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlSearchInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirecrawlSearchOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/serper/search":{"post":{"tags":["Proxy"],"operationId":"serper_search_mpp","summary":"Search Google for web results and snippets with Serper (MPP)","description":"Munition Google Search over MPP: Search Google for web results and snippets with Serper. Pay 0.004 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/serper/search.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperSearchInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperSearchOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/serper/news":{"post":{"tags":["Proxy"],"operationId":"serper_news_mpp","summary":"Search Google News for articles with Serper (MPP)","description":"Munition Google News over MPP: Search Google News for articles with Serper. Pay 0.004 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/serper/news.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperNewsInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperNewsOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/serper/images":{"post":{"tags":["Proxy"],"operationId":"serper_images_mpp","summary":"Search Google Images for image URLs with Serper (MPP)","description":"Munition Google Images over MPP: Search Google Images for image URLs with Serper. Pay 0.004 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/serper/images.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperImagesInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperImagesOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/mpp/serper/shopping":{"post":{"tags":["Proxy"],"operationId":"serper_shopping_mpp","summary":"Search Google Shopping for products and prices with Serper (MPP)","description":"Munition Google Shopping over MPP: Search Google Shopping for products and prices with Serper. Pay 0.004 USDC per call on Base/Polygon/Arbitrum via Authorization: Payment (stablecoin-only EIP-3009 charge authorization). Same input, output and failure policy as POST /v1/serper/shopping.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional stable retry key. If omitted, the server derives it from the Payment credential. Reuse the same request and key on retries."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperShoppingInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerperShoppingOutput"}}}},"400":{"description":"Invalid input on an authorized request; rejected before the MPP payment is settled."},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict; do not pay again"},"422":{"description":"Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation."},"502":{"description":"Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation."},"503":{"description":"MPP settlement in progress or ambiguous; retry with the same Authorization, Idempotency-Key and body. Do not pay again."}}}},"/v1/forms":{"post":{"tags":["Forms"],"summary":"Create a hosted form and get its public link via x402","description":"Create a hosted web form that people fill in from any browser without an account, then read their answers as JSON. Costs 0.010 USDC per form. A form stays open up to 30 days (closesAt), closes after 100 responses, and its answers stay readable 7 days after closesAt. Up to 20 questions of six types: text, long_text, email, number, choice, multi_choice. Forms that ask for passwords, codes or bank details are rejected, and every form shows an AI-agent warning banner. Direct x402 and MPP calls return a secret readToken for GET /v1/forms/{id}/responses. Call without payment for the canonical 402 challenge, then retry with the x402 payment signature. Unsigned requests are not validated; signed requests are validated before verification and settlement, so an invalid form is never charged.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional retry key; it must be a random, secret value such as a UUID. If omitted, the server derives it from the payment envelope. Reuse the same request, envelope and key on retries. Send one to be able to recover readToken on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormCreateInput"}}}},"responses":{"200":{"description":"Form created. readToken is returned again only on an identical replay that carries the same Idempotency-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormCreateOutput"}}}},"400":{"description":"form_invalid or form_forbidden_content; nothing was charged"},"402":{"description":"x402 payment required or settlement failed"},"409":{"description":"Idempotency conflict, or an earlier attempt needs manual reconciliation"},"503":{"description":"form_effect_pending: paid, form not opened yet; retry the identical request to finish without a second charge. form_settlement_unknown: do not pay again."}}}},"/v1/mpp/forms":{"post":{"tags":["Forms"],"summary":"Create a hosted form and get its public link via MPP","description":"Create a hosted web form that people fill in from any browser without an account, then read their answers as JSON. Costs 0.010 USDC per form. A form stays open up to 30 days (closesAt), closes after 100 responses, and its answers stay readable 7 days after closesAt. Up to 20 questions of six types: text, long_text, email, number, choice, multi_choice. Forms that ask for passwords, codes or bank details are rejected, and every form shows an AI-agent warning banner. Direct x402 and MPP calls return a secret readToken for GET /v1/forms/{id}/responses. Paid over MPP: 0.01 USDC on Base/Polygon/Arbitrum with a stablecoin-only charge authorization sent in Authorization: Payment.","security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"USD"}}]},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Optional retry key; it must be a random, secret value such as a UUID. If omitted, the server derives it from the Payment credential. Reuse the same request, credential and key on retries. Send one to be able to recover readToken on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormCreateInput"}}}},"responses":{"200":{"headers":{"Payment-Receipt":{"description":"Encoded MPP settlement receipt. Cached idempotent replays or completed-effect recovery may omit this header.","schema":{"type":"string"}}},"description":"Form created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormCreateOutput"}}}},"400":{"description":"form_invalid or form_forbidden_content; nothing was charged"},"402":{"description":"Call without Authorization to receive an MPP challenge, then retry with Authorization: Payment <credential>. Invalid payment and settlement failures can also return 402.","headers":{"WWW-Authenticate":{"description":"MPP Payment challenge for a stablecoin-only USDC charge. Returned on the unpaid challenge response.","schema":{"type":"string"}}}},"409":{"description":"Idempotency conflict"},"503":{"description":"form_effect_pending: paid, form not opened yet; retry the identical request to finish without a second charge. form_settlement_unknown: do not pay again."}}}}},"components":{"schemas":{"UploadTags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":20,"default":[],"description":"Stable upload tags for categorization."},"DirectUploadInput":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180,"description":"Optional original filename used for a readable public URL slug, for example report.pdf or screenshot.png."},"mime":{"type":"string","minLength":1,"maxLength":120,"description":"MIME type of the file to upload, for example application/pdf, image/png, text/plain, or application/json."},"size":{"type":"integer","minimum":1,"maximum":10485760,"description":"File size in bytes. The short-10mb tier accepts one file up to 10 MB."},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Lowercase hex-encoded SHA-256 digest of the exact file bytes, used to bind the upload slot to the final file."},"sha256Base64":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$","description":"Base64-encoded 32-byte SHA-256 digest of the same file bytes, sent as x-amz-checksum-sha256 during the S3 PUT."},"tags":{"$ref":"#/components/schemas/UploadTags"},"tier":{"type":"string","enum":["short-10mb"],"default":"short-10mb","description":"Upload tier. short-10mb costs 0.005 USDC, accepts one file up to 10 MB, and retains the public link for 7 days."}},"required":["mime","size","sha256","sha256Base64"],"additionalProperties":false},"DirectUploadOutput":{"type":"object","properties":{"id":{"type":"string","description":"Munition upload slot id."},"uploadUrl":{"type":"string","format":"uri","description":"Presigned S3 URL where the client uploads file bytes after payment."},"uploadMethod":{"type":"string","enum":["PUT"],"description":"HTTP method to use when uploading bytes to uploadUrl."},"uploadHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Required headers for the uploadUrl PUT, including content-type, content-length, checksum, and sha256 metadata."},"publicUrl":{"type":"string","format":"uri","description":"Public non-guessable files.munition.io URL for sharing the uploaded file."},"expiresAt":{"type":"string","format":"date-time","description":"When the public file link expires and the file is deleted."},"uploadUrlExpiresAt":{"type":"string","format":"date-time","description":"When the presigned upload URL expires."},"maxSize":{"type":"integer","description":"Maximum allowed file size in bytes for this upload slot."},"tags":{"$ref":"#/components/schemas/UploadTags"}},"required":["id","uploadUrl","uploadMethod","uploadHeaders","publicUrl","expiresAt","uploadUrlExpiresAt","maxSize","tags"]},"SearchFlightsInput":{"type":"object","properties":{"origin":{"type":"string","minLength":3,"maxLength":3,"description":"IATA airport code to depart from, for example SFO."},"destination":{"type":"string","minLength":3,"maxLength":3,"description":"IATA airport code to arrive at, for example NRT."},"departureDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Outbound date in YYYY-MM-DD format."},"returnDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Optional return date in YYYY-MM-DD format."},"adults":{"type":"integer","minimum":1,"maximum":9,"default":1},"children":{"type":"integer","minimum":0,"maximum":9,"default":0},"infants":{"type":"integer","minimum":0,"maximum":9,"default":0},"travelClass":{"type":"string","enum":["ECONOMY","PREMIUM_ECONOMY","BUSINESS","FIRST"],"default":"ECONOMY"},"nonStop":{"type":"boolean","description":"When true, return only offers whose itineraries have one segment each."},"maxResults":{"type":"integer","minimum":1,"maximum":50,"default":50},"maxPrice":{"type":"number","exclusiveMinimum":0,"description":"Optional max total offer price. Currency conversion is not applied."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Optional ISO currency code used with maxPrice."}},"required":["origin","destination","departureDate"],"additionalProperties":false},"SearchFlightsOutput":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","const":"flight_search"},"totalPrice":{"type":"string"},"currency":{"type":"string"},"airlineCodes":{"type":"array","items":{"type":"string"}},"itineraries":{"type":"array","items":{"type":"object","properties":{"duration":{"type":"string"},"numberOfStops":{"type":"integer","minimum":0},"segments":{"type":"array","items":{"type":"object","properties":{"departure":{"type":"object","properties":{"airportCode":{"type":"string"},"at":{"type":"string"}},"additionalProperties":false},"arrival":{"type":"object","properties":{"airportCode":{"type":"string"},"at":{"type":"string"}},"additionalProperties":false},"carrierCode":{"type":"string"},"operatingCarrierCode":{"type":"string"},"flightNumber":{"type":"string"},"aircraft":{"type":"string"},"duration":{"type":"string"}},"required":["departure","arrival"],"additionalProperties":false}}},"required":["numberOfStops","segments"],"additionalProperties":false}}},"required":["id","source","totalPrice","currency","airlineCodes","itineraries"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer","minimum":0},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}}},"required":["results","meta"],"additionalProperties":false},"AirportsSearchInput":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":100,"description":"Airport search text, such as an IATA code, city, airport name, or country."}},"required":["query"],"additionalProperties":false},"AirportsSearchOutput":{"type":"object","properties":{"query":{"type":"string"},"airports":{"type":"array","items":{"type":"object","properties":{"iataCode":{"type":"string","minLength":3,"maxLength":3},"name":{"type":"string"},"cityName":{"type":"string"},"countryCode":{"type":"string"},"countryName":{"type":"string"},"timeZone":{"type":"string"},"coordinates":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"],"additionalProperties":false}},"required":["iataCode","name","cityName","countryCode","countryName"],"additionalProperties":false}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer","minimum":0},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"],"additionalProperties":false}},"required":["query","airports","meta"],"additionalProperties":false},"RenderPdfInput":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":1048576,"description":"Self-contained HTML document (UTF-8, up to 1 MiB) with inline CSS. No JavaScript, iframes, forms, <link>, external or relative resources: scripting is disabled and document requests are intercepted/aborted in an offline browser context, not process-wide OS egress isolation. The Chromium sandbox is disabled; process isolation is a deployment concern. Embed images and fonts as data: URIs (png, jpeg, gif, webp, svg, woff/woff2/ttf/otf). Output is A4, up to 20 pages / 10 MiB on successful return, with a 10-second application-level render watchdog budget. Launch, shutdown and cleanup can extend elapsed call time; this is not a hard process-lifetime bound. Page and PDF-byte limits are checked after PDF allocation and do not bound peak memory or CPU."},"filename":{"type":"string","minLength":1,"maxLength":180,"description":"Optional filename used for a readable public URL slug, for example invoice-2026-09.pdf. Consecutive dots (..) anywhere are invalid."}},"required":["html"],"additionalProperties":false},"RenderPdfOutput":{"type":"object","properties":{"id":{"type":"string","description":"Munition render id."},"publicUrl":{"type":"string","format":"uri","description":"Non-guessable public files.munition.io URL of the rendered PDF; do not render confidential content. PDF render artifacts are not renewable via direct x402 or MPP upload-renew endpoints, unlike ordinary uploads."},"expiresAt":{"type":"string","format":"date-time","description":"Seven-day deletion eligibility, not an exact public-access cutoff. Daily cleanup and asynchronous S3 lifecycle deletion may run later; cached responses can persist. No hard deletion deadline is guaranteed. PDF render artifacts are not renewable."},"bytes":{"type":"integer","description":"Size of the PDF in bytes."},"pages":{"type":"integer","description":"Number of A4 pages in the PDF."},"sha256":{"type":"string","description":"Lowercase hex SHA-256 of the PDF bytes."},"renderMs":{"type":"integer","description":"Server-side render time in milliseconds."}},"required":["id","publicUrl","expiresAt","bytes","pages","sha256","renderMs"],"additionalProperties":false},"FormCreateInput":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120,"description":"Form title shown to people."},"description":{"type":"string","maxLength":1000,"description":"Optional intro under the title. Plain text: newlines are kept, links are not clickable."},"fields":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$","description":"Stable key used in answers, unique within the form."},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Question text shown to people."},"type":{"type":"string","enum":["text","long_text","email","number","choice","multi_choice"],"description":"text (up to 2000 characters), long_text (up to 5000), email, number, choice (exactly one option) or multi_choice (any number of options)."},"required":{"type":"boolean","default":false},"options":{"type":"array","minItems":2,"maxItems":20,"items":{"type":"string","minLength":1,"maxLength":100},"description":"Required for choice and multi_choice, not allowed otherwise. Unique, ignoring case."}},"required":["id","label","type"],"additionalProperties":false},"description":"1 to 20 questions, shown in order."},"closesAt":{"type":"string","format":"date-time","description":"When the form stops accepting answers, with a timezone: between 5 minutes and 30 days from now. Default: 30 days."},"successMessage":{"type":"string","maxLength":300,"description":"Optional message shown after an answer is sent."}},"required":["title","fields"],"additionalProperties":false},"FormCreateOutput":{"type":"object","properties":{"formId":{"type":"string"},"publicUrl":{"type":"string","format":"uri","description":"Share this link; people answer without an account."},"closesAt":{"type":"string","format":"date-time"},"maxResponses":{"type":"integer"},"responsesReadableUntil":{"type":"string","format":"date-time"},"readToken":{"type":"string","description":"Direct x402 and MPP only. Secret bearer token for GET /v1/forms/{id}/responses and POST /v1/forms/{id}/close. Returned again only on an identical replay that carries the same Idempotency-Key header."}},"required":["formId","publicUrl","closesAt","maxResponses","responsesReadableUntil"],"additionalProperties":false},"FlightOfferDetailsOutput":{"type":"object","properties":{"id":{"type":"string"},"totalPrice":{"type":"string"},"currencyCode":{"type":"string"},"validatingAirlineCodes":{"type":"array","items":{"type":"string"}},"itineraries":{"type":"array","items":{"type":"object","properties":{"duration":{"type":"string"},"numberOfStops":{"type":"integer","minimum":0},"segments":{"type":"array","items":{"type":"object","properties":{"departure":{"type":"object","properties":{"airportCode":{"type":"string"},"at":{"type":"string"}},"additionalProperties":false},"arrival":{"type":"object","properties":{"airportCode":{"type":"string"},"at":{"type":"string"}},"additionalProperties":false},"carrierCode":{"type":"string"},"operatingCarrierCode":{"type":"string"},"flightNumber":{"type":"string"},"aircraft":{"type":"string"},"duration":{"type":"string"},"cabin":{"type":"string","enum":["economy","premium_economy","business","first"]},"cabinMarketingName":{"type":"string"}},"required":["departure","arrival"],"additionalProperties":false}},"conditions":{"type":"object","properties":{"description":{"type":"string"}},"additionalProperties":false}},"required":["numberOfStops","segments"],"additionalProperties":false}},"baggageAllowance":{"type":"object","properties":{"carryOn":{"type":"integer","minimum":0},"checked":{"type":"integer","minimum":0}},"additionalProperties":false},"fareConditions":{"type":"object","properties":{"changeable":{"type":"boolean"},"refundable":{"type":"boolean"},"changePenaltyAmount":{"type":"string"},"changePenaltyCurrency":{"type":"string"},"refundPenaltyAmount":{"type":"string"},"refundPenaltyCurrency":{"type":"string"},"supportedPassengerIdentityDocumentTypes":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"cabin":{"type":"string","enum":["economy","premium_economy","business","first"]},"conditions":{"type":"object","properties":{"description":{"type":"string"}},"additionalProperties":false},"searchedAt":{"type":"string","format":"date-time"}},"required":["id","totalPrice","currencyCode","validatingAirlineCodes","itineraries","baggageAllowance","fareConditions","conditions","searchedAt"],"additionalProperties":false},"FlightBookingLinksInput":{"type":"object","properties":{"origin":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Departure IATA airport code, for example JFK."},"destination":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Arrival IATA airport code, different from origin, for example SFO."},"departureDate":{"type":"string","format":"date","description":"Valid outbound calendar date in YYYY-MM-DD format."},"returnDate":{"type":"string","format":"date","description":"Optional return date on or after departure. Omit for a one-way search."}},"required":["origin","destination","departureDate"],"additionalProperties":false},"FlightBookingLinksOutput":{"type":"object","properties":{"kind":{"type":"string","const":"external_flight_search"},"search":{"type":"object","properties":{"origin":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Departure IATA airport code, for example JFK."},"destination":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"Arrival IATA airport code, different from origin, for example SFO."},"departureDate":{"type":"string","format":"date","description":"Valid outbound calendar date in YYYY-MM-DD format."},"returnDate":{"type":"string","format":"date","description":"Optional return date on or after departure. Omit for a one-way search."}},"required":["origin","destination","departureDate"],"additionalProperties":false},"links":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","properties":{"provider":{"type":"string","enum":["kayak","kiwi"]},"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["provider","label","url"],"additionalProperties":false}},"notice":{"type":"string","description":"Explains that these are new searches, not a reservation or guaranteed fare."}},"required":["kind","search","links","notice"],"additionalProperties":false},"DirectRenewOutput":{"type":"object","properties":{"id":{"type":"string","description":"Munition upload id."},"expiresAt":{"type":"string","format":"date-time","description":"Updated public file link expiration time."},"renewalCount":{"type":"integer","minimum":0,"description":"Number of successful renewals applied to this file."},"txHash":{"type":["string","null"],"description":"Settlement transaction hash when available."}},"required":["id","expiresAt","renewalCount","txHash"],"additionalProperties":false},"DirectDeleteOutput":{"type":"object","properties":{"id":{"type":"string","description":"Munition upload id."},"status":{"type":"string","const":"deleted","description":"Deletion status."},"deleted":{"type":"boolean","const":true,"description":"Whether the file is now deleted."},"deletedAt":{"type":"string","format":"date-time","description":"When the file was marked deleted."},"expiresAt":{"type":"string","format":"date-time","description":"Original or current file expiration timestamp."}},"required":["id","status","deleted","deletedAt","expiresAt"],"additionalProperties":false},"ExaSearchInput":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":2000,"description":"Natural-language search query."},"numResults":{"type":"integer","minimum":1,"maximum":25,"default":10},"type":{"type":"string","enum":["auto","neural","keyword","fast"],"default":"auto"},"category":{"type":"string","enum":["company","research paper","news","pdf","github","tweet","personal site","linkedin profile","financial report","people"]},"includeDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"excludeDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"startPublishedDate":{"type":"string","format":"date-time"},"endPublishedDate":{"type":"string","format":"date-time"},"contents":{"type":"object","description":"Which page contents to include. Omit for metadata only.","properties":{"text":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"integer"}}}]},"highlights":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"numSentences":{"type":"integer"},"highlightsPerUrl":{"type":"integer"}}}]},"summary":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"}}}]}}}},"required":["query"],"additionalProperties":false},"ExaSearchOutput":{"type":"object","properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"publishedDate":{"type":["string","null"]},"author":{"type":["string","null"]},"score":{"type":["number","null"]},"text":{"type":["string","null"],"description":"Page text when contents were requested."},"highlights":{"type":"array","items":{"type":"string"}},"summary":{"type":["string","null"]}},"required":["url"]}},"searchType":{"type":"string"},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","results","meta"]},"ExaContentsInput":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","format":"uri"},"minItems":1,"maxItems":20},"text":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"integer"}}}],"default":true},"highlights":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"numSentences":{"type":"integer"}}}]},"summary":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"}}}]},"livecrawl":{"type":"string","enum":["never","fallback","always"]}},"required":["urls"],"additionalProperties":false},"ExaContentsOutput":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"publishedDate":{"type":["string","null"]},"author":{"type":["string","null"]},"score":{"type":["number","null"]},"text":{"type":["string","null"],"description":"Page text when contents were requested."},"highlights":{"type":"array","items":{"type":"string"}},"summary":{"type":["string","null"]}},"required":["url"]}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"fetchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","fetchedAt"]}},"required":["results","meta"]},"ExaFindSimilarInput":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Seed URL."},"numResults":{"type":"integer","minimum":1,"maximum":25,"default":10},"excludeSourceDomain":{"type":"boolean","default":true},"includeDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"excludeDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"contents":{"type":"object","description":"Which page contents to include. Omit for metadata only.","properties":{"text":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"maxCharacters":{"type":"integer"}}}]},"highlights":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"numSentences":{"type":"integer"},"highlightsPerUrl":{"type":"integer"}}}]},"summary":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"query":{"type":"string"}}}]}}}},"required":["url"],"additionalProperties":false},"ExaFindSimilarOutput":{"type":"object","properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"publishedDate":{"type":["string","null"]},"author":{"type":["string","null"]},"score":{"type":["number","null"]},"text":{"type":["string","null"],"description":"Page text when contents were requested."},"highlights":{"type":"array","items":{"type":"string"}},"summary":{"type":["string","null"]}},"required":["url"]}},"searchType":{"type":"string"},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","results","meta"]},"ExaAnswerInput":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":2000,"description":"Question to answer."},"text":{"type":"boolean","default":false,"description":"Include full text of each citation."}},"required":["query"],"additionalProperties":false},"ExaAnswerOutput":{"type":"object","properties":{"query":{"type":"string"},"answer":{"type":"string"},"citations":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"publishedDate":{"type":["string","null"]},"author":{"type":["string","null"]},"score":{"type":["number","null"]},"text":{"type":["string","null"],"description":"Page text when contents were requested."},"highlights":{"type":"array","items":{"type":"string"}},"summary":{"type":["string","null"]}},"required":["url"]}},"meta":{"type":"object","properties":{"citationCount":{"type":"integer"},"answeredAt":{"type":"string","format":"date-time"}},"required":["citationCount","answeredAt"]}},"required":["query","answer","citations","meta"]},"FirecrawlScrapeInput":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Page to scrape."},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","links","summary"]},"default":["markdown"]},"onlyMainContent":{"type":"boolean","default":true,"description":"Strip navigation, footers and boilerplate."},"waitFor":{"type":"integer","minimum":0,"maximum":10000,"description":"Milliseconds to wait for dynamic content."},"timeout":{"type":"integer","minimum":1000,"maximum":30000}},"required":["url"],"additionalProperties":false},"FirecrawlScrapeOutput":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Final URL after redirects."},"title":{"type":["string","null"]},"markdown":{"type":["string","null"],"description":"Page content as markdown."},"html":{"type":["string","null"]},"links":{"type":"array","items":{"type":"string"}},"summary":{"type":["string","null"]},"statusCode":{"type":["integer","null"]},"meta":{"type":"object","properties":{"fetchedAt":{"type":"string","format":"date-time"},"characters":{"type":"integer"}},"required":["fetchedAt","characters"]}},"required":["url","title","markdown","statusCode","meta"]},"FirecrawlSearchInput":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":1000},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5},"lang":{"type":"string","description":"Language code, e.g. en, fr."},"country":{"type":"string","description":"Two-letter country code, e.g. us, fr."},"tbs":{"type":"string","description":"Time filter, e.g. qdr:d (day), qdr:w (week), qdr:m (month)."},"scrapeContent":{"type":"boolean","default":false,"description":"Also scrape each result to markdown."}},"required":["query"],"additionalProperties":false},"FirecrawlSearchOutput":{"type":"object","properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"markdown":{"type":["string","null"],"description":"Present when scrapeContent is true."}},"required":["url"]}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","results","meta"]},"SerperSearchInput":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":1000,"description":"Google query."},"gl":{"type":"string","default":"us","description":"Country code (gl), e.g. us, fr, de."},"hl":{"type":"string","default":"en","description":"Interface language (hl), e.g. en, fr."},"num":{"type":"integer","minimum":1,"maximum":100,"default":10},"page":{"type":"integer","minimum":1,"maximum":10,"default":1},"tbs":{"type":"string","description":"Time filter, e.g. qdr:d, qdr:w, qdr:m, qdr:y."}},"required":["q"],"additionalProperties":false},"SerperSearchOutput":{"type":"object","properties":{"query":{"type":"string"},"organic":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"link":{"type":"string","format":"uri"},"snippet":{"type":"string"},"position":{"type":"integer"},"date":{"type":"string"}},"required":["title","link"]}},"answerBox":{"type":["object","null"]},"knowledgeGraph":{"type":["object","null"]},"peopleAlsoAsk":{"type":"array","items":{"type":"object"}},"relatedSearches":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"}}}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","organic","meta"]},"SerperNewsInput":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":1000,"description":"Google query."},"gl":{"type":"string","default":"us","description":"Country code (gl), e.g. us, fr, de."},"hl":{"type":"string","default":"en","description":"Interface language (hl), e.g. en, fr."},"num":{"type":"integer","minimum":1,"maximum":100,"default":10},"page":{"type":"integer","minimum":1,"maximum":10,"default":1},"tbs":{"type":"string","description":"Time filter, e.g. qdr:d, qdr:w, qdr:m, qdr:y."}},"required":["q"],"additionalProperties":false},"SerperNewsOutput":{"type":"object","properties":{"query":{"type":"string"},"news":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"link":{"type":"string","format":"uri"},"snippet":{"type":"string"},"date":{"type":"string"},"source":{"type":"string"},"imageUrl":{"type":"string"},"position":{"type":"integer"}},"required":["title","link"]}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","news","meta"]},"SerperImagesInput":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":1000,"description":"Google query."},"gl":{"type":"string","default":"us","description":"Country code (gl), e.g. us, fr, de."},"hl":{"type":"string","default":"en","description":"Interface language (hl), e.g. en, fr."},"num":{"type":"integer","minimum":1,"maximum":100,"default":10},"page":{"type":"integer","minimum":1,"maximum":10,"default":1},"tbs":{"type":"string","description":"Time filter, e.g. qdr:d, qdr:w, qdr:m, qdr:y."}},"required":["q"],"additionalProperties":false},"SerperImagesOutput":{"type":"object","properties":{"query":{"type":"string"},"images":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"imageWidth":{"type":"integer"},"imageHeight":{"type":"integer"},"thumbnailUrl":{"type":"string"},"source":{"type":"string"},"link":{"type":"string"},"position":{"type":"integer"}},"required":["imageUrl"]}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","images","meta"]},"SerperShoppingInput":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":1000,"description":"Google query."},"gl":{"type":"string","default":"us","description":"Country code (gl), e.g. us, fr, de."},"hl":{"type":"string","default":"en","description":"Interface language (hl), e.g. en, fr."},"num":{"type":"integer","minimum":1,"maximum":100,"default":10},"page":{"type":"integer","minimum":1,"maximum":10,"default":1},"tbs":{"type":"string","description":"Time filter, e.g. qdr:d, qdr:w, qdr:m, qdr:y."}},"required":["q"],"additionalProperties":false},"SerperShoppingOutput":{"type":"object","properties":{"query":{"type":"string"},"shopping":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"source":{"type":"string"},"link":{"type":"string"},"price":{"type":"string"},"rating":{"type":"number"},"ratingCount":{"type":"integer"},"imageUrl":{"type":"string"},"position":{"type":"integer"}},"required":["title"]}},"meta":{"type":"object","properties":{"resultCount":{"type":"integer"},"searchedAt":{"type":"string","format":"date-time"}},"required":["resultCount","searchedAt"]}},"required":["query","shopping","meta"]}}}}