Backroom

io.github.pardhuparimi由 GitHub 账号 pardhuparimi 发布v0.1.1更新于 Nov 3, 2026

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

已验证STDIO仅桌面金融数据与分析

概览

AI 生成的概览

Backroom 从发票 PDF 中提取经过核验的结构化数据:助手可提交 PDF、轮询任务并一次性获取提取结果。

可以做什么
  • 从本地路径提交发票 PDF 进行提取,可选择立即返回或等待任务完成
  • 查询提取任务的状态与最终结果,包括扫描件无法识别等原因
  • 获取任务的提取提案,无法核验的字段标记为 unclear 而非猜测
  • 查询当前日历月的用量额度与剩余文档数
  • 无需密钥即可检查 API 健康状况与模型提供方可用性
适用场景
适合需要把发票 PDF 转成结构化数据用于记账、报销或应付账款流程的场景,并且希望无法核验的字段被标记而不是被编造。也可在批量处理前查看当月剩余文档额度。
运行要求
以 Python 包形式通过 uvx 在本地以 stdio 运行。需要在 BACKROOM_API_KEY 中提供 Backroom API 密钥,可从服务获取免费测试密钥。需要访问 Backroom API 的网络,可用 BACKROOM_API_BASE 覆盖基础地址。仅支持桌面端。
安装前请注意
API 密钥属于机密,会发送给第三方服务,用量受每月文档上限约束。提交的 PDF 会上传到 Backroom,发票内容会离开本机。get_proposal 只能获取一次:首次成功获取后结果即被清除,再次获取返回 404,因此必须保存返回的数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Backroom,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

该仓库没有 README。

工具

6

submit_invoice

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.

输入参数pdf_path必填

submit_invoice_and_wait

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.

输入参数pdf_path必填timeout_secondspoll_interval_seconds

get_job

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.

输入参数job_id必填

get_proposal

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.

输入参数proposal_id必填

get_usage

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.

无需输入参数。

check_health

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.

无需输入参数。

版本历史

1
  1. v0.1.1最新Oct 29, 2026

评分

已满足适用检查项的 65%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分

    请声明包含 README 的 GitHub 仓库,或在 OAuth 受保护资源元数据中提供 resource_documentation。

  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。