docs

Documents and web for AI agents: PDF parse, OCR, web extract, invoice checks. x402, no API key.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
94%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,933Tokens (tool definitions)
~3.0 KBTypical response size
Significant attention impact (3.85% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "docs": {
      "url": "https://mart402.com/mcp/docs"
    }
  }
}

Remote endpoints

https://mart402.com/mcp/docsstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_catalog

Mart402 product catalog: all products, prices, payment config, error codes, rate limits. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢quote_parse(url)

Free quote for PDF parsing: page count, route (text/scan-OCR) and the exact final price, before any payment. Use the returned quote_id with parse_document (on /mcp or /mcp/docs).

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "PDF URL"
    }
  },
  "required": [
    "url"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢get_receipt(receipt_id)

Re-fetch a previously paid result for free by receipt id (every paid response carries receipt_id).

Input Schema

{
  "type": "object",
  "properties": {
    "receipt_id": {
      "type": "string",
      "description": "receipt_id from a paid response (rcpt_...)"
    }
  },
  "required": [
    "receipt_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢get_sample(product)

Free recorded sample response for a paid product (from real production runs, marked sample:true) - see the exact response shape before paying anything. Available: document-pipeline, enrich, extract, jp-bonus-net, jp-business-days, jp-company, jp-consumption-tax, jp-crypto-tax, jp-dependent-threshold, jp-mortgage, jp-overtime-wage, jp-payroll-net, jp-payroll-suite, jp-payslip-audit, jp-retirement-tax, jp-social-insurance, meal-vision, ocr, parse, pdf-info, pdf-merge, pdf-pages, portrait-analysis, report-pack, structured, style-profile, style-report, verify.

Input Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "enum": [
        "document-pipeline",
        "enrich",
        "extract",
        "jp-bonus-net",
        "jp-business-days",
        "jp-company",
        "jp-consumption-tax",
        "jp-crypto-tax",
        "jp-dependent-threshold",
        "jp-mortgage",
        "jp-overtime-wage",
        "jp-payroll-net",
        "jp-payroll-suite",
        "jp-payslip-audit",
        "jp-retirement-tax",
        "jp-social-insurance",
        "meal-vision",
        "ocr",
        "parse",
        "pdf-info",
        "pdf-merge",
        "pdf-pages",
        "portrait-analysis",
        "report-pack",
        "structured",
        "style-profile",
        "style-report",
        "verify"
      ],
      "description": "One of: document-pipeline, enrich, extract, jp-bonus-net, jp-business-days, jp-company, jp-consumption-tax, jp-crypto-tax, jp-dependent-threshold, jp-mortgage, jp-overtime-wage, jp-payroll-net, jp-payroll-suite, jp-payslip-audit, jp-retirement-tax, jp-social-insurance, meal-vision, ocr, parse, pdf-info, pdf-merge, pdf-pages, portrait-analysis, report-pack, structured, style-profile, style-report, verify. Product id (see the enum)"
    }
  },
  "required": [
    "product"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢extract_url(url, mode, ttl, x_payment)

Extract a web page to clean Markdown + metadata (auto JS rendering, robots.txt respected). $0.005 fast / $0.01 rendered; cached results half price. Choose this when you need a web PAGE as clean Markdown to read yourself; to fill a schema use structured_extract, for a PDF use pdf_info then parse_document.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the input (web page or PDF, per tool)"
    },
    "mode": {
      "type": "string",
      "enum": [
        "auto",
        "fast",
        "heavy"
      ],
      "default": "auto",
      "description": "Extraction mode: auto (fast with rendered fallback), fast, heavy"
    },
    "ttl": {
      "type": "integer",
      "default": 86400,
      "description": "cache seconds (0 = no cache)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "url"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢parse_document(url, quote_id, x_payment)

Parse a PDF to structured Markdown (hallucination-guarded OCR for scanned pages, Japanese-strong). Pass url (one step: the 402 quotes the exact price for that PDF) or quote_id from quote_parse (price fixed by the quote). One of the two is required. Choose this when the input is a PDF and you want its full text as Markdown; call pdf_info first if you do not know whether it is scanned, and use document_pipeline instead for invoices you also want verified.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the PDF (one-step form)"
    },
    "quote_id": {
      "type": "string",
      "description": "quote_id returned by quote_parse (price is fixed by the quote)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "url",
    "quote_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢ocr_image(image_url, image_base64, lang, x_payment)

OCR one image to text with dual-engine consensus, calibrated confidence and per-segment corroboration. Japanese-strong. Flat $0.05/image. Choose this when the input is an IMAGE (photo, screenshot, receipt); for PDFs use parse_document.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "japanese",
        "latin"
      ],
      "default": "japanese",
      "description": "One of: japanese, latin. Expected script for OCR: japanese or latin"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "image_url",
    "image_base64"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢verify_invoice(fields, line_items, x_payment)

Verify extracted invoice fields: arithmetic consistency, line-item totals, JP registration number check-digit + corporate-number existence observation (official Japan NTA registry), accounting-ready JSON. $0.015/call. Choose this when you already HAVE invoice fields (from your own extraction) and only need them checked; to start from a PDF use document_pipeline.

Input Schema

{
  "type": "object",
  "properties": {
    "fields": {
      "type": "object",
      "description": "Extracted invoice fields: total_jpy, tax_jpy, reg_no, invoice_no, issue_date, due_date, vendor, customer"
    },
    "line_items": {
      "type": "array",
      "description": "Optional line items [{description, amount_jpy}] to reconcile against the subtotal"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "fields"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪enrich_company(company, country_hint, x_payment)

Company name/domain/URL to a verified profile from primary sources + GLEIF LEI and Japan NTA corporate-number registries. Per-field evidence + confidence, honest nulls; unresolved lookups never charged. $0.03/company. Choose this when you have a company NAME or DOMAIN and need a registry-grounded profile (GLEIF LEI / Japan NTA) with per-field evidence; pass country_hint 'jp' for Japanese companies.

Input Schema

{
  "type": "object",
  "properties": {
    "company": {
      "type": "string",
      "description": "Company name, domain or URL"
    },
    "country_hint": {
      "type": "string",
      "description": "ISO country hint for registry lookups, e.g. 'jp'"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "company"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢structured_extract(url, schema, instructions, x_payment)

Fill YOUR JSON schema from any URL (hybrid LLM + deterministic canonicalization). $0.03/call. Choose this when you have your OWN JSON schema to fill from any page; for company profiles use enrich_company or jp_company_profile.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the input (web page or PDF, per tool)"
    },
    "schema": {
      "type": "object",
      "description": "{key: description} pairs"
    },
    "instructions": {
      "type": "string",
      "description": "optional extra guidance for filling the schema"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "url",
    "schema"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢document_pipeline(url, enrich, x_payment)

One call: PDF invoice to parse (hallucination-guarded OCR) + field extraction + arithmetic verification (+optional issuer enrich). Flat $0.05/document; inputs validated before payment. Choose this when a PDF is an invoice/receipt and you want parse + field extraction + arithmetic verification in one paid call; for text only use parse_document.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the input (web page or PDF, per tool)"
    },
    "enrich": {
      "type": "boolean",
      "default": false,
      "description": "Also run issuer enrichment on the parsed invoice"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "url"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪pdf_merge(urls, x_payment)

Merge 2-10 PDFs into one, in order. Deterministic, $0.003.

Input Schema

{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of absolute PDF URLs, in order (2-10)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "urls"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢pdf_pages(url, pages, x_payment)

Extract pages from a PDF by 1-based ranges (e.g. 1-3,7) into a new PDF. Deterministic, $0.002.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the input (web page or PDF, per tool)"
    },
    "pages": {
      "type": "string",
      "description": "1-based page ranges, e.g. '1-3,7'"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "url",
    "pages"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢pdf_info(url, x_payment)

PDF facts before you pay for parsing: pages, metadata, per-page text volume, scanned-or-not estimate. $0.001. Choose this first for any unknown PDF (cheapest real call); then parse_document, pdf_pages or document_pipeline.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Absolute http(s) URL of the input (web page or PDF, per tool)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [
    "url"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools