Skip to main content
Glama

optionality_list_canonical_identities

Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes.

The authoritative source for any client (Studio, agents, FE) that needs to know how this MCP identifies its tools. Reconcile uses this output to UUID-join against the stored pricing model — no name-based UUID derivation, no guessing.

Includes both ToolIdentity-seeded tools and any UUID recorded by @paid_tool that is missing from the registry. The latter appear with registered: false (and in the top-level unregistered array) so Reconcile can flag deploy drift instead of silently reporting clean when a live tool was never seeded (#174).

If the operator renames a function or rebrands a slug, the mcp_name in this output changes but tool_id stays. That's the whole point of the canonical-UUID design.

Also diffs the live FastMCP wire surface against the registry. Tools exposed on the wire but absent from the registry appear in unregistered so Reconcile can flag deploy drift instead of silently under-reporting (issue #175).

Free, no side effects.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It effectively discloses behavior: returns both ToolIdentity-seeded and @paid_tool tools missing from registry with 'registered: false', diffs the live wire surface, identifies deploy drift (#174/#175), and explicitly states 'Free, no side effects' at the end. This is strong behavioral disclosure for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is quite long for a no-parameter introspection tool, with some redundancy. Both the 'registered: false' point and the 'unregistered array / deploy drift' point are made to emphasize the same behavior (flagging drift instead of silently under-reporting), which repeats the same idea twice. While each section adds genuine value, the text could be tightened by ~30% without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (which reduces the burden on the description to explain returns), the description thoroughly covers the tool's purpose, consumers, edge cases (unregistered tools, renamed functions), and the design rationale (canonical-UUID). It's a zero-parameter tool, so there are no param gaps. The description fully compensates for absent annotations and provides a complete picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has 0 parameters and schema coverage is 100% (empty properties object). With no params, the baseline is 4. The description appropriately doesn't waste space on parameter semantics since there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes'). Clearly states scope (every tool), and distinguishes from siblings by explaining it's the authoritative source for tool identity mapping. The 'list' family of siblings is much narrower (specific domain lists), so this is well differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the primary consumer ('Reconcile') and how the output is consumed ('UUID-join against the stored pricing model'). Tells the agent when NOT to guess ('no name-based UUID derivation, no guessing'). Provides strong context on which audience (Studio, agents, FE) needs this output.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.1/5.0
Disambiguation2/5

There is substantial overlap and confusion between multiple sets of tools. For example, `optionality_get_operator_onboarding_status` and `optionality_get_patron_onboarding_status` serve different identities but have a similar purpose that could be confusing. More critically, there are generic-named tools like `optionality_receive_credentials` and `optionality_receive_npub_proof` that both drain a relay mailbox in a very similar way, distinguished primarily by the type of token they return. The presence of both `optionality_session_status` and `optionality_service_status` is a major point of ambiguity, as both seem to check the health and configuration of the operator.

Naming Consistency4/5

The naming convention is highly consistent, using a snake_case, verb_noun pattern (e.g., `list_journal`, `delete_journal`). The prefix `optionality_` is applied to all tools. The verb 'get' and 'list' are used predictably. Minor point deduction for a few outliers like `optionality_deal_scenario` and `optionality_judge_trade` which are domain-specific verbs that don't perfectly fit the CRUD pattern but are still clear in context.

Tool Count1/5

With 71 tools, this server is severely over-staffed. This indicates poor separation of concerns, likely bundling multiple distinct domains or services into a single surface. A tool count this high dramatically increases cognitive load and API surface area, making it difficult for an agent to find the correct tool.

Completeness3/5

The tool surface covers an enormous amount of functionality, including imaginative ownership-proof flows via Nostr DMs. However, the `check_balance`/`purchase_credits` flow appears incomplete without a `refund_credits` tool for operator support scenarios. While the server has a `restore_credits` tool, it requires authentication. Overall, the surface is individually creative but organizationally incoherent.