{"openapi":"3.1.0","info":{"title":"Sensible (BYOK) API","version":"0.1.0","description":"Sensible (BYOK) lets an AI assistant read your own Sensible data through the Sensible API with a key you supply (Sensible API key). Read-only: 11 tools (list_document_types, get_document_type, list_configurations, get_configuration, list_configuration_versions, list_reference_documents, get_reference_document, list_extractions, get_extraction_statistics, list_email_processors,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sensible.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sensible/docs"},"termsOfService":"https://connectorbay.com/byok-sensible/terms"},"servers":[{"url":"https://byok-sensible.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sensible/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_document_types":{"post":{"operationId":"list_document_types","summary":"List the document types in the account with id, name, creation time and settings such as OCR engine and fingerprint mode","description":"List the document types in the account with id, name, creation time and settings such as OCR engine and fingerprint mode. Use for \"Which document types are defined in my Sensible account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_document_typesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_document_type":{"post":{"operationId":"get_document_type","summary":"Get one document type's settings: OCR engine and level, fingerprint mode, description and review triggers. Use for \"How ","description":"Get one document type's settings: OCR engine and level, fingerprint mode, description and review triggers. Use for \"How is the Sensible document type 1a2b3c4d-5e6f-7890-a1b2-c3d4e5f67890 configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"}},"required":["type_id"],"title":"get_document_typeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_configurations":{"post":{"operationId":"list_configurations","summary":"List the extraction configurations of a document type with creation time and their versions (version id, environments, d","description":"List the extraction configurations of a document type with creation time and their versions (version id, environments, draft flag, note). Use for \"Which extraction configurations exist in Sensible document type 1a2b3c4d-5e6f-7890-a1b2-c3d4e5f67890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"}},"required":["type_id"],"title":"list_configurationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_configuration":{"post":{"operationId":"get_configuration","summary":"Get one extraction configuration (its stringified definition), content type and version list. Use for \"Show the Sensible","description":"Get one extraction configuration (its stringified definition), content type and version list. Use for \"Show the Sensible configuration invoice_config\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"},"config_name":{"description":"Configuration name inside the document type, for example 'invoice_config'.","maxLength":200,"title":"Config Name","type":"string"}},"required":["type_id","config_name"],"title":"get_configurationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_configuration_versions":{"post":{"operationId":"list_configuration_versions","summary":"List the versions of one configuration with environments where each is published, draft flag, note and publisher. Use fo","description":"List the versions of one configuration with environments where each is published, draft flag, note and publisher. Use for \"Which version of Sensible configuration invoice_config is published to production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"},"config_name":{"description":"Configuration name inside the document type, for example 'invoice_config'.","maxLength":200,"title":"Config Name","type":"string"}},"required":["type_id","config_name"],"title":"list_configuration_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_reference_documents":{"post":{"operationId":"list_reference_documents","summary":"List the reference (golden) documents attached to a document type with name, creation time and associated configuration ","description":"List the reference (golden) documents attached to a document type with name, creation time and associated configuration (download links are not returned). Use for \"Which reference documents does Sensible document type 1a2b3c4d-5e6f-7890-a1b2-c3d4e5f67890 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"}},"required":["type_id"],"title":"list_reference_documentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_reference_document":{"post":{"operationId":"get_reference_document","summary":"Get metadata of one reference document: id, name, creation time, associated configuration and processing error (download","description":"Get metadata of one reference document: id, name, creation time, associated configuration and processing error (download links are not returned). Use for \"Show the Sensible reference document invoice_sample\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"description":"Document type id, as returned by list_document_types.","maxLength":200,"title":"Type Id","type":"string"},"document_name":{"description":"Reference document name, for example 'invoice_sample'.","maxLength":200,"title":"Document Name","type":"string"}},"required":["type_id","document_name"],"title":"get_reference_documentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_extractions":{"post":{"operationId":"list_extractions","summary":"List past extractions with status, creation and completion time, coverage score, document type, configuration and review","description":"List past extractions with status, creation and completion time, coverage score, document type, configuration and review status (document names and results are not returned). Use for \"Did any Sensible extractions fail this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only extractions created at or after this ISO 8601 time, for example 2026-10-01T00:00:00Z.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only extractions created at or before this ISO 8601 time.","title":"End Date"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Items per page (default 20).","title":"Limit"},"continuation_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opaque token from the previous response, to fetch the next page.","title":"Continuation Token"},"statuses":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses to include: WAITING, PROCESSING, FAILED, COMPLETE.","title":"Statuses"},"environments":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated environments: production, development.","title":"Environments"},"document_type_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated document type ids to include.","title":"Document Type Ids"},"configuration_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated configuration names to include.","title":"Configuration Ids"},"review_statuses":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated review statuses: APPROVED, NEEDS_REVIEW, REJECTED.","title":"Review Statuses"}},"title":"list_extractionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_extraction_statistics":{"post":{"operationId":"get_extraction_statistics","summary":"Get daily extraction coverage histograms per configuration and environment for a date range. Use for \"How good was Sensi","description":"Get daily extraction coverage histograms per configuration and environment for a date range. Use for \"How good was Sensible's extraction coverage per configuration last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day to include, for example 2026-10-01.","maxLength":200,"title":"Start Date","type":"string"},"end_date":{"description":"Last day to include, for example 2026-10-31.","maxLength":200,"title":"End Date","type":"string"},"environments":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated environments, for example production (all when omitted).","title":"Environments"}},"required":["start_date","end_date"],"title":"get_extraction_statisticsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_email_processors":{"post":{"operationId":"list_email_processors","summary":"List the email processors with creation time and how the email body and attachments are routed to document types (webhoo","description":"List the email processors with creation time and how the email body and attachments are routed to document types (webhook URLs are not returned). Use for \"Which Sensible email processors do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_email_processorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_email_processor":{"post":{"operationId":"get_email_processor","summary":"Get one email processor's routing of body and attachments to document types (webhook URLs are not returned). Use for \"Ho","description":"Get one email processor's routing of body and attachments to document types (webhook URLs are not returned). Use for \"How does the Sensible email processor vendor_invoices route attachments\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Email processor name, for example 'vendor_invoices'.","maxLength":200,"title":"Name","type":"string"}},"required":["name"],"title":"get_email_processorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}