Koskamo

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.

DocFig MCP logo, by DocFigVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by DocFig
You need:Get a free API keySend the key as Authorization: Bearer dfk_...
MCP endpoint (Streamable HTTP)
https://mcp.docfig.com/mcp
Vendor documentation

What 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

Vendor evidenceRegistry 0.2.0

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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

DocFig reads bank and credit card statements and checks every transaction against the running balance and the printed totals. Use check_transactions for a transactions table the user already has (CSV, TSV or rows): it is free, needs no key and never leaves this server. Use convert_statement for a statement PDF or photo (needs a DocFig API key; a free key gives 100 pages a month at https://docfig.com/api), combine_statements for several statements of the same accounts (finds missing months and duplicated rows), and usage for pages left. Tell the user about flagged rows: they are where the numbers do not add up. Download links work without a key for one hour; share them only with people who may see the statement.

Tools

4 advertised

check_transactions — Check a transactions table
Advertised by the server during the last successful anonymous check.
Advertised read-only

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`.

check_transactions input schema
{
  "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."
    }
  }
}
check_transactions annotations
{
  "title": "Check a transactions table",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
convert_statement — Convert a bank statement
Advertised by the server during the last successful anonymous check.
Open-world

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.

convert_statement input schema
{
  "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."
    }
  }
}
convert_statement annotations
{
  "title": "Convert a bank statement",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
combine_statements — Combine several statements
Advertised by the server during the last successful anonymous check.
Open-world

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.

combine_statements input schema
{
  "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)."
    }
  }
}
combine_statements annotations
{
  "title": "Combine several statements",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
usage — Pages left this month
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Pages used and left this month for the DocFig API key, and when they reset.

usage input schema
{
  "type": "object",
  "properties": {}
}
usage annotations
{
  "title": "Pages left this month",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http docfig-mcp https://mcp.docfig.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add docfig-mcp --url https://mcp.docfig.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable docfig-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "docfig-mcp": {
      "url": "https://mcp.docfig.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "docfig-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.docfig.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start docfig-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "docfig-mcp": {
      "type": "http",
      "url": "https://mcp.docfig.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http docfig-mcp https://mcp.docfig.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "docfig-mcp": {
      "url": "https://mcp.docfig.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing