CIMS MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CIMS MCP ServerQuote a 50 USDC transfer to Acme Corp via CIMS"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CIMS MCP Server
An MCP (Model Context Protocol) server for Roots CIMS — the Chain-based Interbanking Messaging System. CIMS routes transfers through standardized, bank-readable IDs such as R-233-2993204 instead of raw wallet addresses, acting as crypto's equivalent of SEPA/ACH/SWIFT on a non-custodial network (currently Base Sepolia, chain ID 84532, USDC + ETH).
This server lets AI assistants resolve CIMS parties, quote and send transfers, handle attestation, and track intent lifecycles — with safety rails built in.
Quick start
npm install
npm run build
npm start # stdio MCP server with the mock adapterMCP client configuration (e.g. Claude Desktop, VS Code):
{
"mcpServers": {
"cims": {
"command": "node",
"args": ["/path/to/rootsfi-cims-MCP/dist/index.js"],
"env": { "CIMS_ADAPTER": "mock" }
}
}
}Related MCP server: Cresium MCP Server
Adapters
Adapter | Selection | Notes |
mock (default) |
| In-memory directory, institutions, and full intent lifecycle. No credentials needed — ideal for demos and development. |
live |
| HTTP client for the Roots CIMS relay. Requires |
Tools
Tool | Kind | Description |
| read-only | Parse/validate CIMS ID format ( |
| read-only | Resolve a name, handle, or CIMS ID to a routable party. Refuses raw |
| read-only | Institution status, supported rails, and attestation policy by index. |
| read-only | Price and policy-check a transfer (name check, AML, attestation). No funds moved. |
| write | Create an intent from a quote. Requires |
| write | Operator approval/rejection of an |
| write | Cancel a pending intent inside the cancel window. |
| read-only | Intent status, cancel window, tx hash when finalized. |
| read-only | List intents, filterable by status/asset. |
Resources & prompts
cims://docs/overview— CIMS concepts, ID format, transfer modes, safety modelcims://docs/lifecycle— intent status transition diagram and timing windowsPrompt
cims-send-money— guided, safe transfer flow (resolve → quote → user confirm → send → track)
Intent lifecycle
quoted → send(confirm) → pending ──window elapses──▶ finalized
↘ attestation_required ──approve──▶ pending
──reject───▶ reverted
pending / attestation_required ──cancel (inside window)──▶ cancelleddirect mode: ~30s pending window (small, repeat counterparties)
delayed mode: ~12h pending window (default for first-time or ≥ 1,000)
Contract-level max finality: 30 days
Safety model
No raw addresses —
0x…inputs are refused everywhere; parties must resolve via CIMS ID or directory name.Confirm before send —
cims_sendrequiresconfirm=true, intended to be set only after the user has reviewed the quote.Policy at quote time — inactive institutions and unsupported rails are refused; name check, AML (review ≥ 50,000), and attestation requirements (≥ 10,000 or institution policy) are reported on every quote.
Attestation gate — flagged intents stay in
attestation_requireduntil an operator approves viacims_attest.Errors as data — tool failures return
isErrorcontent (not protocol errors), so assistants can read and explain them.
Development
npm run dev # run from source with tsx
npm test # vitest: policy units, adapter lifecycle, server integration
npm run build # tsc → dist/Layout: src/types.ts (domain model) · src/policy.ts (ID parsing, mode/window/threshold rules) · src/tools.ts (MCP tool registration) · src/resources.ts (docs resources + prompt) · src/adapters/ (mock + live behind CimsAdapter) · test/ (vitest).
Available Tools
9 toolscims_attestAttest intentADestructive
Approve or reject an intent in attestation_required state (institution operator action). Approving moves it to pending; rejecting reverts it.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| approve | Yes | ||
| attestor | No | Operator identity performing the attestation | |
| intentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses what the action does beyond the destructiveHint annotation: approving moves the intent to pending and rejecting reverts it. This is meaningful behavioral context, though it does not elaborate on side effects or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action and state effects are front-loaded. Every clause contributes information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter action with no output schema, the description covers the state precondition, the actor, and the resulting state changes. It is slightly thin on optional 'note' and any return/error behavior, but the tool is simple enough that the core usage is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description compensates partially: it clarifies that 'approve' is a boolean approve/reject choice and explains state outcomes. However, it does not add semantics for 'note' or 'intentId' beyond their names, and 'attestor' is already covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Approve or reject') and a precise resource ('an intent in attestation_required state'), and it names the exact state transition. This clearly distinguishes cims_attest from siblings like cims_cancel, cims_send, and cims_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly scopes usage to intents in attestation_required state and identifies the actor as an institution operator. It does not name alternative tools or state when not to use it, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_cancelCancel intentADestructiveIdempotent
Cancel a pending or attestation_required intent inside the cancel window.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| intentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as destructive and idempotent, so the description does not need to restate those behaviors. It adds useful context about intent states and the cancel window, but it does not describe the cancellation outcome, reversibility, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It delivers the action and its constraints efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity destructive action, the description covers the essential state and timing constraints. However, with no output schema and no mention of post-cancellation behavior or return value, some operational context is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It never explicitly mentions intentId or reason; the target intent can be inferred, but the optional reason parameter and its role are undocumented in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Cancel'), the resource ('intent'), and precise eligibility conditions: pending or attestation_required intents inside the cancel window. This makes the tool unambiguous and distinguishes it from sibling tools like send, attest, and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when the tool should be used: only for pending or attestation_required intents within the cancel window. It implies that other intent states are not eligible, though it does not explicitly name alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_institutionInstitution statusARead-onlyIdempotent
Look up a CIMS institution by index (e.g. "233" from R-233-2993204): active status, supported rails, and attestation policy. Check before routing to an unfamiliar institution.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds value beyond the annotations by specifying what the lookup returns and framing it as a pre-routing check, which helps the agent understand the tool's role and side-effect-free nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the action and resource, gives a concrete example, lists the useful output fields, and then provides a clear usage heuristic. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with read-only/idempotent annotations and no output schema, the description is complete enough. It identifies the required input, the purpose, the returned data categories, and the appropriate usage context, so an agent can successfully invoke it without additional clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially does by giving a concrete example: 'e.g. "233" from R-233-2993204', which clarifies the expected index format beyond the raw '^\d+$' pattern. It does not fully define what an index is, but the example is sufficient for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Look up a CIMS institution by index'), the resource, and the key returned information: active status, supported rails, and attestation policy. It is clear, but it does not explicitly differentiate itself from sibling tools like cims_status, relying on the fields and example to imply the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Check before routing to an unfamiliar institution.' This tells the agent when to invoke the tool, though it does not mention exclusions or name alternative tools for when this lookup would be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_list_intentsList intentsBRead-only
List known intents, optionally filtered by status and/or asset.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the read-only nature, and the description is consistent with it. It adds the scope 'known intents' and the filter dimensions, which are useful but not extensive. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description is mostly sufficient: it identifies the resource and the filter axes. But it lacks any indication of the output shape (no output schema exists) and doesn't clarify the scope of 'known intents' or when to prefer sibling tools. The absence of usage guidance is the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lists the two parameters with allowed enum values, but the description adds that they serve as optional filters. This is minimal compensation for the 0% schema description coverage; detailed meaning of each status (e.g., 'attestation_required') is left to the enum names. The description does help map parameters to their role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('known intents'), clearly stating the operation. It also mentions optional filters by status and/or asset. However, it doesn't explicitly contrast with sibling tools like cims_status, so the reader must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but not when to prefer it over alternatives. No mention of exclusions or specific use cases, such as using this tool to enumerate intents before checking a single one with cims_status. This leaves the agent without routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_quoteQuote transferARead-only
Price and policy-check a transfer (name check, AML, attestation requirement). Does not move funds. Prefer delayed mode for first-time or large payments. Show the quote to the user before calling cims_send.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| asset | No | USDC | |
| amount | Yes | Decimal amount as a string, e.g. "250.00" | |
| toQuery | Yes | Recipient: CIMS ID or directory name | |
| fromQuery | Yes | Sender: CIMS ID or directory name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint true, the description adds substantial behavioral detail: the specific policy checks performed, the explicit 'Does not move funds,' mode-selection advice, and the required user-facing step before sending. None of this contradicts the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences, each carrying distinct information: what it does, what it does not do, mode guidance, and next-step sequencing. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a quote tool with no output schema, the description conveys that the result is a displayable quote and policy result and tells the agent to show it before cims_send. It would be more complete if it described the shape or statuses of the returned quote/policy check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents fromQuery, toQuery, and amount, and constrains mode/asset via enums; the description adds meaningful guidance for mode ('Prefer delayed mode for first-time or large payments'). It does not explain asset selection or otherwise compensate for the remaining undocumented parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Price and policy-check a transfer,' and enumerates the checks involved (name check, AML, attestation requirement). It also explicitly contrasts with cims_send by saying it does not move funds, so an agent can tell quote from execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: prefer delayed mode for first-time or large payments and show the quote before cims_send. It does not spell out when to prefer cims_validate_id or cims_attest instead, but the main workflow alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_resolveResolve CIMS partyARead-onlyIdempotent
Resolve a legal name, handle, or CIMS ID (R-institution-account) to a routable party. Refuses raw 0x addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is read-only and idempotent. The description adds meaningful behavioral context beyond that: it explicitly rejects raw 0x addresses and clarifies the accepted input forms. This gives the agent useful expectations about constraints and edge cases, though it does not detail failure modes or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action and accepted inputs are front-loaded, and the key refusal behavior is placed right after. Every clause earns its place and the length is appropriate for a single-parameter resolution tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool, the description covers accepted inputs, the refusal case, and the nature of the result ('routable party'). The lack of an output schema is partially mitigated by stating the output type. It could be slightly more complete by noting what happens on unresolvable input, but overall it is sufficiently complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'query' as a non-empty string, so schema description coverage is 0%. The description fully compensates by explaining that the query may be a legal name, handle, or CIMS ID in the R-institution-account format, and that raw 0x addresses are refused. This is substantial semantic value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Resolve') and resource ('legal name, handle, or CIMS ID') and clarifies the output is a routable party. The added 'Refuses raw 0x addresses' clause further distinguishes its scope from other CIMS tools. This is clear, specific, and immediately tells an agent what the tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a legal name, handle, or CIMS ID needs to be converted to a routable party. It also gives one exclusion boundary by refusing raw 0x addresses. However, it does not explicitly compare against siblings like cims_validate_id or state when not to use this tool, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_sendSend transferA
Create a CIMS intent from a quote. Requires confirm=true and must only be called after the user has reviewed the quote. May return attestation_required if institution policy demands it.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true; set only after user reviewed the quote | |
| quoteId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read, non-idempotent, non-destructive operation. The description adds meaningful behavioral context: the confirm guardrail and the conditional attestation_required return value. It does not mention the risk of duplicate intents from repeated calls, but that is a minor gap given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core action is front-loaded, followed immediately by the prerequisite and a notable conditional response. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter creation tool, the description covers the key workflow gate, the mandatory flag, and a likely conditional response. Without an output schema, it could say a bit more about what a successful call returns or how the resulting intent is referenced, but it is not severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents confirm fully, including the requirement that it must be true only after review. The description reinforces this but does not add much. quoteId has only a type in the schema, and the description's 'from a quote' provides light semantic context. With 50% schema coverage, the description only partially compensates for the undocumented quoteId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create'), a specific resource ('CIMS intent'), and the source ('from a quote'). This clearly distinguishes it from siblings like cims_quote, cims_attest, and cims_cancel. The title 'Send transfer' is clarified rather than left ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage conditions: it must be called only after the user has reviewed the quote, and confirm must be true. It also hints at the alternative/conditional path by mentioning attestation_required, which suggests cims_attest may be needed. It does not explicitly name sibling tools or say when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_statusIntent statusARead-only
Get intent status: pending, attestation_required, finalized, cancelled, reverted. Includes cancel window and tx hash when finalized.
| Name | Required | Description | Default |
|---|---|---|---|
| intentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already covers safety, so the description does not need to restate read-only behavior. It adds information about return contents ('cancel window and tx hash when finalized'), which is useful context about what the operation yields, but it does not disclose edge-case behavior such as unknown/nonexistent intent handling. This is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the essential information with no filler. The core action and status vocabulary are front-loaded, and the extra detail about tx hash and cancel window is appended without clutter. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately lists the possible statuses and notes extra fields for finalized intents. This gives an agent a working mental model of the result. The only minor gap is the vague 'cancel window' term, which is not defined, but overall the description is sufficiently complete for a low-complexity, single-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema's only parameter, intentId, has no description, and the tool description does not add explicit parameter semantics beyond the obvious meaning of the parameter name. With schema description coverage at 0%, the description technically should compensate, but because there is a single self-explanatory parameter, the gap is not severe. The phrase 'Get intent status' reinforces that intentId identifies the intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-object structure ('Get intent status') and enumerates the possible status values, which makes the tool's purpose immediately understandable. It does not explicitly differentiate itself from siblings like cims_list_intents, but the focused status vocabulary suggests a single-intent lookup rather than a list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: the tool is for checking the status of a specific intent identified by intentId. There is no explicit guidance on when to prefer this over cims_list_intents or cims_resolve, nor any exclusion criteria. The status list gives a hint, but the description does not directly address alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cims_validate_idValidate CIMS IDARead-onlyIdempotent
Check whether a string is a well-formed CIMS ID (R-institution-account) and parse its parts. Pure format check; does not hit the directory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and idempotentHint, so the safety profile is covered. The description adds useful behavioral detail beyond annotations by stating it is a pure format check with no directory access, which clarifies network/side-effect behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry exactly the needed information: what the tool does, what format it expects, and what it does not do. Every phrase earns its place and the most important behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent validation tool, the description is nearly complete. The only minor gap is that it does not state the return/error behavior for malformed IDs, but given the simplicity and annotations, the definition is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single 'id' parameter. It does so by explaining the expected CIMS ID composition ('R-institution-account') and that the tool parses its parts, giving meaning beyond the bare minLength constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check whether'), a specific resource ('CIMS ID'), and a concrete shape ('R-institution-account'), adding that it parses the parts. The 'Pure format check' phrasing clearly distinguishes it from the directory-related sibling tools like cims_resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: this is for format validation only and explicitly says it does not hit the directory. It does not explicitly name an alternative tool for directory lookups, but the sibling list and the 'does not hit the directory' exclusion make the intended scope evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v0.2.0- First observed
cims_attest - First observed
cims_cancel - First observed
cims_institution - First observed
cims_list_intents - First observed
cims_quote - First observed
cims_resolve - First observed
cims_send - First observed
cims_status - First observed
cims_validate_id
TDQS
Each tool maps to a distinct step in the CIMS workflow: validation, resolution, institution lookup, quoting, sending, attestation, cancellation, status, and listing. Potentially adjacent pairs like validate_id/resolve and quote/send are clearly separated by their descriptions.
All tools share the cims_ prefix and mostly use concise action-oriented names. Minor inconsistencies exist: cims_institution and cims_status are noun-only lookups, while cims_quote is ambiguous between noun and verb, so the pattern is not perfectly uniform.
Nine tools is well-scoped for a payment-intent lifecycle with supporting identity and institution lookup operations. Each tool covers a distinct operation without redundancy or unnecessary bloat.
The set covers the full path from ID validation, party resolution, and institution discovery through quote, send, attestation, cancellation, status, and listing. State transitions are represented, and there are no obvious dead ends in the core workflow.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI agent infrastructure for discovery, authorization, execution, identity, and signed receipts.
Connect AI agents to financial institution origination, analytics, and compliance workflows.
Provide AI agents and automation tools with contextual access to blockchain data including balance…
Complete financial infrastructure for AI agents — payments, lending, escrow & more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI applications to interact with the COTI blockchain for private token operations, supporting account management, private ERC20/ERC721 tokens, and secure transactions using Multi-Party Computation (MPC) technology.2MIT

Cresium MCP Serverofficial
FlicenseAqualityCmaintenanceEnables AI tools to manage financial operations through the Cresium Partner API, including transactions, payments, invoices, and wallet balances. It supports secure workflows such as bank address lookups, transfer previews, and signature request management.125-- AlicenseAqualityDmaintenanceEnables AI agents to check balances and send transactions across multiple blockchains with automatic spending limit protection and policy enforcement.3MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with peer-to-peer networks (libp2p) and DeFi protocols, including oracle networks, cross-chain communication, and intent-based execution.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rootsfi-AI/rootsfi-cims-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server