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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3ebad60b444e6e91baa5ef085266e40209c8235627c0cc604fdb3fed87776571 | sha256sum