Skip to main content
Glama

Bankstatemently

Convert Bank Statement

convert_statement

Convert a bank statement PDF into structured data or a spreadsheet. When the user attaches a PDF in the conversation, it arrives automatically as pdf_file — never encode it yourself. Otherwise, pass pdf_url for a public HTTPS link. If your host has no way to reference the attached file at all (no pdf_file/pdf_url equivalent), call request_upload first and pass its upload_id here instead. The base64 pdf parameter is a last resort only, for a caller with no other way to reference the file. To convert several statements in one call, pass upload_ids (the array from a single request_upload call made with count set) instead of pdf/pdf_url/pdf_file/upload_id — mutually exclusive with those four. This batch form only ADMITS each file (queues it, or reports an already-completed duplicate) and returns immediately with a compact per-file status list plus a summary — it never waits for conversion, so call get_statement per document_id once ready rather than expecting inline results here. Returns accounts, transactions, and metadata. output_format "json" (default) returns the data inline, renderable in chat. The other formats (csv, xlsx, qbo, xero) return a time-limited download link instead: present it as a normal link. Every response includes a "summary" field: use it as the single source of truth for what happened. If the conversation is not in English, translate it faithfully into the conversation language; never add details it doesn't contain. Never echo raw status values (e.g. "completed") or field names. Consumes credits (1 per page). Page limit depends on your plan.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pdfNoBase64-encoded PDF content — last resort only; prefer pdf_file for an attachment or pdf_url for a link
pdf_urlNoHTTPS URL to fetch the PDF from
passwordNoPassword for encrypted PDFs
pdf_fileNoAn attached PDF (populated automatically by ChatGPT — do not construct this yourself).
upload_idNoAn upload_id from request_upload, after PUTting the file to its upload_url. Use this only when your host has no other way to reference the attached file (no pdf_file/pdf_url equivalent).
upload_idsNoBatch of upload_ids from a single request_upload(count) call, each already PUT to its own upload_url — converts many statements in one call. Mutually exclusive with pdf, pdf_url, pdf_file, and upload_id. Admission only: the response reports per-file status immediately, never waiting for conversion — fetch results per document_id via get_statement.
output_formatNoOutput formatjson

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintNo
errorNo
gatingNo
statusYes
columnsNo
messageNo
resultsNo
summaryNo
dataModeNo
documentNo
warningsNo
elapsedMsNo
exportUrlNo
documentIdNo
paginationNo
transactionsNo
confidenceScoreNo
estimateSecondsNo
processingStageNo
transactionCountNo
processingProgressNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedOutput schema / properties / document / properties / statements / items / properties / products / items / properties / accounts / items / properties / transactions / items / properties / balance / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • addedOutput schema / properties / document / properties / statements / items / properties / products / items / properties / accounts / items / properties / transactions / items / properties / balance / type
      Added value: +"number"
  2. Changed2 schema fields changed
    • addedOutput schema / properties / document / properties / statements / items / properties / products / items / properties / accounts / items / properties / id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / statements / items / properties / products / items / properties / id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  3. Changed5 schema fields changed
    • removedOutput schema / properties / completedAt
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • removedOutput schema / properties / createdAt
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • removedOutput schema / properties / extraction
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "method": {
      -      "enum": [
      -        "rule",
      -        "vlm",
      -        "precomputed"
      -      ],
      -      "type": "string"
      -    },
      -    "pageCount": {
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "method",
      -    "pageCount"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / processedAt
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / processingTimeMs
      Removed value: -{
      -  "type": "number"
      -}
  4. Changed23 schema fields changed
    • addedOutput schema / $defs
      Added value: +{
      +  "__schema0": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      },
      +      {
      +        "items": {
      +          "$ref": "#/$defs/__schema0"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "additionalProperties": {
      +          "$ref": "#/$defs/__schema0"
      +        },
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    ]
      +  }
      +}
    • changedOutput schema / properties / columns / items / additionalProperties
      Previous value: -{}New value: +false
    • addedOutput schema / properties / completedAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / createdAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / bank
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / bankId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / country
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / currency
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / documentType
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / languages
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / pageCount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / statementDate
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / document / properties / statementPeriod
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "from": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "to": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "from",
      +    "to"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / document / properties / statements
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "date": {
      +        "type": "string"
      +      },
      +      "period": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "from": {
      +            "type": "string"
      +          },
      +          "to": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "products": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "accounts": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "accountHolderName": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "accountId": {
      +                    "anyOf": [
      +                      {
      +                        "type": "number"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "accountNumber": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "cardNumber": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "categories": {
      +                    "items": {
      +                      "additionalProperties": {
      +                        "$ref": "#/$defs/__schema0"
      +                      },
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "currency": {
      +                    "type": "string"
      +                  },
      +                  "declared": {
      +                    "items": {
      +                      "additionalProperties": {
      +                        "$ref": "#/$defs/__schema0"
      +                      },
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "totals": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "closingBalance": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "openingBalance": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "totalCredits": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "totalDebits": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "transactions": {
      +                    "items": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "accountId": {
      +                          "type": "number"
      +                        },
      +                        "amount": {
      +                          "anyOf": [
      +                            {
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "string"
      +                            }
      +                          ]
      +                        },
      +                        "balance": {
      +                          "anyOf": [
      +                            {
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "string"
      +                            }
      +                          ]
      +                        },
      +                        "category": {
      +                          "type": "string"
      +                        },
      +                        "checkNumber": {
      +                          "type": "string"
      +                        },
      +                        "currency": {
      +                          "type": "string"
      +                        },
      +                        "date": {
      +                          "type": "string"
      +                        },
      +                        "description": {
      +                          "type": "string"
      +                        },
      +                        "direction": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "originalData": {
      +                          "additionalProperties": {
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "reference": {
      +                          "type": "string"
      +                        },
      +                        "sequence": {
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "sequence",
      +                        "date",
      +                        "description",
      +                        "amount",
      +                        "direction",
      +                        "currency"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "accountId"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "categories": {
      +              "items": {
      +                "additionalProperties": {
      +                  "$ref": "#/$defs/__schema0"
      +                },
      +                "propertyNames": {
      +                  "type": "string"
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "currency": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "declared": {
      +              "items": {
      +                "additionalProperties": {
      +                  "$ref": "#/$defs/__schema0"
      +                },
      +                "propertyNames": {
      +                  "type": "string"
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "productId": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "productName": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "productId",
      +            "productName",
      +            "currency",
      +            "accounts"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "products"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / elapsedMs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "pass": {
      +          "type": "number"
      +        },
      +        "total": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "pass",
      +        "total"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / estimateSeconds
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / extraction / additionalProperties
      Previous value: -{}New value: +false
    • changedOutput schema / properties / gating / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "accessMode": {
      -        "enum": [
      -          "paid",
      -          "free_processed"
      -        ],
      -        "type": "string"
      -      },
      -      "gatedRecipe": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "template-first",
      -              "vlm-learning"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "hiddenTransactionPages": {
      -        "type": "number"
      -      },
      -      "previewMode": {
      -        "type": "boolean"
      -      },
      -      "previewPageLimit": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "previewPages": {
      -        "items": {
      -          "type": "number"
      -        },
      -        "type": "array"
      -      },
      -      "previewTransactionCount": {
      -        "type": "number"
      -      },
      -      "processedPages": {
      -        "type": "number"
      -      },
      -      "requiresPlanUpgrade": {
      -        "type": "boolean"
      -      },
      -      "resultQuality": {
      -        "enum": [
      -          "verified",
      -          "partial",
      -          "unverified"
      -        ],
      -        "type": "string"
      -      },
      -      "totalPages": {
      -        "type": "number"
      -      },
      -      "totalTransactionCount": {
      -        "type": "number"
      -      },
      -      "unlocked": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "previewMode",
      -      "accessMode",
      -      "previewPageLimit",
      -      "previewPages",
      -      "hiddenTransactionPages",
      -      "processedPages",
      -      "totalPages",
      -      "totalTransactionCount",
      -      "previewTransactionCount",
      -      "unlocked",
      -      "requiresPlanUpgrade",
      -      "resultQuality",
      -      "gatedRecipe"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accessMode": {
      +        "enum": [
      +          "paid",
      +          "free_processed"
      +        ],
      +        "type": "string"
      +      },
      +      "gatedRecipe": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "template-first",
      +              "vlm-learning"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "hiddenTransactionPages": {
      +        "type": "number"
      +      },
      +      "previewMode": {
      +        "type": "boolean"
      +      },
      +      "previewPageLimit": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "previewPages": {
      +        "items": {
      +          "type": "number"
      +        },
      +        "type": "array"
      +      },
      +      "previewTransactionCount": {
      +        "type": "number"
      +      },
      +      "processedPages": {
      +        "type": "number"
      +      },
      +      "requiresPlanUpgrade": {
      +        "type": "boolean"
      +      },
      +      "resultQuality": {
      +        "enum": [
      +          "verified",
      +          "partial",
      +          "unverified"
      +        ],
      +        "type": "string"
      +      },
      +      "totalPages": {
      +        "type": "number"
      +      },
      +      "totalTransactionCount": {
      +        "type": "number"
      +      },
      +      "unlocked": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "previewMode",
      +      "accessMode",
      +      "previewPageLimit",
      +      "previewPages",
      +      "hiddenTransactionPages",
      +      "processedPages",
      +      "totalPages",
      +      "totalTransactionCount",
      +      "previewTransactionCount",
      +      "unlocked",
      +      "requiresPlanUpgrade",
      +      "resultQuality",
      +      "gatedRecipe"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / pagination / additionalProperties
      Previous value: -{}New value: +false
    • addedOutput schema / properties / processingProgress
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "pagesProcessed": {
      +          "type": "number"
      +        },
      +        "pass": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "number": {
      +              "type": "number"
      +            },
      +            "startedAt": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "number",
      +            "startedAt"
      +          ],
      +          "type": "object"
      +        },
      +        "totalPages": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "pagesProcessed",
      +        "totalPages"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / processingStage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / results / items / additionalProperties
      Previous value: -{}New value: +false
    • changedOutput schema / properties / warnings / items / additionalProperties
      Previous value: -{}New value: +false
  5. Changed13 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / output_format / description
      Added value: +"Output format"
    • addedInput schema / properties / password / description
      Added value: +"Password for encrypted PDFs"
    • addedInput schema / properties / pdf / description
      Added value: +"Base64-encoded PDF content — last resort only; prefer pdf_file for an attachment or pdf_url for a link"
    • addedInput schema / properties / pdf_file / description
      Added value: +"An attached PDF (populated automatically by ChatGPT — do not construct this yourself)."
    • addedInput schema / properties / pdf_file / properties / download_url / description
      Added value: +"Signed URL ChatGPT provides to fetch the attached PDF's bytes."
    • addedInput schema / properties / pdf_file / properties / file_id / description
      Added value: +"ChatGPT's identifier for the attached file."
    • addedInput schema / properties / pdf_file / properties / file_name / description
      Added value: +"Original filename of the attached file, when ChatGPT provides one."
    • addedInput schema / properties / pdf_file / properties / mime_type / description
      Added value: +"MIME type of the attached file, when ChatGPT provides one."
    • addedInput schema / properties / pdf_url / description
      Added value: +"HTTPS URL to fetch the PDF from"
    • addedInput schema / properties / upload_id / description
      Added value: +"An upload_id from request_upload, after PUTting the file to its upload_url. Use this only when your host has no other way to reference the attached file (no pdf_file/pdf_url equivalent)."
    • addedInput schema / properties / upload_ids / description
      Added value: +"Batch of upload_ids from a single request_upload(count) call, each already PUT to its own upload_url — converts many statements in one call. Mutually exclusive with pdf, pdf_url, pdf_file, and upload_id. Admission only: the response reports per-file status immediately, never waiting for conversion — fetch results per document_id via get_statement."
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  6. Changed11 schema fields changed
    • removedInput schema / properties / output_format / description
      Removed value: -"Output format"
    • removedInput schema / properties / password / description
      Removed value: -"Password for encrypted PDFs"
    • removedInput schema / properties / pdf / description
      Removed value: -"Base64-encoded PDF content — last resort only; prefer pdf_file for an attachment or pdf_url for a link"
    • removedInput schema / properties / pdf_file / description
      Removed value: -"An attached PDF (populated automatically by ChatGPT — do not construct this yourself)."
    • removedInput schema / properties / pdf_file / properties / download_url / description
      Removed value: -"Signed URL ChatGPT provides to fetch the attached PDF's bytes."
    • removedInput schema / properties / pdf_file / properties / file_id / description
      Removed value: -"ChatGPT's identifier for the attached file."
    • removedInput schema / properties / pdf_file / properties / file_name / description
      Removed value: -"Original filename of the attached file, when ChatGPT provides one."
    • removedInput schema / properties / pdf_file / properties / mime_type / description
      Removed value: -"MIME type of the attached file, when ChatGPT provides one."
    • removedInput schema / properties / pdf_url / description
      Removed value: -"HTTPS URL to fetch the PDF from"
    • removedInput schema / properties / upload_id / description
      Removed value: -"An upload_id from request_upload, after PUTting the file to its upload_url. Use this only when your host has no other way to reference the attached file (no pdf_file/pdf_url equivalent)."
    • removedInput schema / properties / upload_ids / description
      Removed value: -"Batch of upload_ids from a single request_upload(count) call, each already PUT to its own upload_url — converts many statements in one call. Mutually exclusive with pdf, pdf_url, pdf_file, and upload_id. Admission only: the response reports per-file status immediately, never waiting for conversion — fetch results per document_id via get_statement."
  7. Changed2 schema fields changed
    • addedInput schema / properties / upload_ids
      Added value: +{
      +  "description": "Batch of upload_ids from a single request_upload(count) call, each already PUT to its own upload_url — converts many statements in one call. Mutually exclusive with pdf, pdf_url, pdf_file, and upload_id. Admission only: the response reports per-file status immediately, never waiting for conversion — fetch results per document_id via get_statement.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / results
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "content_hash": {
      +        "type": "string"
      +      },
      +      "duplicate": {
      +        "type": "boolean"
      +      },
      +      "error_code": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "upload_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "upload_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses credit cost (1 per page), plan-dependent page limits, that batch mode is admission-only and returns immediately with per-file status, that non-JSON formats return time-limited download links, and that 'summary' is the source of truth for what happened. These are consequential behaviors an agent cannot infer from readOnlyHint=false / openWorldHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but densely front-loaded and almost every sentence carries operational weight (input selection, batch semantics, format behavior, credits). The presentation instructions about translating the summary and not echoing raw status values are useful but somewhat verbose relative to the rest, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with nested objects, batch mode, five output formats, and credit implications, the description covers every decision the caller must make. An output schema exists so return structure needn't be detailed, and the description correctly limits itself to behavioral guidance rather than field enumeration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: a preference ordering among the four single-file inputs (pdf_file > pdf_url > upload_id > pdf), the mutual exclusivity of upload_ids with the others, and the fact that upload_ids come from a single request_upload(count) call. It doesn't add syntax details for output_format beyond the enum already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (convert) and resource (bank statement PDF) plus the output forms (structured data or spreadsheet). It is clearly distinguishable from siblings like get_statement (retrieval), categorize_statement, and list_statements, so an agent can route without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional routing for every input path: pdf_file when attached, pdf_url for a public link, request_upload + upload_id only when the host has no file reference, and pdf as a last resort. It also names the alternative explicitly — 'call get_statement per document_id once ready rather than expecting inline results here' — leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.