Skip to content

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.

Changes · 6

9 tools: 6 change things and 3 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "buy_credits" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "get": a word for reading.

    What this check looks for

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.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "get": a word for reading.

      What this check looks for
    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.
deny to break every path
{
  "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/mcp

Run 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.

.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