Invoice Table
Review invoice records, flag duplicates, validate totals, and prepare spreadsheet-safe CSV.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"invoice-table": {
"url": "https://invoicetable.app/api/mcp"
}
}
}Remote endpoints
https://invoicetable.app/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢analyze_invoice_text(documents)
Extract common invoice fields from user-supplied text, check dates and subtotal-plus-tax arithmetic, flag likely duplicates, and return a review queue. Human source review is required.
Input Schema
{
"type": "object",
"properties": {
"documents": {
"type": "array",
"minItems": 1,
"maxItems": 25,
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"filename",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"documents"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"vendor": {
"type": [
"string",
"null"
]
},
"invoiceNumber": {
"type": [
"string",
"null"
]
},
"invoiceDate": {
"type": [
"string",
"null"
]
},
"dueDate": {
"type": [
"string",
"null"
]
},
"poNumber": {
"type": [
"string",
"null"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"subtotal": {
"type": [
"number",
"null"
]
},
"tax": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
},
"duplicate": {
"type": "boolean"
},
"duplicateOf": {
"type": [
"string",
"null"
]
},
"issues": {
"type": "array",
"items": {
"type": "string"
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"confidence": {
"type": "number"
},
"valid": {
"type": "boolean"
},
"reviewStatus": {
"type": "string",
"enum": [
"ready",
"review",
"blocked",
"duplicate"
]
},
"reviewReasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"filename",
"category",
"duplicate",
"issues",
"warnings",
"confidence",
"valid",
"reviewStatus",
"reviewReasons"
],
"additionalProperties": true
}
},
"summary": {
"type": "object",
"properties": {
"invoiceCount": {
"type": "integer"
},
"readyCount": {
"type": "integer"
},
"reviewCount": {
"type": "integer"
},
"blockedCount": {
"type": "integer"
},
"duplicateCount": {
"type": "integer"
},
"arithmeticCheckedCount": {
"type": "integer"
},
"arithmeticMismatchCount": {
"type": "integer"
},
"accountingEligibleCount": {
"type": "integer"
},
"totalsByCurrency": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"invoiceCount",
"readyCount",
"reviewCount",
"blockedCount",
"duplicateCount",
"arithmeticCheckedCount",
"arithmeticMismatchCount",
"accountingEligibleCount",
"totalsByCurrency"
],
"additionalProperties": false
}
},
"required": [
"records",
"summary"
],
"additionalProperties": false
}🟢validate_invoice_records(records)
Recheck structured invoice records for missing fields, invalid dates, arithmetic mismatches, and likely duplicates without reading files.
Input Schema
{
"type": "object",
"properties": {
"records": {
"type": "array",
"minItems": 1,
"maxItems": 1000,
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"vendor": {
"type": [
"string",
"null"
]
},
"invoiceNumber": {
"type": [
"string",
"null"
]
},
"invoiceDate": {
"type": [
"string",
"null"
]
},
"dueDate": {
"type": [
"string",
"null"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"subtotal": {
"type": [
"number",
"null"
]
},
"tax": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
}
},
"additionalProperties": true
}
}
},
"required": [
"records"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"vendor": {
"type": [
"string",
"null"
]
},
"invoiceNumber": {
"type": [
"string",
"null"
]
},
"invoiceDate": {
"type": [
"string",
"null"
]
},
"dueDate": {
"type": [
"string",
"null"
]
},
"poNumber": {
"type": [
"string",
"null"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"subtotal": {
"type": [
"number",
"null"
]
},
"tax": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
},
"duplicate": {
"type": "boolean"
},
"duplicateOf": {
"type": [
"string",
"null"
]
},
"issues": {
"type": "array",
"items": {
"type": "string"
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"confidence": {
"type": "number"
},
"valid": {
"type": "boolean"
},
"reviewStatus": {
"type": "string",
"enum": [
"ready",
"review",
"blocked",
"duplicate"
]
},
"reviewReasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"filename",
"category",
"duplicate",
"issues",
"warnings",
"confidence",
"valid",
"reviewStatus",
"reviewReasons"
],
"additionalProperties": true
}
},
"summary": {
"type": "object",
"properties": {
"invoiceCount": {
"type": "integer"
},
"readyCount": {
"type": "integer"
},
"reviewCount": {
"type": "integer"
},
"blockedCount": {
"type": "integer"
},
"duplicateCount": {
"type": "integer"
},
"arithmeticCheckedCount": {
"type": "integer"
},
"arithmeticMismatchCount": {
"type": "integer"
},
"accountingEligibleCount": {
"type": "integer"
},
"totalsByCurrency": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"invoiceCount",
"readyCount",
"reviewCount",
"blockedCount",
"duplicateCount",
"arithmeticCheckedCount",
"arithmeticMismatchCount",
"accountingEligibleCount",
"totalsByCurrency"
],
"additionalProperties": false
}
},
"required": [
"records",
"summary"
],
"additionalProperties": false
}🟢export_invoice_records(records)
Prepare reviewed invoice records as spreadsheet-safe CSV text. Invalid and duplicate rows remain visible in the review export.
Input Schema
{
"type": "object",
"properties": {
"records": {
"type": "array",
"minItems": 1,
"maxItems": 1000,
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"vendor": {
"type": [
"string",
"null"
]
},
"invoiceNumber": {
"type": [
"string",
"null"
]
},
"invoiceDate": {
"type": [
"string",
"null"
]
},
"dueDate": {
"type": [
"string",
"null"
]
},
"currency": {
"type": [
"string",
"null"
]
},
"subtotal": {
"type": [
"number",
"null"
]
},
"tax": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
}
},
"additionalProperties": true
}
}
},
"required": [
"records"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"mediaType": {
"type": "string",
"const": "text/csv"
},
"csv": {
"type": "string"
},
"summary": {
"type": "object",
"properties": {
"invoiceCount": {
"type": "integer"
},
"readyCount": {
"type": "integer"
},
"reviewCount": {
"type": "integer"
},
"blockedCount": {
"type": "integer"
},
"duplicateCount": {
"type": "integer"
},
"arithmeticCheckedCount": {
"type": "integer"
},
"arithmeticMismatchCount": {
"type": "integer"
},
"accountingEligibleCount": {
"type": "integer"
},
"totalsByCurrency": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"invoiceCount",
"readyCount",
"reviewCount",
"blockedCount",
"duplicateCount",
"arithmeticCheckedCount",
"arithmeticMismatchCount",
"accountingEligibleCount",
"totalsByCurrency"
],
"additionalProperties": false
}
},
"required": [
"filename",
"mediaType",
"csv",
"summary"
],
"additionalProperties": false
}Community
Evidence