PDFs, images and messy text to schema-guaranteed JSON. try_parse runs a real extraction, no key.
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.
Get a Stripe checkout link for a one-time credit pack, to hand to the user. Packs: `starter` $9 for 500 credits, `growth` $29 for 2,000 credits, `scale` $99 for 10,000 credits. Credits never expire; 1 credit per document. If this server has an API key set, the credits land on that key's account. Without a key, pass the user's `email` (ask them; do not invent one) — the page after payment shows their new API key. Creating the link charges nothing; the user pays on Stripe's page.
Which pack. Defaults to starter.
The user's email. Required only when no API key is set on this server; ignored when one is.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Get a Stripe checkout link for a one-time credit pack, to hand to the user. Packs: `starter` $9 for 500 credits, `growth` $29 for 2,000 credits, `scale` $99 for 10,000 credits. Credits never expire; 1 credit per document. If this server has an API key set, the credits land on that key's account. Without a key, pass the user's `email` (ask them; do not invent one) — the page after payment shows their new API key. Creating the link charges nothing; the user pays on Stripe's page.
| Argument | Type | Description |
|---|---|---|
| pack | string | Which pack. Defaults to starter. |
| string | The user's email. Required only when no API key is set on this server; ignored when one is. |
{
"type": "object",
"properties": {
"pack": {
"enum": [
"starter",
"growth",
"scale"
],
"type": "string",
"description": "Which pack. Defaults to starter."
},
"email": {
"type": "string",
"description": "The user's email. Required only when no API key is set on this server; ignored when one is."
}
}
}Return the number of extraction credits remaining on the authenticated API key. Free — does not consume a credit.
No arguments.
{
"type": "object",
"properties": {}
}Start here if you do not have an AIDataParser API key. Provide the user's `email` and receive a live adp_live_ API key with 50 free credits — no card, no signup form. Configure it on this MCP server as `Authorization: Bearer <api_key>` to unlock parse_document, parse_text and infer_schema. The key is returned ONCE and is never shown again, so surface it to the user and store it. Ask the user for their address; do not invent one. Free — does not consume a credit.
| Argument | Type | Description |
|---|---|---|
| email* | string | The user's email address. The account and its free credits belong to this address; an address that already has an account is refused rather than issued a second key. |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "The user's email address. The account and its free credits belong to this address; an address that already has an account is refused rather than issued a second key."
}
}
}Given one sample document's `text`, propose a reusable JSON Schema for that document type. Use this when no built-in schema_id fits: infer a schema once, review it, then reuse it as `schema` on parse_document / parse_text across many documents for consistent output. Returns the JSON Schema plus a flat field list and an inferred doc_type. Costs 1 credit per successful call.
| Argument | Type | Description |
|---|---|---|
| text* | string | A single representative sample of the document type, as text. |
| doc_type | string | Optional hint for what kind of document this is, e.g. "purchase order", "lab report". |
| instructions | string | Optional guidance on which fields matter or how to shape the schema. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "A single representative sample of the document type, as text."
},
"doc_type": {
"type": "string",
"description": "Optional hint for what kind of document this is, e.g. \"purchase order\", \"lab report\"."
},
"instructions": {
"type": "string",
"description": "Optional guidance on which fields matter or how to shape the schema."
}
}
}Return the built-in schema templates you can pass to parse_document as `schema_id` (invoice, receipt, resume, etc.), each with its id and the fields it extracts. Free — does not consume a credit and needs no API key.
No arguments.
{
"type": "object",
"properties": {}
}Extract clean, schema-guaranteed JSON from a PDF or image. Provide the document via `url` or `base64`. Pass an optional JSON `schema` to constrain the output shape, and `instructions` to guide extraction. Returns the extracted data plus a confidence score and a review_needed flag. Costs 1 credit per successful call.
| Argument | Type | Description |
|---|---|---|
| url | string | Public http(s) URL of the PDF or image to parse. |
| base64 | string | Base64-encoded document bytes (alternative to `url`). Provide `media_type` alongside it. |
| redact | boolean | When true, PII (emails, SSNs, card numbers, phones, etc.) is masked in the output before it leaves the server. |
| schema | object | Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it. |
| schema_id | string | Optional named template to use instead of a hand-written schema, e.g. "invoice", "receipt", "resume". Call the list_schemas tool for the full set. Ignored when `schema` is provided. |
| media_type | string | MIME type for `base64` input, e.g. application/pdf, image/png, image/jpeg. |
| instructions | string | Optional natural-language guidance for what to extract. |
Extract clean, schema-guaranteed JSON from raw/messy text you already have — scraped web content, email bodies, chat logs, OCR output, or pasted tables. Pass the text in `text`. Use this instead of parse_document when you don't have a file. Optional JSON `schema` (or `schema_id`) constrains the output shape and `instructions` guides extraction. Returns the extracted data plus a confidence score and a review_needed flag. Costs 1 credit per successful call.
| Argument | Type | Description |
|---|---|---|
| text* | string | The raw text to extract structured data from. |
| redact | boolean | When true, PII (emails, SSNs, card numbers, phones, etc.) is masked in the output before it leaves the server. |
| schema | object | Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it. |
| schema_id | string | Optional named template to use instead of a hand-written schema, e.g. "invoice", "receipt", "resume". Call the list_schemas tool for the full set. Ignored when `schema` is provided. |
| instructions | string | Optional natural-language guidance for what to extract. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The raw text to extract structured data from."
},
"redact": {
"type": "boolean",
"description": "When true, PII (emails, SSNs, card numbers, phones, etc.) is masked in the output before it leaves the server."
},
"schema": {
"type": "object",
"description": "Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it."
},
"schema_id": {
"type": "string",
"description": "Optional named template to use instead of a hand-written schema, e.g. \"invoice\", \"receipt\", \"resume\". Call the list_schemas tool for the full set. Ignored when `schema` is provided."
},
"instructions": {
"type": "string",
"description": "Optional natural-language guidance for what to extract."
}
}
}Run a REAL extraction with no API key, no email and no signup, so you can see the output shape before committing to anything. Pass up to 4000 characters of messy text in `text` (an invoice, a receipt, a resume, scraped HTML, an email body) and optionally a `schema` or `schema_id` to constrain the result. Returns the same structured data, confidence and review_needed flag the paid tools return. Limited to 3 calls per caller per day — for real volume call create_api_key for 50 free credits, then use parse_text or parse_document.
| Argument | Type | Description |
|---|---|---|
| text* | string | The raw text to extract structured data from, up to 4000 characters. Send a representative excerpt rather than a whole corpus. |
| schema | object | Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it. |
| schema_id | string | Optional named template to use instead of a hand-written schema, e.g. "invoice", "receipt", "resume". Call list_schemas for the full set. Ignored when `schema` is provided. |
| instructions | string | Optional natural-language guidance for what to extract. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The raw text to extract structured data from, up to 4000 characters. Send a representative excerpt rather than a whole corpus."
},
"schema": {
"type": "object",
"description": "Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it."
},
"schema_id": {
"type": "string",
"description": "Optional named template to use instead of a hand-written schema, e.g. \"invoice\", \"receipt\", \"resume\". Call list_schemas for the full set. Ignored when `schema` is provided."
},
"instructions": {
"type": "string",
"description": "Optional natural-language guidance for what to extract."
}
}
}Check whether a JSON object conforms to a JSON `schema` (or a built-in `schema_id` template) and get back a valid flag plus per-field errors. Use this to verify data you already hold — a prior parse result, your own output, or an upstream feed — before acting on it or spending a credit. Deterministic, free, and needs no API key.
| Argument | Type | Description |
|---|---|---|
| data* | any | The JSON value to validate. |
| schema | object | JSON Schema to validate against. Takes precedence over schema_id. |
| schema_id | string | Built-in template id to validate against instead of a hand-written schema (invoice, receipt, resume, etc.). Call list_schemas for the full set. |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"description": "The JSON value to validate."
},
"schema": {
"type": "object",
"description": "JSON Schema to validate against. Takes precedence over schema_id."
},
"schema_id": {
"type": "string",
"description": "Built-in template id to validate against instead of a hand-written schema (invoice, receipt, resume, etc.). Call list_schemas for the full set."
}
}
}{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public http(s) URL of the PDF or image to parse."
},
"base64": {
"type": "string",
"description": "Base64-encoded document bytes (alternative to `url`). Provide `media_type` alongside it."
},
"redact": {
"type": "boolean",
"description": "When true, PII (emails, SSNs, card numbers, phones, etc.) is masked in the output before it leaves the server."
},
"schema": {
"type": "object",
"description": "Optional JSON Schema describing the exact output shape you want. When provided, the returned `data` conforms to it."
},
"schema_id": {
"type": "string",
"description": "Optional named template to use instead of a hand-written schema, e.g. \"invoice\", \"receipt\", \"resume\". Call the list_schemas tool for the full set. Ignored when `schema` is provided."
},
"media_type": {
"type": "string",
"description": "MIME type for `base64` input, e.g. application/pdf, image/png, image/jpeg."
},
"instructions": {
"type": "string",
"description": "Optional natural-language guidance for what to extract."
}
}
}