scangpt.dev · Developer documentation

Receipts, in
your workflow.

The ScanGPT MCP server gives authorized AI assistants access to receipt search, line items and spending summaries. Build the path from an expense question to its original document.

Connect an MCP client

Add a remote MCP server in a compatible client using the current connection URL below. Complete the sign-in flow with your ScanGPT account when the client requests authorization.

https://mcp.scangpt.app

The server uses HTTP JSON-RPC and OAuth with PKCE. Client support and connection settings vary. Discover available tools with tools/list after initialization.

First request

After initialization and authorization, a tool call looks like this:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_receipts",
    "arguments": {
      "storeName": "Studio Supply",
      "startDate": "2026-09-01",
      "endDate": "2026-09-30",
      "minAmount": 48.90,
      "maxAmount": 48.90
    }
  }
}

This example uses fictional receipt data. Actual results are limited to receipts your account can access.

Core tools

These tool names are present in the existing server. New response fields and additional tools below belong to the prepared ScanGPT release. Use the deployed server’s tools/list schema as the source of truth for your connection.

search_receipts

Search by store, item, dates, amount or payment method. The ScanGPT release returns { receipts, nextCursor, hasMore } for explicit pagination.

InputTypeMeaning
querystringStore or item search text.
storeNamestringPartial store-name match.
startDate, endDatestringDate range as YYYY-MM-DD.
minAmount, maxAmountnumberReceipt total bounds in the requested currency; EUR by default.
currencystringISO 4217 currency filter in the ScanGPT release; unrecorded currency returns null.
paymentMethodstringPayment-method filter.
entityIdstringOne authorized household or business space. Omit to search all authorized spaces and personal receipts.
limitnumberMaximum results per page, up to 100.
cursorstringPass a previous nextCursor to continue. ScanGPT release.
includeItemsbooleanInclude line-item details. Check your deployed schema.

All search inputs are optional. Do not infer that a receipt is absent while hasMore is true.

get_receipt_details

Required input: receiptId. Returns receipt details and purchased items. The ScanGPT release adds review status and an original-file descriptor; see original documents.

get_spending_summary

Required input: period, one of week, month, quarter, year. Optional groupBy: store, category or day. Returns spending totals and breakdowns for the selected period. The ScanGPT release labels legacy EUR assumptions and excludes receipts known to be in another currency.

match_receipts_to_transactions

Required input: transactions, an array of { date, amount, description }. Date format is YYYY-MM-DD; amounts are in euros. Returns receipt candidates using amount and nearby-date matching. Review candidates before treating a transaction as reconciled.

list_stores

No inputs. Lists stores with receipt counts and date ranges.

list_payment_methods

No inputs. Lists detected payment methods with receipt counts and totals. Receipts without a detected method are grouped as Unknown.

From a request to the original ScanGPT release

resolve_receipt_requests

Provide up to 25 receipt requests. Each needs a label and can include query, storeName, startDate, endDate, minAmount, maxAmount, entityId, amount, amountTolerance or currency. Amount requests default to EUR and a tolerance of 0.02 in the requested currency. Known other currencies are excluded; candidates without a recorded currency remain ambiguous when matching an amount.

{
  "requests": [
    {
      "label": "Office supplies, September",
      "storeName": "Studio Supply",
      "startDate": "2026-09-01",
      "endDate": "2026-09-30",
      "amount": 48.90
    }
  ]
}

Each result has a status: found, ambiguous or missing, with matching candidates and original-file availability. Preserve ambiguity: show the candidates instead of silently selecting one. Missing means the request was not resolved; it is not a newly created receipt.

Original documents

A receipt’s original value describes whether its stored source file is available:

// Available original
{
  "available": true,
  "url": "https://…",
  "expiresAt": "ISO 8601 timestamp",
  "contentType": "image/jpeg",
  "fileName": "…"
}

// Missing original
{
  "available": false,
  "reason": "…"
}

Original-file links expire after 15 minutes. Fetch or download the file before the link expires, or request a fresh link. Do not turn a missing original into a reconstructed receipt. Use needsReview and reviewReasons to highlight extraction uncertainty; an unverified receipt date may be null.

Prepare an export manifest ScanGPT release

export_receipts

Required input: receiptIds, an array of up to 100 receipt IDs. The response is { format: "manifest", entries, indexCsv }. Entries identify available original files and explicitly report missing ones.

{
  "receiptIds": ["receipt-id-from-search"]
}

The result is a manifest and CSV index. The tool does not produce a ZIP or send email. A client can download available originals, save the index and prepare an attachment bundle for the user to review and send.

HTTP endpoints

EndpointPurpose
GET /healthService health.
POST /Authenticated MCP JSON-RPC.
DELETE /Session cleanup.
GET /.well-known/oauth-authorization-serverOAuth authorization-server metadata.
GET /.well-known/oauth-protected-resourceProtected-resource metadata.
POST /registerDynamic client registration.
GET /authorizeUser authorization flow.
POST /tokenAuthorization-code and refresh-token exchange.

Access, review and limits

  • The user must authorize the client. Receipt access follows the account’s personal and shared-space access.
  • These tools read receipt data. Exporting creates a response manifest; it does not modify the underlying receipts.
  • Keep continuation cursors opaque. Continue paging when the response indicates more results.
  • Use original documents to check AI-extracted values before completing accounting work.
  • Do not send receipts to an accountant or other recipient without the user’s instruction. The MCP tools described here do not deliver messages.
  • Retailer connections and receipt extraction can fail or need review. Keep missing files, missing matches and uncertain data visible.

Need help? Contact the ScanGPT team.