Koskamo

byondr Receipts MCP

An MCP server that allows AI agents to extract structured data from receipts and invoices. It processes images and PDFs to generate CSV exports for Excel or QuickBooks, flagging doubtful numbers for review while ensuring data privacy by deleting files after 24 hours.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

byondr Receipts MCP logo, by byondrVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by byondr
You need:No account neededConnect an MCP client to https://byondr.co/receipts/mcp
MCP endpoint (Streamable HTTP)
https://byondr.co/receipts/mcp
Vendor documentation

What you can do with it

  • Extract vendor, date, tax, and total from receipt images into CSV
  • Parse invoice numbers, due dates, and line items into structured data
  • Generate QuickBooks Online compatible CSV files for accounting
  • Flag documents with arithmetic errors or missing fields for review

Source and maintenance

Vendor evidenceRegistry 0.1.0

Protocol and capabilities

Server
Receipts & invoices to spreadsheet 0.1.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

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

byondr Receipts & invoices to spreadsheet. Files over 2 MB: call create_upload, PUT the bytes, pass file_id (or pass a public https url). Every document comes back with each field marked ok, check or missing and a status of ready or needs_review: show the needs_review ones and their review_reasons to the user before using their numbers. Ask for exports csv, line_items_csv, quickbooks_csv or file_pack. Download links expire after 24 hours. If a call asks for payment (HTTP 402 or an x402 payment request), ask the user before paying.

Tools

2 advertised

extract_documents
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Read receipts and invoices (JPG, PNG, WebP, HEIC, PDF, or a zip of them; one document per file or PDF; up to 25 documents per call, 10 MB each, PDFs up to 10 pages) into checked numbers. Give each file as file_id (from create_upload), url (public https) or data_base64 (up to 2 MB inline). MCP requests are capped near 4 MB by the SDK, so keep all inline base64 in one call under about 2 MB and use create_upload for more. Returns one entry per document with vendor, date, currency, line items, subtotal, tax, total and payment method, each field marked ok, check or missing, the checks that ran, a status of ready or needs_review with review_reasons, and duplicate_of for a repeated receipt. Money is a decimal string, never a float. Each document also carries printed: its dates and currency as printed, the paths of fields whose text could not be read (printed.unreadable), the paths of fields a second read changed after a failed check (printed.second_look), and the paths of amounts printed with a dotted thousands separator on a rupiah-style receipt ("31.000") that were read as the whole number (printed.thousands; the value is already converted and the field is marked check), and the paths of amounts the model returned as JSON numbers, whose printed digits are lost (printed.number_typed; the field is marked check). Also returns 24-hour download links for the exports you ask for: csv (default), line_items_csv, quickbooks_csv (one currency; set quickbooks_currency and quickbooks_date_format, MM/DD/YYYY or DD/MM/YYYY) and file_pack (a zip of the originals renamed by date, vendor and total, plus documents.csv). Each link lists the documents left out of that file: quickbooks_csv leaves out every document with status needs_review (and ones missing a date or total), with the reason; csv, line_items_csv and file_pack keep every document. Hints: country (ISO 3166-1 alpha-2) and currency (ISO 4217) help with unclear receipts, date_order (DMY or MDY) settles dates like 03/04/2026. Show documents with status needs_review and their review_reasons to the user before using their numbers. Free for now within a daily quota counted in documents (see start.md); price when payments are enabled: $0.01 per document. Use a client timeout of at least 240 s.

extract_documents input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Or a public https URL of a document or zip"
          },
          "file_id": {
            "type": "string",
            "description": "A file_id from create_upload (after the PUT)"
          },
          "filename": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "description": "Original file name; the exports and file pack use it"
          },
          "data_base64": {
            "type": "string",
            "description": "Or base64 bytes of a document or zip, up to 2 MB decoded over MCP (REST accepts 3 MB, and 10 MB across all files in one call); use create_upload or url above that"
          }
        }
      },
      "maxItems": 25,
      "minItems": 1,
      "description": "Documents to read. Each item needs exactly one of file_id, url or data_base64"
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Country of the documents, ISO 3166-1 alpha-2 (for example DE)"
    },
    "exports": {
      "type": "array",
      "items": {
        "enum": [
          "csv",
          "line_items_csv",
          "quickbooks_csv",
          "file_pack"
        ],
        "type": "string"
      },
      "default": [
        "csv"
      ],
      "description": "Files to produce, each as a 24-hour download link. Default: csv; [] writes no file"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "Currency to expect when a document does not print one, ISO 4217 (for example EUR)"
    },
    "date_order": {
      "enum": [
        "DMY",
        "MDY"
      ],
      "type": "string",
      "description": "How all-numeric dates such as 03/04/2026 are written: day first or month first"
    },
    "quickbooks_currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "quickbooks_csv: the one currency the file holds (default: the most common one)"
    },
    "quickbooks_date_format": {
      "enum": [
        "MM/DD/YYYY",
        "DD/MM/YYYY"
      ],
      "type": "string",
      "description": "quickbooks_csv: how dates are written (default MM/DD/YYYY)"
    }
  }
}
extract_documents output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "documents",
    "skipped",
    "ready",
    "needs_review",
    "exports"
  ],
  "properties": {
    "ready": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "exports": {
      "type": "object",
      "propertyNames": {
        "enum": [
          "csv",
          "line_items_csv",
          "quickbooks_csv",
          "file_pack"
        ],
        "type": "string"
      },
      "additionalProperties": {
        "type": "object",
        "required": [
          "url",
          "expires_at",
          "skipped"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "skipped": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "index",
                "reason"
              ],
              "properties": {
                "index": {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991
                },
                "reason": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "expires_at": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "skipped": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "reason"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "vendor",
          "document_number",
          "date",
          "due_date",
          "currency",
          "line_items",
          "subtotal",
          "tax",
          "shipping",
          "discount",
          "tip",
          "total",
          "payment",
          "category_suggestion",
          "checks",
          "fields",
          "status",
          "review_reasons",
          "duplicate_of",
          "printed",
          "source"
        ],
        "properties": {
          "tax": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "rate",
                "amount"
              ],
              "properties": {
                "rate": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "amount": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "tip": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "anyOf": [
              {
                "enum": [
                  "receipt",
                  "invoice"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": [
              "string",
              "null"
            ]
          },
          "checks": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "passed",
                "detail"
              ],
              "properties": {
                "name": {
                  "enum": [
                    "is_document",
                    "lines_sum",
                    "total_sum",
                    "cross_check",
                    "tax_rate",
                    "date_valid",
                    "date_recent",
                    "date_order",
                    "currency_read",
                    "money_format",
                    "duplicate",
                    "unsupported"
                  ],
                  "type": "string"
                },
                "detail": {
                  "type": "string"
                },
                "passed": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          },
          "fields": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "object",
              "required": [
                "status"
              ],
              "properties": {
                "reason": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "ok",
                    "check",
                    "missing"
                  ],
                  "type": "string"
                },
                "inferred": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          },
          "source": {
            "type": "object",
            "required": [
              "name",
              "pages",
              "index"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "index": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              "pages": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              }
            },
            "additionalProperties": false
          },
          "status": {
            "enum": [
              "ready",
              "needs_review"
            ],
            "type": "string"
          },
          "vendor": {
            "type": "object",
            "required": [
              "name",
              "tax_id",
              "address"
            ],
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "tax_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "address": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "payment": {
            "type": "object",
            "required": [
              "method",
              "card_last4"
            ],
            "properties": {
              "method": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "card_last4": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "printed": {
            "type": "object",
            "required": [
              "date_text",
              "due_date_text",
              "currency_text",
              "unreadable",
              "second_look",
              "thousands",
              "number_typed"
            ],
            "properties": {
              "date_text": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "thousands": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "unreadable": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "second_look": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "number_typed": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "currency_text": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "due_date_text": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "discount": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "shipping": {
            "type": [
              "string",
              "null"
            ]
          },
          "subtotal": {
            "type": [
              "string",
              "null"
            ]
          },
          "line_items": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "description",
                "quantity",
                "unit_price",
                "amount",
                "tax_rate"
              ],
              "properties": {
                "amount": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "quantity": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tax_rate": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "unit_price": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "duplicate_of": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "review_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "document_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "category_suggestion": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "needs_review": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
extract_documents annotations
{
  "title": "Extract receipts and invoices",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
create_upload
Advertised by the server during the last successful anonymous check.

Get a one-hour signed upload URL for a document or a zip that is too large to send inline (over 2 MB; up to 100 MB here) or that already sits on disk. PUT the raw bytes to upload_url with a Content-Length header, then pass file_id to extract_documents. Free.

create_upload input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "bytes"
  ],
  "properties": {
    "bytes": {
      "type": "integer",
      "maximum": 104857600,
      "minimum": 1,
      "description": "Exact size of the file you will upload, in bytes (at most 100 MB)"
    },
    "filename": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Original file name, used to name the documents"
    }
  }
}
create_upload output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "file_id",
    "upload_url",
    "method",
    "expires_at",
    "max_bytes"
  ],
  "properties": {
    "method": {
      "type": "string",
      "const": "PUT"
    },
    "file_id": {
      "type": "string"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "expires_at": {
      "type": "string"
    },
    "upload_url": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
create_upload annotations
{
  "title": "Create upload URL",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
873 ms
95th percentile latency
873 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 873 ms · metadata changed · 2 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

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

Claude Code

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

Codex

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

Cursor

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

Cline

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

VS Code

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

Gemini CLI

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

Claude Desktop

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

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "byondr-receipts-mcp": {
      "serverUrl": "https://byondr.co/receipts/mcp"
    }
  }
}

Let your agent find its tools

Find servers like byondr Receipts MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run byondr Receipts MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing