AIDataParser
by shibley · remote · no sign-in to list tools · v0.2.0 · published by GitHub user shibley
PDFs, images and messy text to schema-guaranteed JSON. try_parse runs a real extraction, no key.
9 tools: 6 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http aidataparser https://aidataparser.com/v1/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnbuy_credits
The server marks "buy_credits" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
9 tools
Changes things 6Claude Code: ask
buy_creditsGet a Stripe checkout link for a one-time credit pack, to hand to the user.Reads text others write1 finding
Why it is in this group
- The description's first verb is "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "buy_credits" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "get": a word for reading.
Description, as the server wrote 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_api_keyStart here if you do not have an AIDataParser API key.No findings
Why it is in this group
- The name "create_api_key" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
infer_schemaGiven one sample document's `text`, propose a reusable JSON Schema for that document type.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
parse_documentExtract clean, schema-guaranteed JSON from a PDF or image.Reads text others writeCan send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
parse_textExtract clean, schema-guaranteed JSON from raw/messy text you already have — scraped web content, email bodies, chat logs, OCR output, or pasted tables.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
try_parseRun a REAL extraction with no API key, no email and no signup, so you can see the output shape before committing to anything.No findings
Why it is in this group
- The description's first verb is "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 3Claude Code: allow
check_creditsReturn the number of extraction credits remaining on the authenticated API key.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Return the number of extraction credits remaining on the authenticated API key. Free — does not consume a credit.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_schemasReturn 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.Reads private dataNo findings
Why it is in this group
- The name "list_schemas" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "document": it reads documents.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
validateCheck 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.No findings
Why it is in this group
- The name "validate" says "validate": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
2 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write2
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__aidataparser__parse_document"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 0.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http aidataparser https://aidataparser.com/v1/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__aidataparser__validate",
"mcp__aidataparser__check_credits",
"mcp__aidataparser__list_schemas"
],
"ask": [
"mcp__aidataparser__try_parse",
"mcp__aidataparser__create_api_key",
"mcp__aidataparser__parse_document",
"mcp__aidataparser__parse_text",
"mcp__aidataparser__infer_schema",
"mcp__aidataparser__buy_credits"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as aidataparser. Review it before you use it.
Capability tags behind 3 rules
- mcp__aidataparser__parse_document untrusted-input, outbound
- mcp__aidataparser__list_schemas private-data
- mcp__aidataparser__buy_credits untrusted-input
