Scan receipts with Taggun OCR from a URL or file and read receipt-validation campaigns.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
Read the reference data stored on your Taggun account as CSV: product_categories (the category taxonomy), known_merchants (merchant names and locations used for matching) or product_codes (expected product codes). Read-only; does not use a scan. The text is cut at 40,000 characters. GET /api/account/v1/{product-categories|known-merchants|known-product-codes}/export.
Which list to export.
Read the reference data stored on your Taggun account as CSV: product_categories (the category taxonomy), known_merchants (merchant names and locations used for matching) or product_codes (expected product codes). Read-only; does not use a scan. The text is cut at 40,000 characters. GET /api/account/v1/{product-categories|known-merchants|known-product-codes}/export.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which list to export. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"product_categories",
"known_merchants",
"product_codes"
],
"type": "string",
"description": "Which list to export."
}
}
}The stored validation rules of one campaign (dates, merchants, products, fraud checks, SmartValidate prompts). Does not use a scan. GET /api/validation/v1/campaign/settings/{campaignId}.
| Argument | Type | Description |
|---|---|---|
| campaign_id* | string | A campaign id from taggun_list_campaigns. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"campaign_id"
],
"properties": {
"campaign_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "A campaign id from taggun_list_campaigns."
}
}
}List the ids of the receipt-validation campaigns stored on your Taggun account (an empty list is normal). Does not use a scan. Needs the Campaign Validation feature; without it Taggun answers that the feature must be enabled. GET /api/validation/v1/campaign/settings/list.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}WRITE: this scan counts against YOUR Taggun quota and plan (free for the first 30 days or 1,000 scans, then billed per scan by Taggun), even if the receipt fails validation; it is never retried automatically. Document content is not logged by this server. Extract structured data from a receipt or invoice sent as base64 (JPEG, PNG, GIF, HEIF/HEIC or PDF; the base64 text is capped at 2,000,000 characters, about 1.5 MB of file; for larger files use taggun_scan_receipt_url). POST /api/receipt/v1/{simple|verbose}/encoded.
| Argument | Type | Description |
|---|---|---|
| near | string | A location (city, state, country) that helps identify the merchant. |
| detail | string | simple (default) = totals, tax, date and merchant. verbose = also line items, payment type, per-field metadata and enabled fraud/feature fields. |
| filename | string | File name, for example receipt.jpg (default derived from content_type). |
| language | string | Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection. |
| keep_stored | boolean | Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt. |
| content_type* | string | The file's media type. |
WRITE: this scan counts against YOUR Taggun quota and plan (free for the first 30 days or 1,000 scans, then billed per scan by Taggun), even if the receipt fails validation; it is never retried automatically. Document content is not logged by this server. Extract structured data (merchant, date, total, tax, and in verbose mode line items) from a receipt or invoice at a public https URL (JPEG, PNG, GIF, HEIF/HEIC or PDF up to 5 pages, max 20 MiB). The URL must be a public host name: no IP addresses, localhost, internal names, credentials or non-default ports. POST /api/receipt/v1/{simple|verbose}/url.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public https URL of the receipt or invoice file. |
| near | string | A location (city, state, country) that helps identify the merchant. |
| detail | string | simple (default) = totals, tax, date and merchant. verbose = also line items, payment type, per-field metadata and enabled fraud/feature fields. |
| language | string | Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection. |
| keep_stored | boolean | Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt. |
| extract_time | boolean | true = return the time of day when found on the receipt (otherwise 12:00:00). |
WRITE: this scan counts against YOUR Taggun quota and plan (free for the first 30 days or 1,000 scans, then billed per scan by Taggun), even if the receipt fails validation; it is never retried automatically. Document content is not logged by this server. Scan a receipt at a public https URL and check it against the rules of a campaign stored on your Taggun account (dates, merchants, products, balance owing, fraud checks). Returns pass/fail with reasons. Needs the Campaign Validation feature on your Taggun plan; use taggun_list_campaigns for the ids. Same URL rules as taggun_scan_receipt_url. POST /api/validation/v1/campaign/receipt-validation/url.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public https URL of the receipt or invoice file. |
| near | string | A location (city, state, country) that helps identify the merchant. |
| language | string | Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection. |
| campaign_id* | string | A campaign id from taggun_list_campaigns. |
| keep_stored | boolean | Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"campaign_id",
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 8,
"description": "Public https URL of the receipt or invoice file."
},
"near": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A location (city, state, country) that helps identify the merchant."
},
"language": {
"type": "string",
"pattern": "^[A-Za-z-]+$",
"maxLength": 10,
"minLength": 2,
"description": "Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection."
},
"campaign_id": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "A campaign id from taggun_list_campaigns."
},
"keep_stored": {
"type": "boolean",
"description": "Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt."
}
}
}| extract_time |
| boolean |
| true = return the time of day when found on the receipt (otherwise 12:00:00). |
| image_base64* | string | The file content, base64-encoded (a data: URL prefix is accepted). |
| extract_line_items | boolean | Verbose only: false = skip line-item extraction (default true). |
| ignore_merchant_name | string | A name to ignore if detected as the merchant, such as a customer name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"image_base64",
"content_type"
],
"properties": {
"near": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A location (city, state, country) that helps identify the merchant."
},
"detail": {
"enum": [
"simple",
"verbose"
],
"type": "string",
"description": "simple (default) = totals, tax, date and merchant. verbose = also line items, payment type, per-field metadata and enabled fraud/feature fields."
},
"filename": {
"type": "string",
"maxLength": 120,
"description": "File name, for example receipt.jpg (default derived from content_type)."
},
"language": {
"type": "string",
"pattern": "^[A-Za-z-]+$",
"maxLength": 10,
"minLength": 2,
"description": "Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection."
},
"keep_stored": {
"type": "boolean",
"description": "Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt."
},
"content_type": {
"enum": [
"image/jpeg",
"image/png",
"image/gif",
"image/heic",
"image/heif",
"application/pdf"
],
"type": "string",
"description": "The file's media type."
},
"extract_time": {
"type": "boolean",
"description": "true = return the time of day when found on the receipt (otherwise 12:00:00)."
},
"image_base64": {
"type": "string",
"maxLength": 2000200,
"minLength": 16,
"description": "The file content, base64-encoded (a data: URL prefix is accepted)."
},
"extract_line_items": {
"type": "boolean",
"description": "Verbose only: false = skip line-item extraction (default true)."
},
"ignore_merchant_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A name to ignore if detected as the merchant, such as a customer name."
}
}
}| extract_line_items | boolean | Verbose only: false = skip line-item extraction (default true). |
| ignore_merchant_name | string | A name to ignore if detected as the merchant, such as a customer name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 8,
"description": "Public https URL of the receipt or invoice file."
},
"near": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A location (city, state, country) that helps identify the merchant."
},
"detail": {
"enum": [
"simple",
"verbose"
],
"type": "string",
"description": "simple (default) = totals, tax, date and merchant. verbose = also line items, payment type, per-field metadata and enabled fraud/feature fields."
},
"language": {
"type": "string",
"pattern": "^[A-Za-z-]+$",
"maxLength": 10,
"minLength": 2,
"description": "Optional language hint (en, ar, kh, th, he, ...). Leave out for automatic detection."
},
"keep_stored": {
"type": "boolean",
"description": "Default false: the document and its extracted data are NOT stored by Taggun (incognito). true = Taggun stores them (up to 3 years), which enables later duplicate/similarity detection but keeps personal data from the receipt."
},
"extract_time": {
"type": "boolean",
"description": "true = return the time of day when found on the receipt (otherwise 12:00:00)."
},
"extract_line_items": {
"type": "boolean",
"description": "Verbose only: false = skip line-item extraction (default true)."
},
"ignore_merchant_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A name to ignore if detected as the merchant, such as a customer name."
}
}
}