Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,559Letters: 14Defects: 1,336counted 4 min ago
teppi

Server definition

Hash
sha256:3ebad60b444e6e91baa5ef085266e40209c8235627c0cc604fdb3fed87776571
What it is
What a remote MCP server returned when asked what it offers: 21 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Add an evidence bundle to a collection and trigger async vector indexing. Use after create_collection to populate a collection with documents. Once indexed, documents become searchable via search_collection and ask_collection. Indexing is async — poll get_job_status with the returned job_id until status is \"complete\".\nPREREQUISITE: Bundle must have status \"complete\" (check with get_bundle). Collection must be owned by your API key.\nReturns: { collection_id, bundle_id, job_id (poll for indexing completion) }\nExample prompts:\n- \"Add my contract bundle ev_550e8400 to the Q4 Contracts collection.\"\n- \"Put this evidence bundle into my Due Diligence Docs collection for search.\"\n- \"Add document [bundle_id] to collection [col_id] with a title.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bundle_id": { "description": "Evidence bundle ID (ev_...) to add. Bundle must have status \"complete\". Example: \"ev_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" }, "collection_id": { "description": "Collection ID (col_...) returned by create_collection. Example: \"col_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" }, "title": { "description": "Optional display title for the document in this collection. Example: \"Q4 2025 Financial Report\"", "type": "string" } }, "required": [ "collection_id", "bundle_id" ], "type": "object" }, "name": "add_document_to_collection", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundle_id": { "type": "string" }, "collection_id": { "type": "string" }, "job_id": { "type": "string" }, "receipt": { "anyOf": [ { "additionalProperties": false, "properties": { "action": { "type": "string" }, "agent_id": { "type": "string" }, "algorithm": { "const": "secp256k1-eip191", "type": "string" }, "bundle_id": { "type": "string" }, "key_id": { "type": "string" }, "manifest_sha256": { "type": "string" }, "receipt_id": { "type": "string" }, "signature": { "type": "string" }, "signed_at": { "type": "string" }, "signer_address": { "type": "string" } }, "required": [ "receipt_id", "bundle_id", "agent_id", "action", "manifest_sha256", "signed_at", "signature", "signer_address", "key_id", "algorithm" ], "type": "object" }, { "type": "null" } ] } }, "required": [ "collection_id", "bundle_id", "job_id", "receipt" ], "type": "object" } }, { "description": "Answer a question using RAG over a document collection. Retrieves relevant chunks then synthesizes a cited answer with source attribution. Use when you need a direct answer grounded in your collection documents. For raw matching chunks (without synthesis), use search_collection instead. For single-document Q&A, use qa_url instead.\nPREREQUISITE: Collection must be populated via add_document_to_collection and indexed before results appear.\nReturns: {\n answer: string,\n sources: [{ bundle_id, chunk_id }],\n retrieval: [{ bundle_id, chunk_id, text, score }]\n}\nExample prompts:\n- \"What are the key terms of the service agreement in my collection?\"\n- \"Based on my due diligence docs, what are the main risks?\"\n- \"Answer this question using all documents in the Q4 Contracts collection.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "collection_id": { "description": "Collection ID (col_...) returned by create_collection. Example: \"col_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" }, "max_chunks": { "description": "Max chunks to retrieve for context (default 8). Increase for broad questions, decrease for precision. Example: 12", "type": "number" }, "question": { "description": "Natural language question to answer from collection documents. Example: \"What are the key terms of the service agreement?\"", "type": "string" } }, "required": [ "collection_id", "question" ], "type": "object" }, "name": "ask_collection", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "answer": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "value": {} }, "required": [ "value", "confidence", "citations" ], "type": "object" }, "retrieval": { "items": { "additionalProperties": false, "properties": { "bundle_id": { "type": "string" }, "chunk_id": { "type": "string" }, "score": { "type": "number" }, "text": { "type": "string" } }, "required": [ "bundle_id", "chunk_id", "text", "score" ], "type": "object" }, "type": "array" }, "sources": { "items": { "additionalProperties": false, "properties": { "bundle_id": { "type": "string" }, "chunk_id": { "type": "string" } }, "required": [ "bundle_id", "chunk_id" ], "type": "object" }, "type": "array" } }, "required": [ "answer", "sources", "retrieval" ], "type": "object" } }, { "description": "Verify a list of factual claims against document text. Uses a quality AI model with citation-level evidence. Use after extract_text or extract_url when you need to validate specific factual assertions. For open-ended questions about a document, use qa_url instead. For multi-document investigation, use ask_collection.\nTypical workflow: extract_text/extract_url → check_claims.\nReturns: {\n claims: [{ claim, status: \"supported\"|\"contradicted\"|\"not_found\", evidence: { quote, paragraphs[] }, confidence: \"high\"|\"medium\"|\"low\" }],\n truncated: boolean\n}\nExample prompts:\n- \"Check whether this contract mentions a liability cap of $1M.\"\n- \"Verify these claims against the document: [claims list].\"\n- \"Does the report actually say revenue grew 23%?\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "claims": { "description": "Factual statements to verify. Each claim is checked independently against the text. Example: [\"Founded in 2010\", \"Revenue exceeded $1M\"]", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Default ~3000 tokens. Truncates input text, not the output. Example: 4000", "type": "number" }, "text": { "description": "Document text to check claims against. Obtain via extract_text or extract_url. Example: \"ACME Corp was founded in 2010. Revenue exceeded $1M in 2024.\"", "type": "string" } }, "required": [ "text", "claims" ], "type": "object" }, "name": "check_claims", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "claims": { "items": { "additionalProperties": false, "properties": { "claim": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "evidence": { "additionalProperties": false, "properties": { "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs" ], "type": "object" }, "status": { "enum": [ "supported", "contradicted", "not_found" ], "type": "string" } }, "required": [ "claim", "status", "evidence", "confidence" ], "type": "object" }, "type": "array" }, "truncated": { "type": "boolean" } }, "required": [ "claims", "truncated" ], "type": "object" } }, { "description": "Create a named document collection for cross-document semantic search and RAG-based Q&A. Free — no credits consumed. Use when you want to group related evidence bundles for unified search (search_collection) or question answering (ask_collection).\nNOTE: Collections start empty. Add evidence bundles with add_document_to_collection. Indexing is async — once complete, use search_collection or ask_collection.\nReturns: { collection_id: string (col_...), name: string }\nExample prompts:\n- \"Create a collection called Q4 Contracts for my quarterly reports.\"\n- \"Set up a new document group named Due Diligence Docs.\"\n- \"Make a collection to organize my vendor agreements.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "name": { "description": "Human-readable collection name. Example: \"Q4 Contracts\" or \"Due Diligence Docs\"", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_collection", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "collection_id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "collection_id", "name" ], "type": "object" } }, { "description": "Extract typed fields from document text using a caller-defined schema. Uses a quality AI model with retry logic. Use when you need specific data points from a document rather than full text. For invoices with known fields, parse_invoice (prebuilt schema) may be simpler. For general summarization, use summarize_document instead.\nSchema format: { \"field_name\": \"type hint or description\" } — e.g. { \"contract_date\": \"ISO date\", \"party_a\": \"string\", \"penalty_usd\": \"number\" }.\nReturns: {\n data: { <field>: value },\n data_cited: { <field>: { value, confidence: \"high\"|\"medium\"|\"low\", citations: [{ quote, paragraphs[] }] } }\n}\nExample prompts:\n- \"Extract the contract date, parties, and penalty amount from this agreement.\"\n- \"Pull the vendor name, PO number, and total from this document.\"\n- \"Get me all named fields from this form using my custom schema.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Default ~2500 tokens. Truncates input, not output. Example: 3000", "type": "number" }, "schema": { "additionalProperties": {}, "description": "Field map: describe each field you want extracted with a type hint. Example: { \"total_usd\": \"number\", \"vendor\": \"string\", \"invoice_date\": \"ISO date YYYY-MM-DD\" }", "propertyNames": { "type": "string" }, "type": "object" }, "text": { "description": "Document text to extract from. Obtain via extract_text or extract_url. Example: \"This Service Agreement is entered into on 2025-03-15 between ACME Corp and Beta Inc...\"", "type": "string" } }, "required": [ "text", "schema" ], "type": "object" }, "name": "extract_structured", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "data": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "data_cited": { "additionalProperties": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "value": {} }, "required": [ "value", "confidence", "citations" ], "type": "object" }, "propertyNames": { "type": "string" }, "type": "object" } }, "required": [ "data", "data_cited" ], "type": "object" } }, { "description": "Extract tables and forms as Markdown from a PDF or image (base64-encoded). Use when the document contains structured tabular data such as financial statements, data sheets, or forms. For plain prose documents, use extract_text instead.\nReturns: { pages: number, text: string } — text contains Markdown-formatted tables.\nExample prompts:\n- \"Extract the tables from this financial statement.\"\n- \"Pull the data table from this PDF into Markdown format.\"\n- \"Get the tabular data from this form document.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "document_base64": { "description": "Base64-encoded PDF or image bytes (max ~15 MB). Example: \"JVBERi0xLjcNJeLjz9MNCj...\" (truncated PDF base64)", "type": "string" }, "mime_type": { "description": "MIME type of the document. Example: \"application/pdf\" for PDF bank statements, \"image/jpeg\" for photo of a form.", "enum": [ "application/pdf", "image/jpeg", "image/png", "image/webp" ], "type": "string" } }, "required": [ "document_base64", "mime_type" ], "type": "object" }, "name": "extract_tables", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "pages": { "type": "number" }, "text": { "type": "string" } }, "required": [ "pages", "text" ], "type": "object" } }, { "description": "Extract plain text from a PDF or image (base64-encoded). Use when you need raw text for downstream AI analysis (summarization, claim checking, structured extraction). For documents at a public URL, use extract_url instead (no base64 encoding needed).\nReturns: { pages: number, text: string }\nExample prompts:\n- \"Extract the text from this scanned contract so I can search it.\"\n- \"Give me the raw text from this PDF document.\"\n- \"OCR this image and return the text content.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "document_base64": { "description": "Base64-encoded PDF or image bytes (max ~15 MB). Example: \"JVBERi0xLjcNJeLjz9MNCj...\" (truncated PDF base64)", "type": "string" }, "mime_type": { "description": "MIME type of the document. Example: \"application/pdf\" for PDFs, \"image/png\" for PNG screenshots.", "enum": [ "application/pdf", "image/jpeg", "image/png", "image/webp" ], "type": "string" } }, "required": [ "document_base64", "mime_type" ], "type": "object" }, "name": "extract_text", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "pages": { "type": "number" }, "text": { "type": "string" } }, "required": [ "pages", "text" ], "type": "object" } }, { "description": "Fetch a public HTTPS URL and return extracted text and page metadata. Lean mode — no evidence bundle stored, no bundle_id returned. Use for raw text extraction from web pages and online documents. Use summarize_url for summaries, qa_url for Q&A, translate_url for translation, extract_text for base64 file uploads.\nReturns: { url, title, word_count, text, final_url (after redirects) }\nExample prompts:\n- \"Extract the text from https://example.com/report.pdf for me.\"\n- \"Get me the raw content of this web page: [URL].\"\n- \"Pull the text from this online article so I can analyze it.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "url": { "description": "Public HTTPS URL to fetch and extract. Example: \"https://example.com/report.pdf\" or \"https://blog.example.com/article\"", "format": "uri", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "extract_url", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "final_url": { "type": "string" }, "text": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" }, "word_count": { "type": "number" } }, "required": [ "url", "text" ], "type": "object" } }, { "description": "Retrieve metadata for an evidence bundle (ev_...) owned by your API key. Free — no credits consumed. Use for quick status/metadata lookups such as checking if a bundle is complete, finding its notarization status, or viewing retention/legal hold info. For deep cryptographic integrity verification (hash + signature + artifact checks), use verify_bundle instead.\nReturns: {\n bundle_id, source_url, mode, status: \"pending\"|\"complete\"|\"failed\",\n manifest_sha256, manifest_signature, signer_address,\n attestation_tx, attestation_at, eas_uid,\n parent_bundle_id, superseded_by,\n legal_hold: boolean, retention_until, created_at\n}\nExample prompts:\n- \"Show me the metadata for bundle ev_550e8400.\"\n- \"Check the status and notarization info of my evidence bundle.\"\n- \"Get me the details of bundle [ev_id] — is it complete?\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bundle_id": { "description": "Evidence bundle ID (ev_...) returned by extract or notarize_bundle. Example: \"ev_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" } }, "required": [ "bundle_id" ], "type": "object" }, "name": "get_bundle", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attestation_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "attestation_tx": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "bundle_id": { "type": "string" }, "created_at": { "type": "string" }, "eas_uid": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "legal_hold": { "type": "boolean" }, "manifest_sha256": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "manifest_signature": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "mode": { "type": "string" }, "parent_bundle_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "receipt": { "anyOf": [ { "additionalProperties": false, "properties": { "action": { "type": "string" }, "agent_id": { "type": "string" }, "algorithm": { "const": "secp256k1-eip191", "type": "string" }, "bundle_id": { "type": "string" }, "key_id": { "type": "string" }, "manifest_sha256": { "type": "string" }, "receipt_id": { "type": "string" }, "signature": { "type": "string" }, "signed_at": { "type": "string" }, "signer_address": { "type": "string" } }, "required": [ "receipt_id", "bundle_id", "agent_id", "action", "manifest_sha256", "signed_at", "signature", "signer_address", "key_id", "algorithm" ], "type": "object" }, { "type": "null" } ] }, "retention_until": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "signer_address": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "source_url": { "type": "string" }, "status": { "enum": [ "pending", "complete", "failed" ], "type": "string" }, "superseded_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "bundle_id", "source_url", "mode", "status", "manifest_sha256", "manifest_signature", "signer_address", "attestation_tx", "attestation_at", "eas_uid", "parent_bundle_id", "superseded_by", "legal_hold", "retention_until", "created_at", "receipt" ], "type": "object" } }, { "description": "Poll the status of an async job (extract, indexing, batch). Free — no credits consumed. Use after add_document_to_collection or async extract to check when processing completes. Poll this endpoint in a loop until status is \"complete\" or \"failed\". Completed jobs include the bundle_id or result_json in the response.\nJobs are created when you POST /v1/extract with a webhook, or when add_document_to_collection triggers async indexing.\nReturns: {\n id, type: \"extract\"|\"extract_batch\"|\"index_collection\",\n status: \"queued\"|\"processing\"|\"complete\"|\"failed\"|\"cancelled\",\n progress_pct: number (0–100), progress_message,\n bundle_id (when complete), result_json (when complete),\n error (when failed), created_at, completed_at\n}\nExample prompts:\n- \"Check the status of my indexing job job_550e8400.\"\n- \"Is my async extract job done yet?\"\n- \"Poll job [job_id] — what is the current progress?\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "job_id": { "description": "Job ID (job_...) returned by async extract or add_document_to_collection. Example: \"job_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "get_job_status", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundle_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "collection_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "completed_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "created_at": { "type": "string" }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "id": { "type": "string" }, "progress_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "progress_pct": { "type": "number" }, "result_json": { "anyOf": [ {}, { "type": "null" } ] }, "status": { "enum": [ "queued", "processing", "complete", "failed", "cancelled" ], "type": "string" }, "type": { "enum": [ "extract", "extract_batch", "index_collection" ], "type": "string" } }, "required": [ "id", "type", "status", "progress_pct", "progress_message", "bundle_id", "collection_id", "result_json", "error", "created_at", "completed_at" ], "type": "object" } }, { "description": "Get current credit balance and plan details for your API key. Free — no credits consumed. Check this before running credit-consuming operations (extract, summarize, etc.) to avoid QUOTA_EXCEEDED errors. Returns plan tier, billing period, and usage breakdown.\nReturns: {\n plan_id, billing_period (YYYY-MM),\n credits_used, credits_limit, credits_remaining,\n status: \"active\"|\"suspended\"\n}\nExample prompts:\n- \"How many credits do I have left this month?\"\n- \"Check my current quota and plan status.\"\n- \"Am I going to hit my credit limit soon?\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "get_quota", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "billing_period": { "type": "string" }, "credits_limit": { "type": "number" }, "credits_remaining": { "type": "number" }, "credits_used": { "type": "number" }, "plan_id": { "type": "string" }, "status": { "enum": [ "active", "suspended", "revoked" ], "type": "string" } }, "required": [ "plan_id", "billing_period", "credits_used", "credits_limit", "credits_remaining", "status" ], "type": "object" } }, { "description": "List all document collections owned by your API key. Free — no credits consumed. Use before search_collection or ask_collection when you need the collection ID. Supports pagination with limit and offset.\nReturns: { collections: [{ id, name, created_at }] }\nExample prompts:\n- \"List all my document collections.\"\n- \"Show me the collections I have created.\"\n- \"What collections do I own? List them.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "description": "Max collections to return (default 50, max 100). Example: 20", "type": "number" }, "offset": { "description": "Pagination offset (default 0). Example: 0", "type": "number" } }, "type": "object" }, "name": "list_collections", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "collections": { "items": { "additionalProperties": false, "properties": { "created_at": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "created_at" ], "type": "object" }, "type": "array" } }, "required": [ "collections" ], "type": "object" } }, { "description": "Notarize an evidence bundle on-chain by writing its manifest SHA-256 to the blockchain (Base/EVM). Creates a permanent, tamper-evident on-chain record of the document fingerprint. If the bundle is already notarized, returns the existing attestation immediately (idempotent). Use when you need an immutable on-chain timestamp proving a document existed at a point in time. For quick integrity checks without on-chain cost, use verify_bundle instead.\nPREREQUISITE: Bundle status must be \"complete\". Check status with get_bundle first.\nNOTE: Costs gas (ETH). The on-chain record is permanent and cannot be deleted even if the bundle is later purged.\nReturns: {\n bundle_id,\n attestation: { tx_hash, network, attested_at, key_id, eas_uid?, schema_uid? }\n}\nExample prompts:\n- \"Notarize bundle ev_550e8400 on-chain so I have a permanent record.\"\n- \"Put the fingerprint of my evidence bundle on the blockchain.\"\n- \"Create an on-chain timestamp for this document bundle.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bundle_id": { "description": "Evidence bundle ID (ev_...) to notarize. Bundle must have status \"complete\". Example: \"ev_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" } }, "required": [ "bundle_id" ], "type": "object" }, "name": "notarize_bundle", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attestation": { "additionalProperties": false, "properties": { "attested_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "eas_uid": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "key_id": { "type": "string" }, "network": { "type": "string" }, "schema_uid": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "tx_hash": { "type": "string" } }, "required": [ "tx_hash", "network", "attested_at" ], "type": "object" }, "bundle_id": { "type": "string" }, "receipt": { "anyOf": [ { "additionalProperties": false, "properties": { "action": { "type": "string" }, "agent_id": { "type": "string" }, "algorithm": { "const": "secp256k1-eip191", "type": "string" }, "bundle_id": { "type": "string" }, "key_id": { "type": "string" }, "manifest_sha256": { "type": "string" }, "receipt_id": { "type": "string" }, "signature": { "type": "string" }, "signed_at": { "type": "string" }, "signer_address": { "type": "string" } }, "required": [ "receipt_id", "bundle_id", "agent_id", "action", "manifest_sha256", "signed_at", "signature", "signer_address", "key_id", "algorithm" ], "type": "object" }, { "type": "null" } ] } }, "required": [ "bundle_id", "attestation", "receipt" ], "type": "object" } }, { "description": "Parse a receipt or invoice document into structured fields. Uses a quality AI model for accuracy. Use when you need to extract line items, totals, and merchant info from financial documents. For general document text, use extract_text instead.\nReturns: {\n invoice: { merchant, date (YYYY-MM-DD), line_items[], subtotal, tax, total },\n cited: { <field>: { value, confidence: \"high\"|\"medium\"|\"low\", citations: [{ quote, paragraphs[] }] } }\n}\nExample prompts:\n- \"Parse this invoice and give me the line items and total.\"\n- \"Extract the merchant, date, and amounts from this receipt.\"\n- \"Read this scanned invoice and return structured data.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "document_base64": { "description": "Base64-encoded PDF or image of the receipt/invoice (max ~15 MB). Example: \"JVBERi0xLjcNJeLjz9MNCj...\" (base64-encoded invoice PDF)", "type": "string" }, "mime_type": { "description": "MIME type of the document. Example: \"application/pdf\" for scanned invoice PDF, \"image/jpeg\" for a receipt photo.", "enum": [ "application/pdf", "image/jpeg", "image/png", "image/webp" ], "type": "string" } }, "required": [ "document_base64", "mime_type" ], "type": "object" }, "name": "parse_invoice", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "cited": { "additionalProperties": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "value": {} }, "required": [ "value", "confidence", "citations" ], "type": "object" }, "propertyNames": { "type": "string" }, "type": "object" }, "invoice": { "additionalProperties": false, "properties": { "date": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "line_items": { "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "total": { "type": "number" }, "unit_price": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "description", "quantity", "unit_price", "total" ], "type": "object" }, "type": "array" }, "merchant": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "subtotal": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "tax": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "total": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "merchant", "date", "line_items", "subtotal", "tax", "total" ], "type": "object" } }, "required": [ "invoice", "cited" ], "type": "object" } }, { "description": "Fetch a public HTTPS URL and answer a specific question about its content. Lean mode — no bundle stored. Use when you have a precise question about a web page. For a broad summary, use summarize_url. For multi-document Q&A, use ask_collection instead.\nReturns: { url, answer, answer_cited: { value, confidence, citations[] }, confidence: \"high\"|\"medium\"|\"low\", truncated }\nExample prompts:\n- \"What is the refund policy at https://docs.example.com/policy?\"\n- \"Look at [URL] and tell me what the delivery terms are.\"\n- \"Answer this question based on the content of [URL]: [question].\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Truncates fetched page content, not the answer. Example: 4000", "type": "number" }, "question": { "description": "Specific question to answer from the page content. Example: \"What is the refund policy?\"", "type": "string" }, "url": { "description": "Public HTTPS URL to fetch and question. Example: \"https://docs.example.com/policy\"", "format": "uri", "type": "string" } }, "required": [ "url", "question" ], "type": "object" }, "name": "qa_url", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "answer": { "type": "string" }, "answer_cited": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "value": {} }, "required": [ "value", "confidence", "citations" ], "type": "object" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "truncated": { "type": "boolean" }, "url": { "type": "string" } }, "required": [ "url", "truncated" ], "type": "object" } }, { "description": "Semantic (vector) search across documents in a collection. Returns ranked text chunks with relevance scores. Free — no credits consumed. Use when you need raw matching chunks from a collection. For a synthesized cited answer from the same context, use ask_collection instead.\nPREREQUISITE: Collection must be populated via add_document_to_collection and async indexing must complete (poll get_job_status) before results appear.\nReturns: { results: [{ bundle_id, chunk_id, text, score: number (0–1), title? }] }\nExample prompts:\n- \"Search my Q4 Contracts collection for mentions of liability cap.\"\n- \"Find the clause about data retention in my due diligence docs.\"\n- \"Search for revenue numbers across my quarterly reports.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "collection_id": { "description": "Collection ID (col_...) returned by create_collection. Example: \"col_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" }, "limit": { "description": "Max chunks to return (default 10, max 50). Example: 5", "type": "number" }, "query": { "description": "Natural language search query. Example: \"What were the revenue numbers for Q4?\"", "type": "string" } }, "required": [ "collection_id", "query" ], "type": "object" }, "name": "search_collection", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "results": { "items": { "additionalProperties": false, "properties": { "bundle_id": { "type": "string" }, "chunk_id": { "type": "string" }, "score": { "type": "number" }, "text": { "type": "string" } }, "required": [ "bundle_id", "chunk_id", "text", "score" ], "type": "object" }, "type": "array" } }, "required": [ "results" ], "type": "object" } }, { "description": "Summarize document text into a prose summary and key points with citations. Use after extract_text or extract_url when you need a condensed understanding of a long document. For single-sentence Q&A, use qa_url instead. For extracting specific fields, use extract_structured.\nTypical workflow: extract_text/extract_url → summarize_document.\nReturns: {\n summary: string,\n key_points: string[],\n summary_cited: { value, confidence, citations[] },\n key_points_cited: [{ text, citations[] }],\n truncated: boolean,\n strategy: \"full\"|\"truncated\"|\"chunked\"\n}\nExample prompts:\n- \"Summarize this financial report and give me the key points.\"\n- \"What are the main takeaways from this document?\"\n- \"Give me a concise summary of this 50-page report.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Default ~3000 tokens. Truncates input, not output. Example: 4000", "type": "number" }, "text": { "description": "Document text to summarize. Obtain via extract_text or extract_url. Example: \"The Q4 2025 financial report shows revenue growth of 23% year-over-year...\"", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "summarize_document", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "key_points": { "items": { "type": "string" }, "type": "array" }, "key_points_cited": { "items": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "text": { "type": "string" } }, "required": [ "text", "citations" ], "type": "object" }, "type": "array" }, "strategy": { "enum": [ "full", "truncated", "chunked" ], "type": "string" }, "summary": { "type": "string" }, "summary_cited": { "additionalProperties": false, "properties": { "citations": { "items": { "additionalProperties": false, "properties": { "artifact": { "type": "string" }, "char_end": { "type": "number" }, "char_start": { "type": "number" }, "chunk_id": { "type": "string" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "page": { "type": "number" }, "paragraphs": { "items": { "type": "number" }, "type": "array" }, "quote": { "type": "string" } }, "required": [ "quote", "paragraphs", "confidence" ], "type": "object" }, "type": "array" }, "confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "value": {} }, "required": [ "value", "confidence", "citations" ], "type": "object" }, "truncated": { "type": "boolean" } }, "required": [ "summary", "key_points", "summary_cited", "key_points_cited", "truncated", "strategy" ], "type": "object" } }, { "description": "Fetch a public HTTPS URL and return a prose summary with key points. Lean mode — no bundle stored. Use when you need a condensed understanding of a web page. For raw text, use extract_url. For asking a specific question about a page, use qa_url.\nReturns: { url, summary, key_points: string[], truncated: boolean, word_count }\nExample prompts:\n- \"Summarize https://en.wikipedia.org/wiki/Artificial_intelligence for me.\"\n- \"Give me the key points from this blog post: [URL].\"\n- \"What is this article about? Summarize [URL].\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Truncates fetched page content, not the output summary. Example: 4000", "type": "number" }, "url": { "description": "Public HTTPS URL to fetch and summarize. Example: \"https://en.wikipedia.org/wiki/Artificial_intelligence\"", "format": "uri", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "summarize_url", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "key_points": { "items": { "type": "string" }, "type": "array" }, "summary": { "type": "string" }, "truncated": { "type": "boolean" }, "url": { "type": "string" }, "word_count": { "type": "number" } }, "required": [ "url", "truncated" ], "type": "object" } }, { "description": "Fetch a public HTTPS URL and return its content translated into a target language. Lean mode — no bundle stored. Use when you need to understand web content in a different language. For extracting raw untranslated text, use extract_url instead.\nReturns: { url, translated_text, target_lang, truncated }\nExample prompts:\n- \"Translate https://example.de/artikel into English for me.\"\n- \"Translate this German article into Spanish: [URL].\"\n- \"Fetch [URL] and give me the French translation.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "max_tokens": { "description": "Input length cap (1 token ≈ 4 chars). Truncates fetched page content before translation. Example: 4000", "type": "number" }, "target_lang": { "description": "ISO 639-1 language code for the target language. Example: \"es\" for Spanish, \"fr\" for French, \"de\" for German, \"ja\" for Japanese, \"zh\" for Chinese", "type": "string" }, "url": { "description": "Public HTTPS URL to fetch and translate. Example: \"https://example.de/artikel\"", "format": "uri", "type": "string" } }, "required": [ "url", "target_lang" ], "type": "object" }, "name": "translate_url", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "target_lang": { "type": "string" }, "translated_text": { "type": "string" }, "truncated": { "type": "boolean" }, "url": { "type": "string" } }, "required": [ "url", "target_lang", "truncated" ], "type": "object" } }, { "description": "Independently verify a signed action receipt (rcpt_...) returned by get_bundle, verify_bundle, notarize_bundle, or add_document_to_collection. Free — no credits consumed. Proves both that the receipt signature is authentic AND that the manifest_sha256 it was bound to still matches the bundle's current manifest — i.e. that the action was not performed against a stale or since-superseded document. Use for third-party audit of an agent's prior actions.\nReturns: {\n receipt_id, valid: boolean,\n signature_valid: boolean, manifest_matches_current: boolean,\n bundle_id, agent_id, action, manifest_sha256,\n signer_address, signed_at, tampered: string[]\n}\nExample prompts:\n- \"Verify action receipt rcpt_550e8400 is authentic and still current.\"\n- \"Was this receipt signed against the real document, or a stale copy?\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "receipt_id": { "description": "Action receipt ID (rcpt_...) returned in the receipt field of another tool's response. Example: \"rcpt_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" } }, "required": [ "receipt_id" ], "type": "object" }, "name": "verify_action_receipt", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "action": { "type": "string" }, "agent_id": { "type": "string" }, "bundle_id": { "type": "string" }, "manifest_matches_current": { "type": "boolean" }, "manifest_sha256": { "type": "string" }, "receipt_id": { "type": "string" }, "signature_valid": { "type": "boolean" }, "signed_at": { "type": "string" }, "signer_address": { "type": "string" }, "tampered": { "items": { "type": "string" }, "type": "array" }, "valid": { "type": "boolean" } }, "required": [ "receipt_id", "valid", "signature_valid", "manifest_matches_current", "bundle_id", "agent_id", "action", "manifest_sha256", "signer_address", "signed_at", "tampered" ], "type": "object" } }, { "description": "Verify the cryptographic integrity of an evidence bundle (ev_...) owned by your API key. Checks manifest hash, EIP-191 signature, and R2 artifact hashes. Free — no credits consumed. Use when you need to confirm a bundle has not been tampered with. For quick metadata lookups (without full crypto verification), use get_bundle instead.\nReturns: {\n valid: boolean,\n bundle_id, manifest_sha256,\n checks: { status, manifest_hash, signature, artifacts: [{ name, ok }] },\n tampered: string[],\n signer_address: string|null,\n attestation_tx: string|null,\n url: string, captured_at: string\n}\nExample prompts:\n- \"Verify the cryptographic integrity of bundle ev_550e8400.\"\n- \"Is this evidence bundle still valid and untampered?\"\n- \"Deep-check the manifest hash and signature of my bundle.\"", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bundle_id": { "description": "Evidence bundle ID (ev_...) returned by extract or notarize. Example: \"ev_550e8400-e29b-41d4-a716-446655440000\"", "type": "string" } }, "required": [ "bundle_id" ], "type": "object" }, "name": "verify_bundle", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attestation_tx": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "bundle_id": { "type": "string" }, "captured_at": { "type": "string" }, "checks": { "additionalProperties": false, "properties": { "artifacts": { "items": { "additionalProperties": false, "properties": { "actual": { "type": "string" }, "expected": { "type": "string" }, "name": { "type": "string" }, "ok": { "type": "boolean" } }, "required": [ "name", "ok" ], "type": "object" }, "type": "array" }, "attestation": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "manifest_hash": { "type": "boolean" }, "signature": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "status": { "type": "boolean" } }, "required": [ "status", "manifest_hash", "signature", "artifacts", "attestation" ], "type": "object" }, "manifest_sha256": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "receipt": { "anyOf": [ { "additionalProperties": false, "properties": { "action": { "type": "string" }, "agent_id": { "type": "string" }, "algorithm": { "const": "secp256k1-eip191", "type": "string" }, "bundle_id": { "type": "string" }, "key_id": { "type": "string" }, "manifest_sha256": { "type": "string" }, "receipt_id": { "type": "string" }, "signature": { "type": "string" }, "signed_at": { "type": "string" }, "signer_address": { "type": "string" } }, "required": [ "receipt_id", "bundle_id", "agent_id", "action", "manifest_sha256", "signed_at", "signature", "signer_address", "key_id", "algorithm" ], "type": "object" }, { "type": "null" } ] }, "signer_address": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "tampered": { "items": { "type": "string" }, "type": "array" }, "url": { "type": "string" }, "valid": { "type": "boolean" } }, "required": [ "bundle_id", "valid", "manifest_sha256", "checks", "tampered", "receipt" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:3ebad60b444e6e91baa5ef085266e40209c8235627c0cc604fdb3fed87776571 | sha256sum