Operational Ontology
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OO_AGENT | No | The name of the agent for MCP sessions. Over stdio all callers collapse into one actor; setting this names that actor. It is labeling, not authentication. |
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 |
|---|---|
| search_customerB | Search Customer objects (A customer of the merged company). All filter fields are optional and match by equality. Results are scoped by the model-attached visibility policy for this session. |
| get_customerA | Fetch a single Customer by primary key (id). |
| aggregate_customerA | Group Customer objects by a property, counting each group and optionally summing a numeric property. Query-time aggregation — nothing is precomputed. |
| search_orderA | Search Order objects (A sales order, unified across both legacy systems). All filter fields are optional and match by equality. Results are scoped by the model-attached visibility policy for this session. |
| get_orderA | Fetch a single Order by primary key (id). |
| aggregate_orderA | Group Order objects by a property, counting each group and optionally summing a numeric property. Query-time aggregation — nothing is precomputed. |
| search_productA | Search Product objects (An item from the ERP item master). All filter fields are optional and match by equality. Results are scoped by the model-attached visibility policy for this session. |
| get_productB | Fetch a single Product by primary key (id). |
| aggregate_productA | Group Product objects by a property, counting each group and optionally summing a numeric property. Query-time aggregation — nothing is precomputed. |
| search_noteA | Search Note objects (A triage note — state no source system has a table for). All filter fields are optional and match by equality. Results are scoped by the model-attached visibility policy for this session. |
| get_noteA | Fetch a single Note by primary key (id). |
| aggregate_noteB | Group Note objects by a property, counting each group and optionally summing a numeric property. Query-time aggregation — nothing is precomputed. |
| traverse_customer_ordersA | Traverse the Customer → Order link "customerOrders" (one-to-many). Pass an instance returned by get or search; its properties are a snapshot, not authority. Direction is inferred from source.type; an explicit direction must agree. |
| traverse_order_productsA | Traverse the Order → Product link "orderProducts" (many-to-many). Pass an instance returned by get or search; its properties are a snapshot, not authority. Direction is inferred from source.type; an explicit direction must agree. |
| traverse_order_notesA | Traverse the Order → Note link "orderNotes" (one-to-many). Pass an instance returned by get or search; its properties are a snapshot, not authority. Direction is inferred from source.type; an explicit direction must agree. |
| cancel_orderA | Cancel an order. Shipped orders cannot be cancelled. Writes are gated: if a business rule rejects this call, the error is machine-readable ({ code, message }) and the attempt is recorded in the audit log. |
| assign_orderA | Assign a pending order to a person for fulfilment. Writes are gated: if a business rule rejects this call, the error is machine-readable ({ code, message }) and the attempt is recorded in the audit log. |
| add_order_noteB | File a triage note against an order. Writes are gated: if a business rule rejects this call, the error is machine-readable ({ code, message }) and the attempt is recorded in the audit log. |
| read_audit_logA | Read the append-only audit log: every applied and rejected action, with actor and params. This is an unscoped administrative view — entries are not filtered by visibility (fail-open, declared). |
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 19 tools
Each entity gets a clean search/get/aggregate triad with clearly different semantics (filtered multi-result, single fetch by id, grouped counts). Traversals are distinctly named per link (traverse_customer_orders, traverse_order_products, traverse_order_notes), and the write actions (add_order_note, assign_order, cancel_order) plus read_audit_log have no overlap with the read tools.
Strict verb_noun snake_case throughout: search_/get_/aggregate_ prefixes repeat identically across all four entities, traverse_ is used uniformly for link walks, and write/administrative tools follow the same lowercase verb_noun form. No mixing of conventions.
19 tools is on the higher side but each earns its place: a symmetric read/aggregate surface over four entities, three graph traversals, and three gated writes plus an audit reader. Nothing feels redundant, though the count sits at the upper boundary of comfortable.
Read coverage is complete and symmetric (search/get/aggregate for Customer, Order, Product, Note) with traversals across the main links and order lifecycle writes (assign, cancel, add note) plus auditing. Gaps are minor and arguably intentional: no create/update/delete for the mirrored entities, and no direct note-creation beyond add_order_note.