{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_8dw832h2ws79","handle":"task402-pdf-tools","url":"https://wellknown.network/agents/task402-pdf-tools","links":{"self":"https://wellknown.network/agents/task402-pdf-tools/record.json","html":"https://wellknown.network/agents/task402-pdf-tools","markdown":"https://wellknown.network/agents/task402-pdf-tools/record.md","api":"https://wellknown.network/api/v1/agents/task402-pdf-tools","status":"https://wellknown.network/api/v1/agents/task402-pdf-tools/status","claim":"https://wellknown.network/agents/task402-pdf-tools/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/task402-pdf-tools/claim.json","badge":"https://wellknown.network/agents/task402-pdf-tools/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/task402-pdf-tools/history","tools":"https://wellknown.network/api/v1/agents/task402-pdf-tools/tools"},"ard":{"identifier":"urn:air:task402.xyz:server:task402-pdf-tools","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Task402 Agent Evidence Tools","summary":"Paid evidence tools for PDFs, public webpages, OpenAPI contracts, and Base chain data for AI agents.","description":"Paid evidence tools for PDFs, public webpages, OpenAPI contracts, and Base chain data for AI agents.","publisher":{"name":"xyz.task402","url":null},"homepage":"https://task402.xyz","repository":"https://github.com/xbckz/task402","version":"0.3.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://task402.xyz/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-12T14:06:00.753402Z","publishedAt":"2026-10-12T14:06:00.753402Z","registryName":"xyz.task402/x402-docs"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.apis","name":"API Access","confidence":0.911,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.908,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":0.554,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"}],"categories":["data","dev","documents"],"language":"en"},"observed":{"status":"unavailable","statusReason":"5 consecutive checks failed; last success 12d ago.","lastOkAt":"2026-10-17T16:30:30.028Z","lastProbedAt":"2026-10-25T20:29:47.487Z","statusComputedAt":"2026-10-25T20:31:22.609Z","reliability30d":{"probes":28,"successRate":0.8214,"p50Ms":185,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":28,"ok":23,"authBoundaryOk":0,"serviceOk":23,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-25T20:29:47.487Z","kind":"mcp_initialize","ok":false,"httpStatus":null,"latencyMs":null,"error":"unsafe: DNS resolution failed","detail":null},{"at":"2026-10-21T16:33:03.443Z","kind":"mcp_initialize","ok":false,"httpStatus":null,"latencyMs":null,"error":"unsafe: DNS resolution failed","detail":null},{"at":"2026-10-19T10:44:35.376Z","kind":"mcp_initialize","ok":false,"httpStatus":null,"latencyMs":null,"error":"unsafe: DNS resolution failed","detail":null},{"at":"2026-10-18T11:28:19.118Z","kind":"mcp_initialize","ok":false,"httpStatus":null,"latencyMs":null,"error":"unsafe: DNS resolution failed","detail":null},{"at":"2026-10-17T23:27:08.547Z","kind":"mcp_initialize","ok":false,"httpStatus":null,"latencyMs":null,"error":"unsafe: DNS resolution failed","detail":null},{"at":"2026-10-17T16:30:30.028Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":266,"error":null,"detail":{"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"toolCount":20,"toolsHash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","serverName":"x402-pdf","capabilities":["tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T10:21:37.794Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":197,"error":null,"detail":{"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"toolCount":20,"toolsHash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","serverName":"x402-pdf","capabilities":["tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T03:23:32.966Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":137,"error":null,"detail":{"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"toolCount":20,"toolsHash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","serverName":"x402-pdf","capabilities":["tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-10-16T20:37:02.788Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":225,"error":null,"detail":{"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"toolCount":20,"toolsHash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","serverName":"x402-pdf","capabilities":["tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-10-16T14:32:30.423Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":356,"error":null,"detail":{"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"toolCount":20,"toolsHash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","serverName":"x402-pdf","capabilities":["tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}}],"tools":[{"name":"generate_pdf","description":"Create a professionally formatted, paginated PDF from Markdown. Returns a short-lived download capability."},{"name":"get_pdf_job","description":"Read the status for a PDF job using its unguessable capability."},{"name":"inspect_pdf","description":"Inspect a previously uploaded PDF using its document capability. Upload binary PDFs through POST /v1/documents; persist both the returned capability and recover"},{"name":"get_document_map","description":"Return page labels, sizes, native-text previews, bookmarks, and sparse-text warnings. Set page to include up to 500 positioned text blocks for that page."},{"name":"search_document","description":"Find exact normalized text matches in native PDF text (no OCR). Results and excerpts are bounded."},{"name":"batch_search_document","description":"Search up to 20 exact normalized-text queries in one bounded call. Useful when an agent needs several clauses or fields from one PDF."},{"name":"prepare_document_context","description":"Rank native-text pages for a question and return a bounded context pack with page, block, and excerpt evidence. No model call or OCR is used."},{"name":"extract_document_fields","description":"Extract caller-supplied literal labels and adjacent native-text values with page and block evidence. Missing labels return null; no semantic extraction or OCR i"},{"name":"read_document","description":"Read extractable native text from up to 10 selected pages. Output is limited to 32,000 characters; scanned pages need OCR, which is not provided."},{"name":"verify_document_citation","description":"Check that a quote of 5 to 500 characters appears on the stated page in extracted native text. This does not establish truth or visual reading order."},{"name":"compare_pdfs","description":"Compare page count and normalized native text between two separately authorized uploaded PDFs. Image-only and visual differences are not compared."},{"name":"validate_pdf_text","description":"Check that the PDF parses, has an optional expected page count, and contains required text. This does not perform PDF/A, signature, visual, or OCR validation."},{"name":"render_pdf_page_region","description":"Render one authorized PDF page crop as PNG. x/y/width/height are normalized 0-1 page fractions; output is bounded to four million pixels."},{"name":"web_evidence","description":"Fetch a public HTTPS page and return bounded citation-ready evidence."},{"name":"inspect_openapi","description":"Inspect a caller-supplied OpenAPI JSON document without fetching remote references."},{"name":"plan_api_request","description":"Select an OpenAPI operation and generate a safe request plan without executing it."},{"name":"diff_openapi","description":"Compare two caller-supplied OpenAPI JSON documents."},{"name":"get_chain_balance","description":"Read a native Base balance."},{"name":"get_chain_transaction","description":"Read a Base transaction and receipt."},{"name":"get_erc20_balance","description":"Read one ERC-20 balance on Base."}],"package":null,"toolSurface":{"id":"ts_nfgreet4bzpt","endpointId":"ep_ayvmdfgghsv3","hash":"3a942767a5bef0e2778d35c35a4a57a210fa03463168515f2711d33395b43cef","toolCount":20,"serverName":"x402-pdf","serverVersion":"0.3.2","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-12T12:26:23.043Z","lastSeenAt":"2026-10-17T16:30:30.024Z","observations":20,"toolNames":["generate_pdf","get_pdf_job","inspect_pdf","get_document_map","search_document","batch_search_document","prepare_document_context","extract_document_fields","read_document","verify_document_citation","compare_pdfs","validate_pdf_text","render_pdf_page_region","web_evidence","inspect_openapi","plan_api_request","diff_openapi","get_chain_balance","get_chain_transaction","get_erc20_balance"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_ayvmdfgghsv3","url":"https://task402.xyz/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-21T16:33:03.447Z","auth":{"observedAt":"2026-10-15T13:21:03.387Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-15T13:21:03.411Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"task402.xyz","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-09T22:42:29.000Z","validTo":"2027-01-07T23:42:17.000Z","daysToExpiry":70,"sanCount":2,"fingerprint256":"DC:86:C3:18:B3:73:0F:35:86:2B:03:DA:A4:07:93:69:D2:35:01:E0:69:F0:EB:75:A9:E5:85:82:4C:54:D1:3F"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"xyz.task402/x402-docs","url":"https://registry.modelcontextprotocol.io/v0/servers/xyz.task402%2Fx402-docs","firstSeenAt":"2026-10-11T17:19:08.395Z","fetchedAt":"2026-10-28T00:21:38.272Z","normalizedAt":"2026-10-28T00:21:38.272Z"}]},"firstSeenAt":"2026-10-11T17:19:08.395Z","updatedAt":"2026-10-17T16:32:43.706Z"}