# Supplier Invoice Tool

> Supplier invoices to draft Xero bills per job, for UK trades' AI assistants (test mode)

- name: io.github.Nero-Engine/supplier-invoice-tool
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fsupplier-invoice-tool
- tools: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fsupplier-invoice-tool/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "supplier-invoice-tool": {
      "type": "http",
      "url": "https://supplier-invoice-tool.nerolabs.workers.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-1d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,036 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 2,036 tokens to load them all
- tool set hash: 4190f0a1336bb85b49971a9bed784025
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Nero-Engine/supplier-invoice-tool.svg)](https://protogrid.dev/servers/io.github.Nero-Engine/supplier-invoice-tool)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://supplier-invoice-tool.nerolabs.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `add_supplier_invoices`: Add supplier invoices to the book: raw emails with PDF attachments, PDFs (text or scanned), photos, or pasted text, up to 25 per call. Each is read, checked against its own printed total, given its job reference, kept with its original, and checked for price changes against earlier invoices from the same supplier. Duplicates are skipped. Returns one result per document: added, needs_check (did not add up, held back), duplicate or failed.
- `assign_job_reference`: Put an invoice (or some of its lines) on a job, when the supplier left the reference off or it was wrong.
- `connect_xero`: A link for the trade to open and sign in to Xero. Test mode: only a Xero Demo Company can be connected.
- `create_trade_account`: Start here, once per business. Creates the trade's invoice book and returns an API key to send as "Authorization: Bearer <key>" on every other call. Test mode: free, nothing is charged. The same identity (company number) can later sign the trade into Nero Work without a new sign up.
- `disconnect_xero`: Forget the Xero connection. Nothing in Xero is changed.
- `get_account`: The trade's account, settings and Nero identity.
- `get_original`: A private link to the original email, PDF or scan of one invoice, to show the trade.
- `list_invoices`: Every invoice in the book for a month, with its lines, status and any problems.
- `month_summary`: The month at a glance: one draft bill per supplier with a line per job (net, VAT and which invoices), invoices held back to check, lines with no job reference, and price changes with the extra cost they caused. Includes the exact Xero payloads. Sends nothing.
- `price_alerts`: Price changes on the same product code from the same supplier this month, in date order, and the extra they cost.
- `push_bills_to_xero`: Put the month's bills into Xero as DRAFT bills, one per supplier, one line per job, with the original invoices attached. Without send: true it is a dry run that shows what would be sent. Running it again updates the same draft (no duplicates). A bill the trade has already approved is never changed; late invoices go on a top up bill. Never approves or pays.
- `review_invoice`: For an invoice held back as needs_check: accept it as read (it then goes on the bill), or remove it (for example to add a corrected copy). Ask the trade first.
- `update_settings`: Change how job references are read and how bills are entered in Xero.
- `xero_status`: Whether Xero is connected, and to which organisation.
