Invoice PDFs, scans and photos to Excel, with the math checked: fields, line items and totals.
Call this server's tools from your browser. Nothing to install.
Optional. 'Bearer ipp_mcp_...' (an AI assistant key, any paid plan) or a Scale REST key. Without it, a small free trial.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check whether an invoice adds up: each line's quantity times unit price, the lines against the subtotal, the tax against its printed rate, and subtotal plus tax against the total. Returns a one-line verdict and every problem found, with the invoice's own numbers. Give the file as file_url, file_base64 or (ChatGPT) file.
ChatGPT only: the attached file. Other clients use file_url or file_base64.
An https link to the invoice (PDF or image) that the server can download.
The file's name, e.g. invoice-1042.pdf (optional).
The invoice file's bytes, base64-encoded. Use for a local file.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Check whether an invoice adds up: each line's quantity times unit price, the lines against the subtotal, the tax against its printed rate, and subtotal plus tax against the total. Returns a one-line verdict and every problem found, with the invoice's own numbers. Give the file as file_url, file_base64 or (ChatGPT) file.
| Argument | Type | Description |
|---|---|---|
| file | any | ChatGPT only: the attached file. Other clients use file_url or file_base64. |
| file_url | any | An https link to the invoice (PDF or image) that the server can download. |
| file_name | any | The file's name, e.g. invoice-1042.pdf (optional). |
| file_base64 | any | The invoice file's bytes, base64-encoded. Use for a local file. |
{
"type": "object",
"$defs": {
"ChatGPTFile": {
"type": "object",
"title": "ChatGPTFile",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"title": "File Id"
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type",
"default": null
},
"download_url": {
"type": "string",
"title": "Download Url"
}
},
"description": "ChatGPT's file object (Apps SDK `openai/fileParams`)."
}
},
"title": "check_invoiceArguments",
"properties": {
"file": {
"anyOf": [
{
"$ref": "#/$defs/ChatGPTFile"
},
{
"type": "null"
}
],
"default": null,
"description": "ChatGPT only: the attached file. Other clients use file_url or file_base64."
},
"file_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Url",
"default": null,
"description": "An https link to the invoice (PDF or image) that the server can download."
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null,
"description": "The file's name, e.g. invoice-1042.pdf (optional)."
},
"file_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Base64",
"default": null,
"description": "The invoice file's bytes, base64-encoded. Use for a local file."
}
}
}Extract an invoice's data as structured JSON: vendor and customer, invoice number and dates, PO number, currency, subtotal, discount, shipping, tax and total, tax lines, every line item, and confidence (overall and per field). Give the file as file_url, file_base64 or (ChatGPT) file.
| Argument | Type | Description |
|---|---|---|
| file | any | ChatGPT only: the attached file. Other clients use file_url or file_base64. |
| file_url | any | An https link to the invoice (PDF or image) that the server can download. |
| file_name | any | The file's name, e.g. invoice-1042.pdf (optional). |
| file_base64 | any | The invoice file's bytes, base64-encoded. Use for a local file. |
{
"type": "object",
"$defs": {
"ChatGPTFile": {
"type": "object",
"title": "ChatGPTFile",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"title": "File Id"
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type",
"default": null
},
"download_url": {
"type": "string",
"title": "Download Url"
}
},
"description": "ChatGPT's file object (Apps SDK `openai/fileParams`)."
}
},
"title": "extract_invoice_dataArguments",
"properties": {
"file": {
"anyOf": [
{
"$ref": "#/$defs/ChatGPTFile"
},
{
"type": "null"
}
],
"default": null,
"description": "ChatGPT only: the attached file. Other clients use file_url or file_base64."
},
"file_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Url",
"default": null,
"description": "An https link to the invoice (PDF or image) that the server can download."
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null,
"description": "The file's name, e.g. invoice-1042.pdf (optional)."
},
"file_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Base64",
"default": null,
"description": "The invoice file's bytes, base64-encoded. Use for a local file."
}
}
}Fetch the result of an invoice that was still being read when its tool call returned. Pass the job_id that call gave. Returns the spreadsheet links, the math check and the extracted data.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job_id a previous call returned. |
{
"type": "object",
"title": "get_resultArguments",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"title": "Job Id",
"description": "The job_id a previous call returned."
}
}
}Read an invoice (PDF, scan or photo) and turn it into a spreadsheet: returns the header fields, the line items and download links to an Excel (.xlsx) and a CSV file, valid for 60 minutes without signing in. Give the file as file_url, file_base64 or (ChatGPT) file.
| Argument | Type | Description |
|---|---|---|
| file | any | ChatGPT only: the attached file. Other clients use file_url or file_base64. |
| file_url | any | An https link to the invoice (PDF or image) that the server can download. |
| file_name | any | The file's name, e.g. invoice-1042.pdf (optional). |
| file_base64 | any | The invoice file's bytes, base64-encoded. Use for a local file. |
{
"type": "object",
"$defs": {
"ChatGPTFile": {
"type": "object",
"title": "ChatGPTFile",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"title": "File Id"
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type",
"default": null
},
"download_url": {
"type": "string",
"title": "Download Url"
}
},
"description": "ChatGPT's file object (Apps SDK `openai/fileParams`)."
}
},
"title": "invoice_to_excelArguments",
"properties": {
"file": {
"anyOf": [
{
"$ref": "#/$defs/ChatGPTFile"
},
{
"type": "null"
}
],
"default": null,
"description": "ChatGPT only: the attached file. Other clients use file_url or file_base64."
},
"file_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Url",
"default": null,
"description": "An https link to the invoice (PDF or image) that the server can download."
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Name",
"default": null,
"description": "The file's name, e.g. invoice-1042.pdf (optional)."
},
"file_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Base64",
"default": null,
"description": "The invoice file's bytes, base64-encoded. Use for a local file."
}
}
}