Skip to main content
Glama
chris-youngblut-solutions

retail-ops-mcp-kit

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_purchase_orderA

Fetch one purchase order as the configured ERP would return it.

- po_id: corpus PO id, e.g. "PO-8801". Join key across the whole kit.

Returns the ERP-native PO envelope. Under sap_s4hana: an
API_PURCHASEORDER_PROCESS_SRV `{"d": {A_PurchaseOrder ... to_PurchaseOrderItem}}`
document with stringified decimals and /Date(ms)/ dates. Under netsuite: a REST
Record `purchaseOrder` with JSON numbers and an `item.items[]` sublist. Under
dynamics365: an OData V4 PurchaseOrderHeadersV2 entity with `@odata.etag` and
`dataAreaId`. Raises if the PO is unknown.
get_goods_receiptA

Fetch the goods receipt(s) for a PO — the GRN "actual" leg of the match.

- po_id: corpus PO id, e.g. "PO-8801".

Under sap_s4hana returns an API_MATERIAL_DOCUMENT_SRV A_MaterialDocumentHeader
collection with a to_MaterialDocumentItem list (GoodsMovementType 101). `condition`
and `qty_damaged` from the corpus surface as item-level annotations (short-ship /
over-ship / damage / UOM-mismatch traps). Returns an empty collection if nothing was
received.
get_invoiceA

Fetch one supplier invoice — the "charged" leg of the match.

- invoice_id: corpus invoice id, e.g. "INV-01".

Under sap_s4hana returns an API_SUPPLIERINVOICE_PROCESS_SRV A_SupplierInvoice with a
to_SuplrInvcItemPurOrdRef line referencing the PO. Carries
SupplierInvoiceIDByInvcgParty for duplicate-invoice detection (the PO-8808 trap:
INV-08a and INV-08b bill the same PO). Under netsuite: a vendorBill; under
dynamics365: a VendorInvoiceHeader. Raises if the invoice is unknown.
list_open_posA

List purchase orders with no fully-matching invoice yet — the open three-way-match workqueue.

Takes no args. A PO is "open" when its billed qty (summed across invoices) is less
than the ordered qty. Under sap_s4hana returns an OData collection
`{"d": {"results": [A_PurchaseOrder, ...], "__count": "N"}}`; under netsuite a
`{items, hasMore, offset, totalResults}` page; under dynamics365 an OData V4
`{"value": [...]}`.
stage_invoice_paymentA

STAGE (do not execute) a supplier-invoice payment for human approval.

- invoice_id: corpus invoice id, e.g. "INV-01".
- amount: payment amount; echoed into the staged payload for the human to confirm.
- currency: ISO code, default "USD".

Validates the invoice exists and the amount is numeric, then records a pending record
and returns {result:"pending_approval", approval_id, target_endpoint, ...}. Models SAP
API_JOURNALENTRYITEMBASIC_SRV vendor payment. THIS DOES NOT PAY ANYTHING — a human must
approve(approval_id, token) to execute. 'pay_invoice' is in policy.gated_actions, so
validation.policy_gated is true.
stage_po_amendmentA

STAGE (do not execute) a PO amendment (qty and/or price) for human approval.

- po_id: corpus PO id, e.g. "PO-8801".
- new_qty: optional new order quantity.
- new_unit_price: optional new net price per unit.

Validates the PO exists and at least one change is present, records a pending record,
returns pending_approval + approval_id. Models a PATCH to API_PURCHASEORDER_PROCESS_SRV
A_PurchaseOrder (If-Match / x-csrf-token write). 'po_amendment' is gated. Executes only
on human approval.
simulate_po_eventA

Synthesize an inbound ERP change event for the given PO (read-only; no state change).

- po_id: corpus PO id, e.g. "PO-8801".
- event_type: e.g. "Created" | "Changed".

Under sap_s4hana returns a SAP Advanced Event Mesh CloudEvents envelope on topic
sap/s4/beh/purchaseorder/v1/PurchaseOrder/<event_type>/v1 with payload {PurchaseOrder}.
Under netsuite: a SuiteScript user-event callback; under dynamics365: a Business Events
envelope. Use it to exercise event-driven wiring.
approveA

Approve a staged write. Requires the human approval token (server env RETAIL_OPS_MCP_APPROVAL_TOKEN) — the agent does not hold it, so an agent-supplied token is refused. On a valid human token the staged action executes (mock) and the record moves pending → executed. Refused if no token is configured (fail closed).

list_pending_approvalsA

List this server's staged, not-yet-approved writes (status=pending). Read-only. Lets a human see what awaits approval; the agent can see them but cannot approve.

get_approval_statusA

Return the current record for approval_id (pending | approved | executed | refused).

active_systemA

Which ERP dialect is wired (sap_s4hana | netsuite | dynamics365). Lets a host confirm the modeled system without leaking any credential.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource or action: fetching PO, invoice, goods receipt, approval status, listing open POs, staging payment/amendment, simulating events, approving, and listing approvals. Only minor potential confusion exists between get_approval_status and list_pending_approvals, but their inputs (approval_id vs listing) clarify the difference.

Naming Consistency4/5

The set mostly follows a verb_noun pattern (get_*, list_*, stage_*, simulate_*), but 'active_system' and 'approve' deviate from that pattern. These deviations are minor and the intent remains readable.

Tool Count5/5

With 11 tools, the server is well-scoped for its purpose: covering purchase order, invoice, goods receipt, approval workflow, and simulation. No tool is redundant; each adds a distinct capability.

Completeness4/5

The toolkit covers the core three-way match (PO, GR, invoice), open PO listing, staging of payment and PO amendments, and the approval flow. Minor gaps include no explicit reject/cancel for staged actions and no PO/invoice creation, but these may be outside the server's intended scope.

Maintenance

ActivityStale
ResponsivenessNo issues