three-way-match
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| XDG_DATA_HOME | No | Optional base directory for saved JSON reports. Reports live under `${XDG_DATA_HOME:-~/.local/share}/mcp-servers/three-way-match/`. Must be an absolute path, and the storage directory ancestry must not contain symlinks. | |
| MCP_LICENSE_KEY | No | Optional Pro license key. Activate with `license_activate` or set this environment variable. Keys verify offline. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| three_way_matchB | Compare up to 500 PO/invoice lines by exact SKU, accepted receipts and prior billed quantities. Returns source evidence and exceptions, including offsetting errors. All diagnosis is free; save optionally. |
| report_listB | List saved report ids, timestamps, document references, status and issue counts. Free on both tiers; paginated, up to 100 reports per call. |
| report_getA | Read a saved report with source documents, per-SKU evidence and all exceptions. Free on both tiers. |
| report_pageB | Read free pages of large report issues, SKU rows or original source rows. Use report_id from the paginated overview. Unsaved previews expire after 30 minutes and keep only the last two large checks. |
| report_deleteA | Delete one saved report by id, freeing a free-tier storage slot. Does not alter source documents or prior invoice history. |
| report_export_csvA | Return CSV of saved SKU quantities, prices and issues. Large CSVs paginate; follow next_offset with offset. Formula-like text is escaped. Full source evidence uses report_get/report_page. |
| license_statusA | Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key. |
| license_activateA | Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have clearly distinct actions (list, get, delete, page, export) and the core three_way_match is unique. However, report_get and report_page both read report content, and report_export_csv partially overlaps with report_get, which could cause mild hesitation.
The set predominantly follows a snake_case noun_verb pattern (report_list, report_get, license_activate). The standalone three_way_match and noun-style license_status are minor deviations from the otherwise consistent prefix-action convention.
Eight tools is well within the ideal 3-15 range and each tool serves a clear purpose: core matching, report lifecycle, pagination/export, and licensing. No tool feels redundant or excessive.
The surface covers the full lifecycle: matching (three_way_match with optional save), report listing/reading/pagination/export/deletion, and license status/activation. No critical gaps for the stated domain.