{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "pdf-tools",
    "endpoint": "https://mcp.mainbook.ai/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mainbook-bank-statement-converter.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/mainbook-bank-statement-converter.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/mainbook-bank-statement-converter.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 5168,
        "counts": {
          "error": 0,
          "note": 1,
          "warn": 2
        },
        "findings": [
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "convert_bank_statement",
            "message": "the definition is about 2,289 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "get_conversion",
            "message": "the definition is about 1,949 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC29",
            "severity": "note",
            "message": "about 928 tokens (17% of the definitions) are titles that repeat property or function names",
            "fix": "Strip \"title\" keys that only restate a name before listing tools."
          }
        ]
      },
      "checkedAt": "2026-10-09T21:41:17Z",
      "count": 4,
      "schemaTokens": 5168,
      "status": "ok",
      "tools": [
        {
          "name": "convert_bank_statement",
          "title": "Convert bank statement",
          "description": "Convert one PDF bank statement through the complete MainBook workflow: create a job, upload, start, poll, and return structured data. This creates a job and spends page credits; it is not read-only.",
          "inputSchema": {
            "properties": {
              "file_path": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Path to a PDF on the MCP server machine. This field is only available over stdio and is rejected in HTTP mode; remote clients must use file_url. The path must be inside the allowed folders, which default to Downloads, Desktop, and Documents. Exactly one of file_path and file_url is required.",
                "title": "File Path"
              },
              "file_url": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Public HTTPS URL of a PDF for remote mode. Redirects and non-public network addresses are rejected. Exactly one source is required.",
                "title": "File Url"
              },
              "idempotency_key": {
                "anyOf": [
                  {
                    "maxLength": 255,
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional value forwarded verbatim in the Idempotency-Key REST header.",
                "title": "Idempotency Key"
              },
              "output_path": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional absolute result file or existing folder on the MCP server machine. Only available over stdio and only inside the allowed folders. The file extension is corrected to match result_type.",
                "title": "Output Path"
              },
              "result_type": {
                "default": "json",
                "description": "JSON is returned inline. Over stdio, XLSX or CSV is written to an allowed local folder and the full path is returned. HTTP mode returns safe download instructions. Binary bytes never enter model context.",
                "enum": [
                  "json",
                  "xlsx",
                  "csv"
                ],
                "title": "Result Type",
                "type": "string"
              },
              "timeout_seconds": {
                "default": 50,
                "description": "Internal polling budget from 30 to 900 seconds. Timeout leaves the job running and returns its job_id for get_conversion. The default stays under the 60-second request timeout most MCP clients enforce; a client that gives up first discards the job_id and the conversion looks lost.",
                "maximum": 900,
                "minimum": 30,
                "title": "Timeout Seconds",
                "type": "integer"
              }
            },
            "title": "convert_bank_statementArguments",
            "type": "object"
          },
          "outputSchema": {
            "$defs": {
              "ConversionData": {
                "description": "Exact top-level JSON shape produced by the MainBook exporter.",
                "properties": {
                  "document": {
                    "$ref": "#/$defs/ConversionDocument"
                  },
                  "has_warnings": {
                    "title": "Has Warnings",
                    "type": "boolean"
                  },
                  "transactions": {
                    "items": {
                      "$ref": "#/$defs/ConversionTransaction"
                    },
                    "title": "Transactions",
                    "type": "array"
                  }
                },
                "required": [
                  "document",
                  "transactions",
                  "has_warnings"
                ],
                "title": "ConversionData",
                "type": "object"
              },
              "ConversionDocument": {
                "description": "Document summary emitted by MainBook's JSON exporter.",
                "properties": {
                  "account_address": {
                    "title": "Account Address",
                    "type": "string"
                  },
                  "account_holder": {
                    "title": "Account Holder",
                    "type": "string"
                  },
                  "account_number_masked": {
                    "title": "Account Number Masked",
                    "type": "string"
                  },
                  "account_type": {
                    "title": "Account Type",
                    "type": "string"
                  },
                  "available_credit_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Available Credit Cents"
                  },
                  "bank_name": {
                    "title": "Bank Name",
                    "type": "string"
                  },
                  "billing_cycle_length_days": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Billing Cycle Length Days"
                  },
                  "credit_limit_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Credit Limit Cents"
                  },
                  "currency": {
                    "title": "Currency",
                    "type": "string"
                  },
                  "display_name": {
                    "title": "Display Name",
                    "type": "string"
                  },
                  "ending_balance_cents": {
                    "title": "Ending Balance Cents",
                    "type": "integer"
                  },
                  "id": {
                    "title": "Id",
                    "type": "string"
                  },
                  "kind": {
                    "title": "Kind",
                    "type": "string"
                  },
                  "net_credits_cents": {
                    "title": "Net Credits Cents",
                    "type": "integer"
                  },
                  "net_debits_cents": {
                    "title": "Net Debits Cents",
                    "type": "integer"
                  },
                  "new_balance_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "New Balance Cents"
                  },
                  "pages": {
                    "anyOf": [
                      {
                        "minimum": 1,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Pages"
                  },
                  "payment_due_amount_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Payment Due Amount Cents"
                  },
                  "payment_due_date": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Payment Due Date"
                  },
                  "period_end": {
                    "title": "Period End",
                    "type": "string"
                  },
                  "period_start": {
                    "title": "Period Start",
                    "type": "string"
                  },
                  "previous_balance_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Previous Balance Cents"
                  },
                  "starting_balance_cents": {
                    "title": "Starting Balance Cents",
                    "type": "integer"
                  },
                  "transactions_count": {
                    "minimum": 0,
                    "title": "Transactions Count",
                    "type": "integer"
                  }
                },
                "required": [
                  "id",
                  "display_name",
                  "bank_name",
                  "account_holder",
                  "account_address",
                  "account_number_masked",
                  "account_type",
                  "kind",
                  "currency",
                  "period_start",
                  "period_end",
                  "billing_cycle_length_days",
                  "starting_balance_cents",
                  "ending_balance_cents",
                  "transactions_count",
                  "net_credits_cents",
                  "net_debits_cents",
                  "credit_limit_cents",
                  "available_credit_cents",
                  "previous_balance_cents",
                  "new_balance_cents",
                  "payment_due_amount_cents",
                  "payment_due_date"
                ],
                "title": "ConversionDocument",
                "type": "object"
              },
              "ConversionTransaction": {
                "description": "One exported transaction row, with integer-cent monetary fields.",
                "properties": {
                  "amount_cents": {
                    "title": "Amount Cents",
                    "type": "integer"
                  },
                  "balance_after_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Balance After Cents"
                  },
                  "cardholder": {
                    "default": "",
                    "title": "Cardholder",
                    "type": "string"
                  },
                  "cardholder_card_masked": {
                    "default": "",
                    "title": "Cardholder Card Masked",
                    "type": "string"
                  },
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Currency"
                  },
                  "date": {
                    "title": "Date",
                    "type": "string"
                  },
                  "description": {
                    "title": "Description",
                    "type": "string"
                  },
                  "line_index": {
                    "minimum": 0,
                    "title": "Line Index",
                    "type": "integer"
                  },
                  "page": {
                    "minimum": 1,
                    "title": "Page",
                    "type": "integer"
                  },
                  "row": {
                    "minimum": 1,
                    "title": "Row",
                    "type": "integer"
                  },
                  "source_file": {
                    "title": "Source File",
                    "type": "string"
                  },
                  "transaction_type": {
                    "enum": [
                      "credit",
                      "debit"
                    ],
                    "title": "Transaction Type",
                    "type": "string"
                  },
                  "validation_status": {
                    "enum": [
                      "valid",
                      "system_mismatch",
                      "user_edited_mismatch",
                      "user_reviewed",
                      "user_accepted"
                    ],
                    "title": "Validation Status",
                    "type": "string"
                  },
                  "warning_flags": {
                    "items": {
                      "type": "string"
                    },
                    "title": "Warning Flags",
                    "type": "array"
                  }
                },
                "required": [
                  "row",
                  "source_file",
                  "page",
                  "line_index",
                  "date",
                  "description",
                  "amount_cents",
                  "transaction_type",
                  "balance_after_cents",
                  "currency",
                  "validation_status",
                  "warning_flags"
                ],
                "title": "ConversionTransaction",
                "type": "object"
              },
              "DownloadInstruction": {
                "additionalProperties": false,
                "properties": {
                  "expires_at": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Expires At"
                  },
                  "instruction": {
                    "title": "Instruction",
                    "type": "string"
                  },
                  "job_id": {
                    "title": "Job Id",
                    "type": "string"
                  },
                  "rest_endpoint": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Rest Endpoint"
                  },
                  "result_type": {
                    "enum": [
                      "xlsx",
                      "csv"
                    ],
                    "title": "Result Type",
                    "type": "string"
                  },
                  "url": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Url"
                  }
                },
                "required": [
                  "job_id",
                  "result_type",
                  "instruction"
                ],
                "title": "DownloadInstruction",
                "type": "object"
              },
              "JobValidation": {
                "properties": {
                  "mismatched_rows": {
                    "description": "Number of transaction rows that remain mathematically mismatched.",
                    "minimum": 0,
                    "title": "Mismatched Rows",
                    "type": "integer"
                  },
                  "passed": {
                    "description": "Whether MainBook's applicable statement-math checks passed.",
                    "title": "Passed",
                    "type": "boolean"
                  },
                  "reconcilable": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether statement math can be reconciled; null means the document kind has no running-balance reconciliation, such as many credit-card statements.",
                    "title": "Reconcilable"
                  }
                },
                "required": [
                  "reconcilable",
                  "passed",
                  "mismatched_rows"
                ],
                "title": "JobValidation",
                "type": "object"
              },
              "SavedFile": {
                "additionalProperties": false,
                "properties": {
                  "path": {
                    "title": "Path",
                    "type": "string"
                  },
                  "reason": {
                    "title": "Reason",
                    "type": "string"
                  }
                },
                "required": [
                  "path",
                  "reason"
                ],
                "title": "SavedFile",
                "type": "object"
              }
            },
            "additionalProperties": false,
            "description": "Structured result shared by convert_bank_statement and get_conversion.",
            "properties": {
              "data": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/ConversionData"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "download": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/DownloadInstruction"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "job_id": {
                "title": "Job Id",
                "type": "string"
              },
              "message": {
                "title": "Message",
                "type": "string"
              },
              "pages": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Pages"
              },
              "result_type": {
                "enum": [
                  "json",
                  "xlsx",
                  "csv"
                ],
                "title": "Result Type",
                "type": "string"
              },
              "saved_file": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/SavedFile"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "state": {
                "anyOf": [
                  {
                    "enum": [
                      "awaiting_upload",
                      "queued",
                      "processing",
                      "succeeded",
                      "succeeded_with_warnings",
                      "insufficient_credits",
                      "failed",
                      "expired"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "State"
              },
              "timed_out": {
                "default": false,
                "title": "Timed Out",
                "type": "boolean"
              },
              "validation": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/JobValidation"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "job_id",
              "state",
              "pages",
              "validation",
              "result_type",
              "message"
            ],
            "title": "ConversionOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_balance",
          "title": "Get page-credit balance",
          "description": "Return total, reserved, and available MainBook credits. Every value is measured in PDF pages.",
          "inputSchema": {
            "properties": {},
            "title": "get_balanceArguments",
            "type": "object"
          },
          "outputSchema": {
            "additionalProperties": false,
            "properties": {
              "available": {
                "title": "Available",
                "type": "integer"
              },
              "balance": {
                "title": "Balance",
                "type": "integer"
              },
              "explanation": {
                "title": "Explanation",
                "type": "string"
              },
              "reserved": {
                "minimum": 0,
                "title": "Reserved",
                "type": "integer"
              },
              "units": {
                "const": "pages",
                "default": "pages",
                "title": "Units",
                "type": "string"
              }
            },
            "required": [
              "balance",
              "reserved",
              "available",
              "explanation"
            ],
            "title": "BalanceOutput",
            "type": "object"
          },
          "annotations": {
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "list_conversions",
          "title": "List conversions",
          "description": "List one cursor page of conversion jobs visible to the MainBook account. Pass the returned next_cursor to continue.",
          "inputSchema": {
            "properties": {
              "cursor": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Opaque next_cursor from the previous page.",
                "title": "Cursor"
              },
              "limit": {
                "default": 25,
                "description": "Jobs on this page, from 1 to 100.",
                "maximum": 100,
                "minimum": 1,
                "title": "Limit",
                "type": "integer"
              }
            },
            "title": "list_conversionsArguments",
            "type": "object"
          },
          "outputSchema": {
            "$defs": {
              "Job": {
                "properties": {
                  "created_at": {
                    "title": "Created At",
                    "type": "string"
                  },
                  "credits_reserved": {
                    "anyOf": [
                      {
                        "minimum": 1,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Credits Reserved"
                  },
                  "error": {
                    "anyOf": [
                      {
                        "$ref": "#/$defs/JobError"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "file_format": {
                    "const": "pdf",
                    "title": "File Format",
                    "type": "string"
                  },
                  "filename": {
                    "title": "Filename",
                    "type": "string"
                  },
                  "job_id": {
                    "title": "Job Id",
                    "type": "string"
                  },
                  "pages": {
                    "minimum": 1,
                    "title": "Pages",
                    "type": "integer"
                  },
                  "source": {
                    "enum": [
                      "web",
                      "api"
                    ],
                    "title": "Source",
                    "type": "string"
                  },
                  "state": {
                    "enum": [
                      "awaiting_upload",
                      "queued",
                      "processing",
                      "succeeded",
                      "succeeded_with_warnings",
                      "insufficient_credits",
                      "failed",
                      "expired"
                    ],
                    "title": "State",
                    "type": "string"
                  },
                  "updated_at": {
                    "title": "Updated At",
                    "type": "string"
                  },
                  "validation": {
                    "anyOf": [
                      {
                        "$ref": "#/$defs/JobValidation"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "job_id",
                  "state",
                  "filename",
                  "file_format",
                  "pages",
                  "source",
                  "created_at",
                  "updated_at",
                  "validation",
                  "error"
                ],
                "title": "Job",
                "type": "object"
              },
              "JobError": {
                "properties": {
                  "category": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Category"
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Reason"
                  }
                },
                "required": [
                  "category",
                  "reason"
                ],
                "title": "JobError",
                "type": "object"
              },
              "JobValidation": {
                "properties": {
                  "mismatched_rows": {
                    "description": "Number of transaction rows that remain mathematically mismatched.",
                    "minimum": 0,
                    "title": "Mismatched Rows",
                    "type": "integer"
                  },
                  "passed": {
                    "description": "Whether MainBook's applicable statement-math checks passed.",
                    "title": "Passed",
                    "type": "boolean"
                  },
                  "reconcilable": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether statement math can be reconciled; null means the document kind has no running-balance reconciliation, such as many credit-card statements.",
                    "title": "Reconcilable"
                  }
                },
                "required": [
                  "reconcilable",
                  "passed",
                  "mismatched_rows"
                ],
                "title": "JobValidation",
                "type": "object"
              }
            },
            "additionalProperties": false,
            "properties": {
              "conversions": {
                "items": {
                  "$ref": "#/$defs/Job"
                },
                "title": "Conversions",
                "type": "array"
              },
              "count": {
                "minimum": 0,
                "title": "Count",
                "type": "integer"
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Next Cursor"
              },
              "units": {
                "const": "pages",
                "default": "pages",
                "title": "Units",
                "type": "string"
              }
            },
            "required": [
              "conversions",
              "next_cursor",
              "count"
            ],
            "title": "ListConversionsOutput",
            "type": "object"
          },
          "annotations": {
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_conversion",
          "title": "Get conversion",
          "description": "Get the current state of one MainBook conversion. When successful, return JSON inline or save XLSX/CSV locally over stdio. HTTP mode returns safe download instructions. Use this after convert_bank_statement times out.",
          "inputSchema": {
            "properties": {
              "job_id": {
                "description": "Conversion job UUID returned by MainBook.",
                "minLength": 1,
                "title": "Job Id",
                "type": "string"
              },
              "output_path": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional absolute result file or existing folder on the MCP server machine. Only available over stdio and only inside the allowed folders.",
                "title": "Output Path"
              },
              "result_type": {
                "default": "json",
                "description": "Result representation to retrieve after the job succeeds.",
                "enum": [
                  "json",
                  "xlsx",
                  "csv"
                ],
                "title": "Result Type",
                "type": "string"
              }
            },
            "required": [
              "job_id"
            ],
            "title": "get_conversionArguments",
            "type": "object"
          },
          "outputSchema": {
            "$defs": {
              "ConversionData": {
                "description": "Exact top-level JSON shape produced by the MainBook exporter.",
                "properties": {
                  "document": {
                    "$ref": "#/$defs/ConversionDocument"
                  },
                  "has_warnings": {
                    "title": "Has Warnings",
                    "type": "boolean"
                  },
                  "transactions": {
                    "items": {
                      "$ref": "#/$defs/ConversionTransaction"
                    },
                    "title": "Transactions",
                    "type": "array"
                  }
                },
                "required": [
                  "document",
                  "transactions",
                  "has_warnings"
                ],
                "title": "ConversionData",
                "type": "object"
              },
              "ConversionDocument": {
                "description": "Document summary emitted by MainBook's JSON exporter.",
                "properties": {
                  "account_address": {
                    "title": "Account Address",
                    "type": "string"
                  },
                  "account_holder": {
                    "title": "Account Holder",
                    "type": "string"
                  },
                  "account_number_masked": {
                    "title": "Account Number Masked",
                    "type": "string"
                  },
                  "account_type": {
                    "title": "Account Type",
                    "type": "string"
                  },
                  "available_credit_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Available Credit Cents"
                  },
                  "bank_name": {
                    "title": "Bank Name",
                    "type": "string"
                  },
                  "billing_cycle_length_days": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Billing Cycle Length Days"
                  },
                  "credit_limit_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Credit Limit Cents"
                  },
                  "currency": {
                    "title": "Currency",
                    "type": "string"
                  },
                  "display_name": {
                    "title": "Display Name",
                    "type": "string"
                  },
                  "ending_balance_cents": {
                    "title": "Ending Balance Cents",
                    "type": "integer"
                  },
                  "id": {
                    "title": "Id",
                    "type": "string"
                  },
                  "kind": {
                    "title": "Kind",
                    "type": "string"
                  },
                  "net_credits_cents": {
                    "title": "Net Credits Cents",
                    "type": "integer"
                  },
                  "net_debits_cents": {
                    "title": "Net Debits Cents",
                    "type": "integer"
                  },
                  "new_balance_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "New Balance Cents"
                  },
                  "pages": {
                    "anyOf": [
                      {
                        "minimum": 1,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Pages"
                  },
                  "payment_due_amount_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Payment Due Amount Cents"
                  },
                  "payment_due_date": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Payment Due Date"
                  },
                  "period_end": {
                    "title": "Period End",
                    "type": "string"
                  },
                  "period_start": {
                    "title": "Period Start",
                    "type": "string"
                  },
                  "previous_balance_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Previous Balance Cents"
                  },
                  "starting_balance_cents": {
                    "title": "Starting Balance Cents",
                    "type": "integer"
                  },
                  "transactions_count": {
                    "minimum": 0,
                    "title": "Transactions Count",
                    "type": "integer"
                  }
                },
                "required": [
                  "id",
                  "display_name",
                  "bank_name",
                  "account_holder",
                  "account_address",
                  "account_number_masked",
                  "account_type",
                  "kind",
                  "currency",
                  "period_start",
                  "period_end",
                  "billing_cycle_length_days",
                  "starting_balance_cents",
                  "ending_balance_cents",
                  "transactions_count",
                  "net_credits_cents",
                  "net_debits_cents",
                  "credit_limit_cents",
                  "available_credit_cents",
                  "previous_balance_cents",
                  "new_balance_cents",
                  "payment_due_amount_cents",
                  "payment_due_date"
                ],
                "title": "ConversionDocument",
                "type": "object"
              },
              "ConversionTransaction": {
                "description": "One exported transaction row, with integer-cent monetary fields.",
                "properties": {
                  "amount_cents": {
                    "title": "Amount Cents",
                    "type": "integer"
                  },
                  "balance_after_cents": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Balance After Cents"
                  },
                  "cardholder": {
                    "default": "",
                    "title": "Cardholder",
                    "type": "string"
                  },
                  "cardholder_card_masked": {
                    "default": "",
                    "title": "Cardholder Card Masked",
                    "type": "string"
                  },
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "title": "Currency"
                  },
                  "date": {
                    "title": "Date",
                    "type": "string"
                  },
                  "description": {
                    "title": "Description",
                    "type": "string"
                  },
                  "line_index": {
                    "minimum": 0,
                    "title": "Line Index",
                    "type": "integer"
                  },
                  "page": {
                    "minimum": 1,
                    "title": "Page",
                    "type": "integer"
                  },
                  "row": {
                    "minimum": 1,
                    "title": "Row",
                    "type": "integer"
                  },
                  "source_file": {
                    "title": "Source File",
                    "type": "string"
                  },
                  "transaction_type": {
                    "enum": [
                      "credit",
                      "debit"
                    ],
                    "title": "Transaction Type",
                    "type": "string"
                  },
                  "validation_status": {
                    "enum": [
                      "valid",
                      "system_mismatch",
                      "user_edited_mismatch",
                      "user_reviewed",
                      "user_accepted"
                    ],
                    "title": "Validation Status",
                    "type": "string"
                  },
                  "warning_flags": {
                    "items": {
                      "type": "string"
                    },
                    "title": "Warning Flags",
                    "type": "array"
                  }
                },
                "required": [
                  "row",
                  "source_file",
                  "page",
                  "line_index",
                  "date",
                  "description",
                  "amount_cents",
                  "transaction_type",
                  "balance_after_cents",
                  "currency",
                  "validation_status",
                  "warning_flags"
                ],
                "title": "ConversionTransaction",
                "type": "object"
              },
              "DownloadInstruction": {
                "additionalProperties": false,
                "properties": {
                  "expires_at": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Expires At"
                  },
                  "instruction": {
                    "title": "Instruction",
                    "type": "string"
                  },
                  "job_id": {
                    "title": "Job Id",
                    "type": "string"
                  },
                  "rest_endpoint": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Rest Endpoint"
                  },
                  "result_type": {
                    "enum": [
                      "xlsx",
                      "csv"
                    ],
                    "title": "Result Type",
                    "type": "string"
                  },
                  "url": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Url"
                  }
                },
                "required": [
                  "job_id",
                  "result_type",
                  "instruction"
                ],
                "title": "DownloadInstruction",
                "type": "object"
              },
              "JobValidation": {
                "properties": {
                  "mismatched_rows": {
                    "description": "Number of transaction rows that remain mathematically mismatched.",
                    "minimum": 0,
                    "title": "Mismatched Rows",
                    "type": "integer"
                  },
                  "passed": {
                    "description": "Whether MainBook's applicable statement-math checks passed.",
                    "title": "Passed",
                    "type": "boolean"
                  },
                  "reconcilable": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether statement math can be reconciled; null means the document kind has no running-balance reconciliation, such as many credit-card statements.",
                    "title": "Reconcilable"
                  }
                },
                "required": [
                  "reconcilable",
                  "passed",
                  "mismatched_rows"
                ],
                "title": "JobValidation",
                "type": "object"
              },
              "SavedFile": {
                "additionalProperties": false,
                "properties": {
                  "path": {
                    "title": "Path",
                    "type": "string"
                  },
                  "reason": {
                    "title": "Reason",
                    "type": "string"
                  }
                },
                "required": [
                  "path",
                  "reason"
                ],
                "title": "SavedFile",
                "type": "object"
              }
            },
            "additionalProperties": false,
            "description": "Structured result shared by convert_bank_statement and get_conversion.",
            "properties": {
              "data": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/ConversionData"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "download": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/DownloadInstruction"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "job_id": {
                "title": "Job Id",
                "type": "string"
              },
              "message": {
                "title": "Message",
                "type": "string"
              },
              "pages": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Pages"
              },
              "result_type": {
                "enum": [
                  "json",
                  "xlsx",
                  "csv"
                ],
                "title": "Result Type",
                "type": "string"
              },
              "saved_file": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/SavedFile"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "state": {
                "anyOf": [
                  {
                    "enum": [
                      "awaiting_upload",
                      "queued",
                      "processing",
                      "succeeded",
                      "succeeded_with_warnings",
                      "insufficient_credits",
                      "failed",
                      "expired"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "State"
              },
              "timed_out": {
                "default": false,
                "title": "Timed Out",
                "type": "boolean"
              },
              "validation": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/JobValidation"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "job_id",
              "state",
              "pages",
              "validation",
              "result_type",
              "message"
            ],
            "title": "ConversionOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true
          }
        }
      ]
    },
    "name": "MainBook Bank Statement Converter",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "pypi",
        "identifier": "mainbook-mcp",
        "version": "0.5.1",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/mainbook-bank-statement-converter.json",
    "popularity": {
      "githubStars": 0,
      "pypiWeekly": 32
    },
    "registryName": "ai.mainbook/bank-statement-converter",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.mainbook.ai/mcp"
      }
    ],
    "repository": "https://github.com/human-beyond/mainbook-mcp",
    "reviewed": false,
    "slug": "mainbook-bank-statement-converter",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.mainbook/bank-statement-converter",
    "summary": "Convert PDF bank statements to checked Excel, CSV or JSON with balance validation.",
    "updatedAt": "2026-08-20T22:50:00Z",
    "url": "https://www.anchorterminal.com/tools/mainbook-bank-statement-converter",
    "vendor": "mainbook.ai",
    "vendorUrl": "https://mainbook.ai/mcp",
    "version": "0.5.2",
    "websiteUrl": "https://mainbook.ai/mcp",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
