DocFig MCP
An official MCP server by DocFig that allows AI assistants to convert bank statement PDFs into checked JSON transactions, combine multiple statements, and validate transaction tables for balance errors.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.docfig.com/mcpWhat you can do with it
- Convert bank statement PDFs to checked JSON transactions
- Combine multiple statements to find missing months and duplicates
- Check transaction tables for balance errors without uploading files
- Retrieve remaining API usage pages for the current month
Source and maintenance
Protocol and capabilities
- Server
- docfig 0.2.0
- MCP protocol
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
check_transactions — Check a transactions table
Check a bank or credit card statement's transactions table for errors. Free and offline: no API key, nothing is uploaded. Walks the running balance row by row and reports rows where the balance does not follow, swapped debit and credit columns, sign errors, duplicated or missing rows, dates out of order, and totals that miss the opening or closing balance, each with a likely fix. Give the table as csv_text (CSV or TSV with a header row) or as rows (first row is the header). Same result as `docfig check --json`.
{
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The table as rows of cells, first row is the header, e.g. [[\"Date\",\"Description\",\"Amount\",\"Balance\"], ...]. Cells are text; numbers and null are accepted too."
},
"csv_text": {
"type": "string",
"description": "The table as CSV or TSV text, header row first."
},
"filename": {
"type": "string",
"description": "Optional name shown in the report."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter (default: detected)."
},
"date_format": {
"enum": [
"DMY",
"MDY"
],
"type": "string",
"description": "How to read dates like 01/02/2026 (default: detected)."
},
"statement_type": {
"enum": [
"bank",
"card"
],
"type": "string",
"default": "bank",
"description": "card: the balance is the amount owed."
},
"closing_balance": {
"type": "string",
"description": "Closing balance, to check the totals."
},
"opening_balance": {
"type": "string",
"description": "Opening balance, to check the totals."
}
}
}{
"title": "Check a transactions table",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}convert_statement — Convert a bank statement
Convert a bank or credit card statement (PDF, scanned PDF, or a JPG, PNG or HEIC photo) into transactions, with every row checked against the balances. Give file_url or file_base64. Returns the bank, period, totals, check status, flagged rows, the first transactions and Excel and CSV download links that work for one hour. Uses the user's DocFig API key and their monthly pages (free key: 100 pages a month at https://docfig.com/api). Account numbers are masked; nothing is stored, results are deleted after one hour.
{
"type": "object",
"properties": {
"file_url": {
"type": "string",
"description": "Direct https download link to the statement (PDF, JPG, PNG or HEIC, up to 20 MB). Must be publicly reachable."
},
"filename": {
"type": "string",
"description": "Optional file name, e.g. march.pdf."
},
"password": {
"type": "string",
"description": "Password for a locked PDF. Used once in memory, never stored or logged."
},
"file_base64": {
"type": "string",
"description": "The file's bytes, base64-encoded (up to 20 MB decoded)."
},
"statement_id": {
"type": "string",
"description": "Instead of a file: the statement_id of an earlier call that was still converting, to fetch its result."
},
"wait_seconds": {
"type": "integer",
"default": 45,
"maximum": 600,
"minimum": 0,
"description": "How long to wait for the result before returning the statement_id to check again. Default 45."
},
"max_transactions": {
"type": "integer",
"default": 25,
"maximum": 500,
"minimum": 0,
"description": "How many transactions to include (the rest are in the downloads). Default 25."
}
}
}{
"title": "Convert a bank statement",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}combine_statements — Combine several statements
Convert several statements (or reuse statement_ids from the last hour) and combine them into one set of accounts: finds missing months (gaps), overlapping periods, duplicated transactions (kept once) and balances that do not carry over. Returns the accounts, problems, counts and links to one combined Excel or CSV file (valid one hour). Uses the user's DocFig API key.
{
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file_url": {
"type": "string",
"description": "Direct https download link to the statement (PDF, JPG, PNG or HEIC, up to 20 MB). Must be publicly reachable."
},
"filename": {
"type": "string",
"description": "Optional file name, e.g. march.pdf."
},
"password": {
"type": "string",
"description": "Password for a locked PDF. Used once in memory, never stored or logged."
},
"file_base64": {
"type": "string",
"description": "The file's bytes, base64-encoded (up to 20 MB decoded)."
}
}
},
"maxItems": 12,
"description": "Statements to convert and combine, each with file_url or file_base64."
},
"wait_seconds": {
"type": "integer",
"default": 90,
"maximum": 600,
"minimum": 0,
"description": "How long to wait for all conversions. Default 90."
},
"statement_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "statement_id values of statements converted in the last hour (from convert_statement or an earlier combine_statements call)."
}
}
}{
"title": "Combine several statements",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}usage — Pages left this month
Pages used and left this month for the DocFig API key, and when they reset.
{
"type": "object",
"properties": {}
}{
"title": "Pages left this month",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 945 ms
- 95th percentile latency
- 945 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 945 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http docfig-mcp https://mcp.docfig.com/mcpCodex
codex mcp add docfig-mcp --url https://mcp.docfig.com/mcpCursor
{
"mcpServers": {
"docfig-mcp": {
"url": "https://mcp.docfig.com/mcp"
}
}
}Cline
{
"mcpServers": {
"docfig-mcp": {
"type": "streamableHttp",
"url": "https://mcp.docfig.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"docfig-mcp": {
"type": "http",
"url": "https://mcp.docfig.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http docfig-mcp https://mcp.docfig.com/mcpClaude Desktop
{
"mcpServers": {
"docfig-mcp": {
"url": "https://mcp.docfig.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"docfig-mcp": {
"serverUrl": "https://mcp.docfig.com/mcp"
}
}
}Let your agent find its tools
Find servers like DocFig MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run DocFig MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.