Skip to main content
Glama
727,289 tools. Updated 2026-10-31 03:32

"A server for finding PDF documents" matching MCP tools:

  • Convert a PDF into structured content (tables, charts, formulas, headings, body text) using a two-stage pipeline (layout detection, then a vision-language model) rather than a single VLM call on the raw PDF -- calling a VLM on a raw PDF directly is a known-unreliable pattern for numeric tables. Measured accuracy (500-page real-world benchmark of government/corporate reports, ~51,000 table values checked): tables 95.2% digit-exact, body text 88.8%. This tool reads PDFs a VLM cannot read directly, including scanned pages and PDFs with corrupted/garbled text layers (common in older Japanese academic PDFs). For scanned Japanese documents the numbers hold up (99.4% on the same benchmark). For scanned Arabic, body text does NOT: characters are dropped mid-sentence and quantities can turn into different quantities, so body blocks from scanned Arabic are always flagged confidence:"estimated" -- tables in the same documents stayed exact in our measurement. Strong on Japanese-language documents specifically; the accuracy figures above were measured on Japanese material and are not a claim about every language. Chart values are extracted but are best-effort estimates (about 52% exact match, excluding axis tick labels) and are always flagged confidence:"estimated" in the result -- do not treat estimated chart numbers as authoritative. This is a PAID, ASYNCHRONOUS, per-page-billed operation: credits are reserved from the caller's PDFIntact balance before processing starts, and the response's _meta.credits_remaining shows the balance right after reservation. Processing takes real wall-clock time (roughly 7 seconds/page; a 500-page PDF takes about 42 minutes including a multi-minute cold start), so this tool returns a job_handle immediately without waiting -- call get_result with that job_handle to poll for completion instead of calling convert_pdf again. Always pass idempotency_key; reuse the exact same value if you retry the same request, otherwise retries can double-charge and double-process. Provide the PDF either as a public https URL (source.type="url", up to ~200MB) or inline base64 (source.type="base64", up to ~20MB) -- prefer the URL form for large files. Requires sign-in (OAuth): this session is not authenticated, so calling this tool will fail until the PDFIntact account is connected and authorized.
    ConnectorNo auth
  • Generate compliant e-invoice XML from a JSON invoice, in either EN 16931 syntax. Profiles: en16931, xrechnung-ubl, peppol-bis-3, xrechnung-cii, facturx-en16931 — the profile chooses the syntax, and xrechnung-cii and facturx-en16931 come back as CII. The invoice is validated first and generation is refused if it fails, because emitting XML for an invalid invoice produces a file that passes nothing. CREDIT NOTES GENERATE TOO, from the same object: invoiceTypeCode "381" emits a UBL CreditNote document under the UBL profiles and ram:TypeCode 381 under the CII ones, since CII has one document for both. XML ONLY, NEVER A PDF: Factur-X and ZUGFeRD files are CII XML inside a PDF/A-3 container, and this tool builds no container, so a facturx-en16931 result is the payload and not a Factur-X document — do not tell the user otherwise. If they need the PDF itself, no tool here returns one; the HTTP API does, on every plan: POST https://api.attestwire.com/v1/generate?format=pdf with the same invoice and profile facturx-en16931 returns a Factur-X / ZUGFeRD PDF (EN 16931 profile), with the CII XML inside as factur-x.xml, watermarked "not for sending" on the free plan and clean on a paid one. On xrechnung-cii the generator's own FIXTURE documents were run through the official KoSIT validator on release and accepted; on facturx-en16931 they were not, because that profile's BT-24 matches no XRechnung scenario for the validator to judge. Neither is a verdict on the document you just generated — nothing is sent to KoSIT at call time, so never call it "KoSIT-validated". REQUIRES AN API KEY and costs 1 document.
    ConnectorNo auth
  • Brings a PDF into the connected asksteps account and stores it as a form template, so the answers people give can later be written back into that exact document. Requires "pdf:write". Unlike asksteps_analyze_pdf this one KEEPS the file, counts against the account's PDF-form quota, and also handles scanned documents through text recognition. It does NOT create the form: which fields become questions is the user's decision. You get a link that resumes the import in the asksteps studio with this template — no second upload. Pass exactly one of pdf_url or pdf_base64.
    ConnectorNo auth
  • Merge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned.
    ConnectorNo auth
  • Merge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned.
    ConnectorNo auth
  • Hong Kong IPO / listing financing filings — the Global Offering prospectus and formal notice every company files with HKEX when it goes public or completes a placement. Answers "recent HK IPOs", "HKEX biotech IPO financing", "which companies just listed on the Hong Kong Stock Exchange", "STAR/HK biotech listing documents". Sourced from HKEXnews disclosure filings titled "GLOBAL OFFERING" — covers every industry, not biotech-specific, so filter with `query` (a company name) to find a particular listing. Returns the company, stock code, document category (Listing Documents = the prospectus PDF, or Announcements and Notices = the formal notice for the same event), filing date and PDF link. HKEX Main Board / GEM only — an A-share STAR Market (科创板) IPO is a different exchange, see cninfo_disclosure_search.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready Model Context Protocol server that bridges local document management with cloud synchronization (Notion) for AI agent integration, enabling seamless access and sync of local and cloud documents.
    48 npm
    MIT

Matching MCP Connectors

  • Search and read UK guides on solar PV, heat pumps, batteries and MCS certification.

  • Congressional Documents — full-text search and retrieval over the official record of Congress…

  • Convert HTML or Markdown to a pixel-perfect PDF. Returns JSON: { url } — a temporary download URL (valid ~1 hour). Great for generating invoices, reports, receipts, or formatted documents programmatically. Supports full HTML/CSS including tables, images (base64 or URL), and inline styles. For Markdown input, set format='markdown'. 50 sats per conversion. Use convert_file instead for converting existing files between formats (e.g., DOCX→PDF). Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='convert_html_to_pdf'.
    ConnectorNo auth
  • Enumerate vault documents without FTS — for browsing by type or paginating. Requires Authorization: Bearer <edit token or friend token>. Friend tokens see only their scoped doc_types; access:private is invisible. Args: {doc_type?: string filter (note/pdf/literatura/calendar_event/...), limit?: int 1-200 default 50, offset?: int default 0}. Returns [{slug, title, doc_type, created_at, chunk_count}]. Vault offline ⇒ {status:offline}.
    ConnectorNo auth
  • Convert HTML and CSS to a PDF document using the WeasyPrint rendering engine. Supports every PDF/A archival level, PDF/UA accessibility and the PDF/X print standards. Best for professional documents: invoices, reports, certificates, contracts, and accessible documents. Also produces **fillable PDF forms** — set pdfForms to true. Send a complete HTML document including <html>, <head> with <style>, and <body> tags. Page geometry comes from the document's own CSS @page rule unless paperSize or orientation is set explicitly. Returns a temporary download URL for the generated PDF (valid for 30 minutes). Requires a paid PdfBroker.io plan (Starter or above). EU-first defaults: A4 paper, Portrait orientation when neither the document nor the caller says otherwise.
    ConnectorNo auth
  • Prepare a form from documents: a proposal of every answer with its source, what is missing, and where documents disagree, before writing, plus attachments for a package. Same inputs as fill_form_from_context (form_id for a form already in the library, or pdf_url/pdf_base64 for a new one, plus context_text and/or context_urls), but nothing is written into the PDF: read the proposal, answer what is missing, then commit. policy is safe (write high and medium confidence) or strict (high only). Returns a job_id and a proposal_id; poll get_job about every 20 seconds. Billed as one context fill; the first 5 each month are free. Optional retention: ephemeral or account_default (default: the account's own setting); it applies only when this call creates the form (pdf_url, pdf_base64 or library), since an existing form keeps the setting it was created with. Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form. Pass dry_run=true to rehearse this call without doing it: nothing is stored, charged or sent, and no AI is used. The answer says whether the real call would succeed or be refused, what it would cost, and what a rehearsal cannot check.
    ConnectorOAuth
  • Lists the organisation's captured documents (each row is one stored artifact — a PDF/image attachment or a rendered email body), newest first. status tells you where each is in the evidence pipeline: processing (being extracted), matched (attached to a transaction — matched_event_id says which), awaiting_transaction (no matching bank debit yet; re-checked nightly), match_ambiguous (a PROPOSAL awaiting a decision — proposal.candidate_ids are the possible transactions and proposal.reason says why it was not auto-attached: multi_candidate, fx_band, dkim_fail, or first_sender — the sender domain has no previously confirmed evidence in this org yet, so confirming once establishes continuity for future auto-attaches), extraction_failed, too_large, unsupported. Resolve proposals by calling attach_document with the right candidate. Results are the NEWEST `limit` rows (max 200); total_count may exceed files.length — narrow with the status filter to reach older rows. Documents NEVER create bookings — they are evidence attached to the bank record.
    ConnectorOAuth
  • Demonstrate the engine on bundled synthetic samples only; never checks a user's invoice. Use for product evaluation without a key. To check a supplied document, choose validate_invoice. Choose sample=valid to inspect a passing CII invoice or sample=invalid to see the missing-buyer-name finding. Both use the production XSD and EN 16931 engine; results may be cached for 24 hours for the same engine version and input. Inspect validated_at and cached; a cache hit is not a fresh run. Call with {} to validate the passing sample, or sample=downloads for PDF/CII/UBL files and the published report. Accepts no document data, URLs or extra arguments. No PDF or business-register checks in live mode. Shared rate limits return a retryable tool error; unavailable checks never become a passing result. Use explain_finding for a returned rule id. Your own invoices require validate_invoice with a verified-account trial, prepaid or monthly-plan key. Nothing is stored except reports for these public fixtures.
    ConnectorAPI key
  • Render one PDF per row of data with a built-in template, and return a PNG preview and a PDF download link for each document. Use when the user has a spreadsheet, table, CSV or list and wants a certificate of completion, letter, donation receipt or job offer letter for each row. Get the field keys from list_document_templates, map the user's columns onto them, and pass each row as an object keyed by field key; values must be text, numbers, true/false or null; a text value may hold at most 2000 characters unless list_document_templates gives a different limit for that field. Renders up to 25 rows per call and up to 50 documents per month for each user (in Claude, each conversation); callers the service cannot tell apart, such as all Claude users together, also share one monthly limit. The response says how many documents remain this month (or that the month's limit is shared with other users) and when the count resets. Rows missing a required field are reported in missing_fields. Preview and PDF links expire after one hour. This tool only fills the built-in templates; it does not accept HTML or custom designs.
    ConnectorNo auth
  • Add a document to a company's or pitch's data room, the same place the web app's file upload lands: a memo you wrote, a call transcript, a small file the user handed you. Give exactly one of text (plain text or markdown saved as the document itself) or content (the file's bytes, base64-encoded — small files only, since every byte spends context). For a deck or document that lives at a link, don't upload it: set deck_url with update_company, the way the web app records a linked deck. Allowed types: documents (PDF, Office, text, markdown, CSV) and images. PDFs, Office docs, and images are text-extracted afterwards so search can read them; a multi-page PDF added to a pitch also re-runs its deck analysis. Company or pitch by slug from list_companies / list_pitches / search_companies.
    ConnectorAPI key
  • Get a place to upload a PDF file. Use it when the document is a file, not text: a PDF you made with a file skill (your sandbox usually cannot reach Portant, so do not send it as base64), a PDF the user has, or any PDF over 1 MB. In Claude and ChatGPT, the Portant card shown with this result has an upload area: ask the user to download the file if needed and drop it there. The card then tells you the upload_id. If you can run shell commands and have the file, PUT it instead, for example: curl -T file.pdf -H "Content-Type: application/pdf" <upload_url> (add the same Authorization header you use for Portant, if any). Then pass upload_id to send_for_signature. PDF only: save a Word file as PDF first.
    ConnectorOAuth
  • Use this when the user wants a PDF or an image (bank statement, invoice, table, scanned page) turned into an Excel spreadsheet or plain text. Pass the file uploaded in the chat as `file`, or a direct public HTTPS link as `file_url`. Set document_type to bank_statement for bank or card statements. Uses 1 page of the user's myocr.app balance per PDF page (refunded if the conversion fails). Starts a background job and returns its job_id: then call get_conversion_status. Do not use it to summarize, translate or edit documents.
    ConnectorOAuth
  • Put the user's resume on their GetMattered account as the base every application is tailored from. Pass exactly one: resume_text (the full text), resume_url (an https link to a PDF, DOCX or plain text file, up to 10 MB), or document_id (one of their saved resumes, from getmattered_get_account). A new upload is read by AI and costs about 300 of the user's AI tokens (a new account starts with 10,000); switching to a saved resume with document_id is free. It also finishes account setup, so GetMattered starts finding jobs for them. Use it when getmattered_get_account shows no resume on file, or when the user gives a new one. Do not use it to rewrite or score a resume; use getmattered_optimize_resume or getmattered_score_resume. Next: getmattered_get_matches. In ChatGPT the user can attach a resume file; pass it as resume_file. It replaces the user's current base resume (the old one stays in their documents), so call it only when the user wants this resume used.
    Connector
    Destructive
    No auth
  • Put the user's resume on their GetMattered account as the base every application is tailored from. Pass exactly one: resume_text (the full text), resume_url (an https link to a PDF, DOCX or plain text file, up to 10 MB), or document_id (one of their saved resumes, from getmattered_get_account). A new upload is read by AI and costs about 300 of the user's AI tokens (a new account starts with 10,000); switching to a saved resume with document_id is free. It also finishes account setup, so GetMattered starts finding jobs for them. Use it when getmattered_get_account shows no resume on file, or when the user gives a new one. Do not use it to rewrite or score a resume; use getmattered_optimize_resume or getmattered_score_resume. Next: getmattered_get_matches. In ChatGPT the user can attach a resume file; pass it as resume_file. It replaces the user's current base resume (the old one stays in their documents), so call it only when the user wants this resume used.
    Connector
    Destructive
    No auth
  • Send a PDF for legally binding signature, or leave it as a Draft for a human to approve. Immediate send costs 1 credit. Provide the PDF either as document_base64 OR as a public https document_url (max 10MB). recipients = [{"name": "...", "email": "...", "role": "signer"}]. Each recipient gets a signing email; poll get_envelope_status for progress. Requires `Authorization: Bearer zs_...`. auto_send defaults true (existing one-tool send). Set auto_send=false or draft=true to create a Draft: status Draft, no credit debit, no invite emails. draft=true always wins if both flags are set. Then a human Approves/Sends in the dashboard, or call send_draft. Immediate send: the PDF is REJECTED unless it contains signing-field placeholder tags. For an untagged PDF (no zSign field tags), call prepare_document first to place the fields, call it again with that prepare_id and approve true when the response has no PDF, then send the pdf_base64 it returns as document_base64. Draft mode accepts an untagged PDF (human places fields) or optional `fields`. zSign field placeholder syntax: - Format: {type:party:name} -- add * after the type to mark the field required, e.g. {signature*:signer} - On upload, a tag or PDF form field with no explicit required marker is required when the account's fields_required_by_default is true (the default) and optional when it is false; a * is always required. A JSON field list stores the required boolean you send (default false) and does not apply this setting. - Types: signature, initials, text, date, radio - party must exactly match the recipient's "role" value passed when sending (MCP default role is "signer") - name is optional for signature/initials/date and REQUIRED for text fields; letters, digits, and underscores only - radio fields take FOUR parts: {radio:party:group:option}. Every tag sharing a party and group forms one exclusive set -- the signer picks exactly one, and the chosen option is the value reported back. Mark the set required with {radio*:...} on any of its tags. group is letters/digits/underscores; option may also contain spaces and hyphens - radio tags must be visible text in the PDF body -- they cannot be the name of a PDF form field - Keep each tag on a single line in a standard font -- a tag split across lines is not detected - The tag's position in the document becomes the field's position; the signed value is drawn over it, and the tag itself is deleted when you upload -- signers never see it, and it is not in the completed document - Tags can be visible text in the PDF body, or the name of a PDF form field / annotation (except radio, which must be visible text) Examples: {signature*:signer}, {initials:signer}, {text*:signer:full_name}, {date:signer:signed_on} Radio (visible text only): {radio*:signer:plan:Option 1}, {radio*:signer:plan:Option 2} Sample PDF: https://storage.googleapis.com/zsign-public/simple_contract_1.pdf Docs: https://zsign.io/docs/api metadata is an optional flat object of string keys/values (max 50 keys) echoed back in every webhook for this envelope -- use it to carry your own record ids. Set revision_of to the source document_id to use its one-time free resend after changes are requested while the promotion is enabled. sequential (default true): recipients sign one at a time in list order. Set false so everyone can sign at once. Same flag as REST POST /api/v1/documents/send sequential. documents: list of `{filename, document_base64 | document_url, name?}` to send several PDFs as ONE envelope (one credit, shared recipients, one signing link per signer; at most 10). Mutually exclusive with document_base64/document_url. An encrypted or password-protected PDF is a 422 with code pdf_encrypted and is not charged.
    ConnectorOAuth
  • Get the private link to the PDF of the user's base resume, the resume on file that every application is tailored from. Uploaded DOCX and text resumes are stored as a rendered PDF, so every base resume has one. The link opens the user's GetMattered documents page, which needs their sign-in, and the PDF downloads from there. Read-only: it creates nothing, shares nothing and spends no credits. When no resume is on file, the answer says so. Do not use it to make the resume public; use getmattered_share_resume_pdf. Next: getmattered_get_matches to find jobs for this resume.
    ConnectorNo auth
  • Get the private link to the PDF of the user's base resume, the resume on file that every application is tailored from. Uploaded DOCX and text resumes are stored as a rendered PDF, so every base resume has one. The link opens the user's GetMattered documents page, which needs their sign-in, and the PDF downloads from there. Read-only: it creates nothing, shares nothing and spends no credits. When no resume is on file, the answer says so. Do not use it to make the resume public; use getmattered_share_resume_pdf. Next: getmattered_get_matches to find jobs for this resume.
    ConnectorNo auth