Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Backroom

PYPI · BACKROOM-MCP

Invoice extraction for agents: submit a PDF, get verified structured data — never a guess.

Available components

+2 this week 63 Trust /100

Last scanned (2 hours ago)

Scores higher than 59% of PyPI servers

Category Documents and Files

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • No malware found by supply-chain analysis.Pass
  • Known CVEs could not be checked: we could not find this package in its registry.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we could not find this package in its registry.Unverified
Provenance & Transparency0
Schema Quality & AI Usability74
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 671 tokens (~111/item across 6 items; 6 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Known CVEs: pass → unverified ▼ security
    • Install scripts: pass → unverified ▼ security
    • Stability: 0.20 → unverified ▼ security
    • Provenance: Provenance check failed: the registry has no such package, so there's no artefact to verify. security
    • The code this package runs automatically changed: its declared build backend security
    • Dependency health: 1.00 → unverified ▼ functional
    • Maintenance: pass → fail ▼ functional
    • License: License check failed: the registry has no such package, so no license can be read. functional
  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 0 to 3. That category is still filling its 30-day observation window: 0 days of observed history at the previous scan, 1 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Oct 26 60

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/backroom-mcp@0.1.1

Provenance Package not found

The registry answered that no such package exists, so no provenance could be looked up.

Result Package not found
Ecosystem pypi
Reason Metadata unavailable

Background: How many MCP packages publish verified provenance →

MCP tools · 6 exposed · ~598 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
check_health ~40

Check the Backroom API's health (no API key required). Returns the service status object, including model-provider availability, exactly as the API reports it.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_job ~96

Get an extraction job's state and terminal payload. While running, returns the job's state. When done, includes the outcome ("proposal", "needs_human", "failed", "duplicate"), the reason_code when the job ended without a proposal (for example NO_EXTRACTABLE_TEXT for a scan with no readable text), and the proposal_id when a proposal was issued.

NameTypeReqDescription
job_idintegeryes–

Structured output declared, but exposes no named fields.

No examples provided.

get_proposal ~128

Fetch an extraction proposal by id. FETCH EXACTLY ONCE. WARNING: the API purges the result on the first successful fetch (zero retention) — a second fetch of the same id returns 404. Keep everything this call returns; you cannot fetch it again. The proposal is returned exactly as the API serves it: every field is an object {value, status, confidence, provenance, reason} where status is "verified", "extracted", or "unclear". An unclear field has a null value — it was not guessed.

NameTypeReqDescription
proposal_idintegeryes–

Structured output declared, but exposes no named fields.

No examples provided.

get_usage ~46

Get the caller's usage meter for the current calendar month. Returns documents_used, the monthly cap, remaining documents, and the period covered, for the API key in BACKROOM_API_KEY.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

submit_invoice ~94

Submit an invoice PDF for extraction. Reads the local file at pdf_path and uploads it to Backroom. Returns the intake receipt: job_id (null when the submission was deduplicated against an earlier identical document), invoice_id, the deduped flag, and the caller's updated usage meter. Poll the job with get_job, then read the result with get_proposal.

NameTypeReqDescription
pdf_pathstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

submit_invoice_and_wait ~194

Submit an invoice PDF and wait for the job to finish. Submits the PDF, then polls the job with backoff until it reaches a terminal state (done or failed) or timeout_seconds elapse. Returns {"status", "intake", "job"}: on "completed", job carries the terminal payload — its outcome ("proposal", "needs_human", "failed", "duplicate"), its reason_code when the job ended without a proposal, and proposal_id when one was issued. This tool deliberately does NOT fetch the proposal itself: proposal fetches are exactly-once, so the fetch is left as an explicit get_proposal call whose result the caller keeps. On "timed_out", job holds the last seen state; keep polling with get_job.

NameTypeReqDescription
pdf_pathstringyes–
poll_interval_secondsnumber––
timeout_secondsnumber––

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the Backroom MCP server?

Backroom runs locally as a PyPI package, launched with uvx backroom-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · backroom-mcp

# add to Claude Code
claude mcp add pardhuparimi-backroom -- uvx backroom-mcp
Common questions

What is the Backroom MCP server?

Backroom is an MCP server listed in the public MCP registry as io.github.pardhuparimi/backroom. Invoice extraction for agents: submit a PDF, get verified structured data, never a guess. This page covers its PyPI package (backroom-mcp).

Is the Backroom MCP server safe to use?

Backroom scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Backroom MCP server expose?

Backroom exposes 6 tools: submit_invoice, submit_invoice_and_wait, get_job, get_proposal, get_usage, check_health. Their descriptions and schemas cost roughly 598 tokens of context every time the server is loaded.

Is the Backroom MCP server still maintained?

Backroom is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 3 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.