{"openapi":"3.1.0","info":{"title":"Tollkit Web","version":"0.27.0","description":"Web search with date, site and news filters; read one page or five at once, screenshot and summarize them in a real browser; and read PDFs as text. Other Tollkit tools are described at: https://extract.tollkit.dev/openapi.json, https://attest.tollkit.dev/openapi.json, https://chain.tollkit.dev/openapi.json, https://data.tollkit.dev/openapi.json.","x-guidance":"Call any operation with POST and the JSON body its schema shows. Without payment you get HTTP 402 with the exact price in USDC on Base or Solana; pay with any x402 client and repeat the request. Failed calls (any 4xx or 5xx) are never charged. Each operation's description says what it returns and which inputs are refused for free.","contact":{"email":"hello@tollkit.dev"}},"servers":[{"url":"https://web.tollkit.dev"}],"paths":{"/read":{"post":{"operationId":"readPage","summary":"Read any web page as clean text","description":"Read any web page as clean text, rendered in a real browser so JavaScript pages work: visible text (up to 50,000 characters), title and final URL. $0.002 per page; a page that fails to load or is empty is not charged.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Absolute http(s) URL of a public page. JavaScript pages are rendered first."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["url","final_url","http_status","text","text_length","truncated","fetched_at"],"properties":{"url":{"type":"string"},"final_url":{"type":"string","description":"Where the browser ended up after redirects."},"redirected":{"type":"boolean"},"http_status":{"type":"integer"},"title":{"type":["string","null"]},"text":{"type":"string","description":"The page's visible text, rendered in a real browser, navigation and boilerplate stripped."},"text_length":{"type":"integer"},"truncated":{"type":"boolean","description":"True when the page went on past the 50,000-character cap."},"fetched_at":{"type":"string","description":"ISO 8601 render time."}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/screenshot":{"post":{"operationId":"screenshotPage","summary":"Screenshot any web page as a JPEG","description":"Screenshot any web page as a 1280x800 JPEG (base64) with its SHA-256, title and final URL, rendered in a real browser. $0.003 per capture; a page that fails to load is not charged.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Absolute http(s) URL of a public page to capture at 1280x800."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["url","final_url","http_status","captured_at","image"],"properties":{"url":{"type":"string"},"final_url":{"type":"string"},"redirected":{"type":"boolean"},"http_status":{"type":"integer"},"title":{"type":["string","null"]},"captured_at":{"type":"string","description":"ISO 8601 capture time."},"image":{"type":"object","required":["mime_type","width","height","sha256","base64"],"properties":{"mime_type":{"type":"string","const":"image/jpeg"},"width":{"type":"integer","const":1280},"height":{"type":"integer","const":800},"sha256":{"type":"string","description":"SHA-256 of the image bytes, hex."},"base64":{"type":"string","description":"The JPEG, base64, no data: prefix."}}}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/search":{"post":{"operationId":"webSearch","summary":"Web search","description":"Web search: give a query, get Google's top results (title, URL, snippet, date) plus the direct answer box and knowledge panel when there is one, as clean JSON. Filter by date (past hour, day, week, month or year), keep to or leave out up to 5 sites each, or search news only. Up to 10 results, optional country. $0.003 per search; a search with no results is not charged. To read the pages too, use /search/read.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","maxLength":400,"description":"What to search for."},"num":{"type":"integer","minimum":1,"maximum":10,"default":5},"country":{"type":"string","pattern":"^[a-zA-Z]{2}$","description":"Two-letter country code for localised results, e.g. \"us\"."},"freshness":{"type":"string","enum":["hour","day","week","month","year"],"description":"Only results from the past hour, day, week, month or year."},"include_domains":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Only results from these sites, e.g. [\"reuters.com\", \"sec.gov\"]. Subdomains count."},"exclude_domains":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Never results from these sites."},"type":{"type":"string","enum":["web","news"],"default":"web","description":"\"news\" searches news articles (with publisher and date) instead of the whole web."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["query","results","source","searched_at"],"properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string"},"snippet":{"type":["string","null"]},"date":{"type":["string","null"]},"publisher":{"type":"string","description":"News results: who published it."}}}},"answer":{"type":["object","null"],"description":"Google's direct answer box, when there is one."},"knowledge_graph":{"type":["object","null"]},"filters":{"type":"object","description":"The filters that were applied: freshness, include_domains, exclude_domains, type."},"source":{"type":"string","description":"Where the results came from."},"searched_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/search/read":{"post":{"operationId":"searchAndRead","summary":"Search and read","description":"Search the web and read the top results in one call: give a query, get the top web results and the full visible text of the top 1-3 pages, each rendered in a real browser (JavaScript pages work). Unreadable results are skipped for the next one down. Takes the same date, site and news filters as /search. For research, RAG and answering questions from fresh sources. $0.005 per call; nothing is charged if no page can be read.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","maxLength":400,"description":"What to search for."},"num":{"type":"integer","minimum":1,"maximum":3,"default":3,"description":"How many pages to read."},"country":{"type":"string","pattern":"^[a-zA-Z]{2}$"},"freshness":{"type":"string","enum":["hour","day","week","month","year"],"description":"Only results from the past hour, day, week, month or year."},"include_domains":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Only results from these sites, e.g. [\"reuters.com\", \"sec.gov\"]. Subdomains count."},"exclude_domains":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Never results from these sites."},"type":{"type":"string","enum":["web","news"],"default":"web","description":"\"news\" searches news articles (with publisher and date) instead of the whole web."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["query","results","pages_read","source"],"properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string"},"snippet":{"type":["string","null"]},"date":{"type":["string","null"]},"publisher":{"type":"string","description":"News results: who published it."},"page":{"type":["object","null"],"description":"The page read in a real browser: final_url, title, text (up to 12,000 chars), text_length, truncated, fetched_at. Null when it couldn't be read."},"read_error":{"type":"string"}}}},"pages_read":{"type":"integer"},"answer":{"type":["object","null"]},"filters":{"type":"object","description":"The filters that were applied: freshness, include_domains, exclude_domains, type."},"source":{"type":"string"},"searched_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/web/brief":{"post":{"operationId":"pageBrief","summary":"Page brief","description":"Read and summarize any web page in one call: give a URL, the page is rendered in a real browser (JavaScript pages work) and summarized by an LLM to the length you ask for, with its title and final URL. For research, news, docs and link previews. $0.007 per page; a page that fails to load or is empty is not charged.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.007000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Absolute https URL of the page."},"max_words":{"type":"integer","minimum":10,"maximum":250,"default":60}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["url","summary"],"properties":{"url":{"type":"string"},"final_url":{"type":"string"},"title":{"type":["string","null"]},"summary":{"type":"string"},"text_length":{"type":"integer"},"summarized_chars":{"type":"integer"},"input_truncated":{"type":"boolean","description":"True when the page was longer than the part summarized."},"model":{"type":"string"},"fetched_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/web/pages":{"post":{"operationId":"readPages","summary":"Read several pages","description":"Read up to 5 web pages in one call: give a list of URLs, get the full visible text of each, rendered in a real browser (JavaScript pages work), with title and final URL. Pages that fail are listed with the reason and the rest still come back. For RAG, research and reading search results. $0.008 per call; nothing is charged if no page can be read.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.008000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["urls"],"properties":{"urls":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"string","format":"uri"},"description":"1 to 5 absolute http(s) page URLs."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["pages","pages_read"],"properties":{"pages":{"type":"array","description":"One entry per URL, in the order given. ok: true carries final_url, title, text (up to 20,000 chars), text_length, truncated, fetched_at; ok: false carries error and message.","items":{"type":"object","properties":{"url":{"type":"string"},"ok":{"type":"boolean"},"final_url":{"type":"string"},"title":{"type":["string","null"]},"text":{"type":"string"},"text_length":{"type":"integer"},"truncated":{"type":"boolean"},"fetched_at":{"type":"string"},"error":{"type":"string"},"message":{"type":"string"}}}},"pages_read":{"type":"integer"},"pages_failed":{"type":"integer"},"read_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/pdf":{"post":{"operationId":"pdfToText","summary":"PDF to text","description":"PDF to text: give the URL of a PDF (report, filing, paper, manual), get its text page by page with the title, author and page count, ready for RAG or summarizing. Up to 300 pages and 25 MB; text-layer PDFs (not scans). $0.005 per call; a scan, a non-PDF or a dead link is not charged.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Absolute http(s) URL of a PDF."},"max_pages":{"type":"integer","minimum":1,"maximum":300,"default":50,"description":"Read at most this many pages."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["url","page_count","pages"],"properties":{"url":{"type":"string"},"final_url":{"type":"string"},"title":{"type":["string","null"]},"author":{"type":["string","null"]},"created":{"type":["string","null"]},"page_count":{"type":"integer"},"pages_read":{"type":"integer"},"pages":{"type":"array","items":{"type":"object","properties":{"page":{"type":"integer"},"text":{"type":"string"}}}},"text_length":{"type":"integer"},"truncated":{"type":"boolean"},"bytes":{"type":"integer"},"fetched_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}},"/summarize":{"post":{"operationId":"summarizeText","summary":"Summarize supplied text","description":"Summarize text you send (up to 8,000 characters) in the number of words you ask for. $0.005 per call.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"Text to summarize. Refused above 8,000 characters rather than truncated."},"max_words":{"type":"integer","default":60,"description":"Clamped to 250."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["summary"],"properties":{"summary":{"type":"string"},"model":{"type":"string"},"input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"served_at":{"type":"string"}}}}}},"400":{"description":"Bad input: a missing or malformed field, or a URL that is not public. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"402":{"description":"Payment Required. The PAYMENT-REQUIRED header carries the x402 v2 quote (price, asset, network, payTo) for each network accepted. Pay and retry with PAYMENT-SIGNATURE."},"422":{"description":"Valid input the tool could not answer, e.g. an empty page, a token with no pool, an unknown ticker. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"429":{"description":"Too many requests from this caller; retry after a short wait. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"502":{"description":"An upstream source (the page, a chain RPC, a public data API) failed or timed out. Not charged; safe to retry.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}},"503":{"description":"The tool is temporarily unavailable on this deployment. Not charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message","charged"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. invalid_url, no_pool, page_fetch_failed."},"message":{"type":"string","description":"Plain-English reason, ending in \"Nothing was charged.\""},"charged":{"type":"boolean","const":false}}}}}}}}}}}