arcus-agent-gateway
Server Quality Checklist
Latest release: v0.2.1
- Disambiguation4/5
Most tools target distinct resources (list vs quote vs detail vs on-chain vs wallet), and the singular/plural quote/quotes pair is intuitive. token_list and search both return token sets, and token_detail embeds the quote view, so there is minor overlap, but descriptions make the intended use clear.
Naming Consistency4/5Names are uniformly lowercase snake_case and mostly follow a resource_noun pattern (token_list, market_status, sector_view, holder_snapshot). quote/quotes and search break the pattern slightly, but the style is predictable and readable.
Tool Count5/5Thirteen tools is well within the ideal range for a data gateway covering market quotes, token metadata, on-chain analytics, wallet holdings, and history. Each tool addresses a distinct data need without redundancy or bloat.
Completeness4/5The surface covers the full read path: discover tokens, get quotes/detail, market status, corporate actions, sectors, on-chain supply/holders, wallet holdings, transfer history, and price history. Minor gaps exist (e.g. no bulk quote for the whole universe in one call), but agents can work around them with quotes/sector_view.
Average 4.6/5 across 13 of 13 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 36 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
This server has been verified by its author.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the read-only annotation by disclosing the three-source join, per-source failure behavior ('each fails to a warning, never silently'), the supply_crosscheck threshold (>1% divergence lands in warnings[] while still returning both values), and the per-field source tag. This is rich, specific behavioral context with no contradiction of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a front-loaded summary, a compact bulleted list of sources, a tightly worded explanation of the crosscheck, and a final example. Every sentence adds information and the formatting makes the complex behavior easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description covers the input example, all data sources, failure behavior, crosscheck logic, and output tagging. Nothing critical is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 `symbol` parameter. It provides an example call and implies a token identifier, but it does not specify accepted formats, case sensitivity, whether contract addresses are allowed, or what token universe is supported. The example helps but leaves meaningful ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific resource ('on-chain footprint of a token') and enumerates the exact data fields from three sources, making the tool's purpose clear. It is clearly distinct from siblings like price_history or quote, though it never explicitly names a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the on-chain data content and by the invocation example onchain_info(symbol='AAPL'), but the description never explicitly says when to use this tool instead of alternatives like token_detail or holder_snapshot. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/destructive annotations, the description discloses caching behavior (600s), pagination cap (50 rows), total_supply source and fallback, source tagging, and error behavior ('never a silent empty list'). This is rich, non-redundant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds value: scope, data shape, supply calculation, fallback behavior, error semantics, and an example. It is front-loaded with the main purpose and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with annotations and an output schema, the description covers the essential behavioral details: row contents, aggregation source, failure mode, caching, and row limits. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), so the description carries the burden. It provides a concrete example with symbol and limit, and the 'max 50 rows' note clarifies the limit's effect. It stops short of explicitly defining each parameter's format and constraints, but an agent can infer correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('top holders of a token's contract') and adds concrete scope details such as one page, max 50 rows, and explorer sourcing. It is not a tautology and the meaning is immediately clear, but it does not explicitly distinguish itself from sibling tools like wallet_holdings or token_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose statement and example ('holder_snapshot(symbol="AAPL", limit=10)') imply use when a token-holder snapshot is needed. However, there is no explicit guidance about when not to use it or which sibling tool should be preferred in related scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral details: tolerance to API field-name variants, the exact row structure (symbol, type, status, process_date, details, raw), and the note that rates are floats when present. It also clarifies 'raw' is untouched original data. This goes beyond simple schema repetition, though it doesn't address rate limits or potential data-volume behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Compact but information-dense: purpose, filter behavior, row schema, type caveat, tolerance, and an example fit into three sentences. Front-loaded with the main action and scope, then builds detail efficiently. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't restate return values—it complements it by clarifying row semantics, tolerance, and the optional filter. With only 2 optional params and strong annotations, an agent has everything needed to select and invoke this tool correctly against sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the weight. It explains the two params via the example (symbol and limit) and the scope statement: symbol filters to one token, omitting it means all tokens. This sufficiently compensates for the bare schema, even though it doesn't formally document every property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: retrieves corporate actions (splits, dividends) across all tokens or one symbol. Highlights row fields and example usage, and differs from siblings like quotes/price_history by focusing on corporate action events. The scoping and output row composition make it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly clarifies the tool works across all tokens or filtered by one symbol, and the example demonstrates both the optional filter and limit. It does not explicitly contrast against siblings (e.g., price_history for price data), but the domain-specific scope and row description make the appropriate context clear. Minor gap: no explicit 'use this when' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/destructive annotations, the description discloses important behaviors: unknown symbols raise an MCP isError, tokens without a current quote return metadata with bid/ask None, and multiplier pending is None when nothing is queued. It also warns that adjusted fields must be read next to multiplier, which is valuable operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core result, and every sentence adds useful information. The long first sentence lists many fields that may already be present in the output schema, but it also adds interpretive guidance like 'always read them next to multiplier,' so the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main operational concerns: what data is returned, what happens for unknown symbols, and what happens when no quote exists. It would be even more complete with an explicit pointer to the quotes sibling for multi-token requests, but nothing critical is missing for invoking this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does 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 does so by providing an example (quote(symbol="AAPL")), clarifying that the symbol must come from the valid set exposed by token_list(), and explaining the failure mode for unknown symbols. It doesn't specify case-sensitivity or formatting, but for a single string parameter this is sufficient guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise operation — "One token's live quote joined with its asset metadata" — and enumerates the exact fields returned. The singular framing clearly distinguishes this from sibling tools like quotes (plural), token_list, and token_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use this tool: for a single token's live quote. It also provides concrete guidance on the valid symbol set by telling the agent to call token_list() when an unknown symbol error occurs. It does not explicitly contrast with quotes or other siblings, but the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is known. The description adds valuable behavioral detail beyond that: unknown symbols raise an MCP isError, the multiplier block surfaces pending splits with a concrete format, and the corporate actions list is specifically limited to the latest 5. These give the agent expectations for edge cases and output shape without repeating annotation data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every component earns its place: the initial phrase states scope, the list defines contents, the error note handles failure mode, and the example anchors parameter use. It is front-loaded with 'Full dossier' and there is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers all necessary selection and invocation context: the full list of returned information, the pending-split string format, unknown-symbol error behavior, and an example call. Nothing critical is missing for an agent to decide when to call this and how to pass the parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage for the single 'symbol' parameter, so the description must compensate. It does so by providing a concrete example (symbol="AAPL") and by repeatedly referring to tokens, making the parameter's meaning clear. It stops short of fully specifying symbol format/case-sensitivity, but for a token platform this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description begins with 'Full dossier for one token' and then enumerates the exact contents (metadata, quote view, corporate actions, multiplier block, trading capabilities, warnings), making the tool's purpose unmistakable. It also distinguishes itself from siblings like quote, corporate_actions, and token_list by being a comprehensive single-token aggregation rather than a narrow endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is the go-to tool when a complete overview of a single token is needed, including corporate actions and multiplier warnings. It does not explicitly name alternatives or when-not-to-use conditions, but the rich context ('Full dossier', 'last 5 corporate actions', 'warning') implies when token_detail should be preferred over more specialized siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description goes far beyond them: it discloses the window-shrinking walk-back (48->32->16->8 on archive-403s), the request cap, 60-second caching, newest-first ordering, and the meaning of each stopping condition in the note field. No contradiction with annotations; the openWorldHint is consistent with the description's reference to a public/free RPC.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause earns its place: mechanism, row format, filtering semantics, caching, note semantics, and an example call. It is dense and monolithic as a single paragraph rather than scannable, which taxes the reader, but there is zero dead weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists to cover return value shapes, and the description fills in everything else: the adaptive walk-back mechanism, free-RPC limitations, caching, parameter filtering order, and edge-case stopping conditions. An agent can invoke it correctly, interpret results, and explain failures to the user — complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does with the concrete example (symbol="AAPL", limit=10, min_value=1.0) and the crucial detail that min_value filters in token units AFTER normalization. The meaning of symbol is only implied by context and limit's behavior (row count) is inferred rather than stated, leaving small gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause, 'Recent ERC-20 Transfer events for a token's contract', gives a specific verb and resource that immediately separates it from all 12 siblings (quote, price_history, holder_snapshot, etc.), none of which cover transfer events. It further specifies row contents and ordering, leaving no doubt about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: a ~800-block adaptive walk-back, the free RPC's floating ~45-60-block window, the ~14 getLogs cap, and what the note field signals when history is unavailable ('window-closed' routes the agent to the explorer for older history). It stops short of naming a specific sibling as the alternative, but the tool's unique scope makes that omission low-cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds rich behavioral detail beyond annotations: 8 in-flight calls, unknown symbols routed to errors list instead of failing the batch, and output order matching input order. No contradictions with readOnlyHint, openWorldHint, or destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and well-structured: batch limit, parallelism, error semantics, ordering guarantee, and an example are packed into a compact, readable block. No filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations cover read-only/open-world behavior, the description supplies the missing operational details: concurrency model, failure handling for unknown symbols, and ordering guarantee. Nothing critical for correct invocation is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates well via the example and behavioral constraints: the symbols array order is preserved, unknown symbols are accepted and reported in errors, and the array is capped at 20. It does not formally define symbol format, but the example implies standard ticker symbols.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies a batch quote retrieval tool: 'Batch of quote() rows' with explicit limits and parallel fetch behavior. It distinguishes itself from the singular sibling 'quote' by being the batch variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The batch/parallel framing and example make it clear this is for retrieving multiple quotes at once, and the 20-per-call limit with 'more raises' gives a concrete usage boundary. It does not explicitly say 'use quote for a single symbol' or list alternative conditions, so it stops just short of full explicitness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/destructive annotations, the description reveals concrete behavior: default status hides inactive tokens, 'ALL' disables filtering, results are alphabetical and capped at limit, and the response shape is {count, total_matching, tokens}. It also clarifies the meaning of tradable and multiplier, going well beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but every phrase earns its place: scope, fields, filtering behavior, ordering, limit cap, response shape, and downstream use are all included. The example is compact and useful, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for an agent to invoke the tool correctly: it covers filtering, defaults, output structure, ordering, and how the results should be used downstream. With an output schema and read-only annotations present, there are no significant missing details that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well for the status parameter by defining ACTIVE, other status short names, and ALL. The limit parameter is only implied by 'capped at limit' and the example, leaving its default and maximum to the schema/default value without explicit semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this lists tokenized equities on Robinhood Chain, one row per token, and enumerates the fields returned. It also differentiates itself by explicitly positioning it as the entry point for valid symbols to feed into quote/token_detail, so it is easy to distinguish from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Start here for valid symbols' and directs the agent to feed results into quote/token_detail, giving clear when-to-use guidance. It explains status filtering and defaults, though it could have more explicitly named alternatives like search for name-based lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the read-only annotations: quote values are computed only from the price cache with no quote fan-out, missing/stale quotes are surfaced via a note, results are cached for 120 seconds, and the universe join is case-insensitive. This is excellent transparency for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds value: purpose, data source, schema fields, units, caveats about quote staleness, cache behavior, and an example. It is front-loaded with the main operation and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with an output schema, this description covers all essential operational context: return rows, units, computation constraints, stale-data handling, caching, and a concrete example. Nothing necessary for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines one string parameter with no description, so the description must compensate. It does so by clarifying the wallet-address context and providing a realistic example address, though it leaves explicit format/validation details implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: tokenized equity holdings for a wallet, scoped to the assets() universe and sourced from explorer token balances. It gives enough detail (rows, units, join behavior) to distinguish it from sibling tools like holder_snapshot or transfer_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear use case—querying a wallet's tokenized equity positions—and includes a concrete call example. It does not explicitly state when not to use it or name alternatives, but the context is strong enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, but the description goes well beyond them: it discloses file-backed behavior, newest-first ordering, multiplier adjustment, absence behavior returning count 0, and honest degradation with specific error messages for missing pyarrow or missing recorder data. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds essential operational detail: source type, timeframe behavior, row ordering, symbol semantics, error cases, limit constraints, and an example. It is front-loaded with the most important distinction ('not a live API call') and structured so the agent can quickly route to the right behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return shapes. It covers the data source, optionality, failure modes, parameter constraints, and a concrete usage example. An agent has everything needed to invoke the tool correctly and interpret unusual outcomes like count 0.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameters. It explains timeframe values ('daily' vs 'raw'), the meaning and caps for limit (daily capped at 200, raw at 500), and the symbol semantics including that it is not checked against token_list and absent symbols return count 0. All three parameters are meaningfully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool returns historical prices from a local recorder, not a live API call, and distinguishes the daily OHLCV and raw snapshot modes. It is unambiguous about the resource and scope, and the 'not a live API call' note separates it from quote/quotes siblings without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent this is not a live API call, indicating the tool is for historical data rather than current market data. It also explains the data source is optional and may not exist, and gives error behavior. However, it does not name a sibling tool like quote as the alternative for live prices, so the when-to-use guidance is clear but not fully explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses detailed behavior: ranking order, case-insensitivity, default and maximum limit, no HTTP beyond cached assets, and the fields returned. This gives the agent a clear model of what will happen when the tool is invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries value: scope/ranking, limit/result fields, and a concrete example. It is front-loaded with the core purpose and avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and an output schema, and the description covers the query semantics, limit behavior, ranking, and result contents. Nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the 0% schema description coverage, the description fully explains both parameters: query is matched against symbol/name with an example, and limit has a default of 10 and a cap of 50. It adds meaningful behavior that the bare input schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Local fuzzy search over the token list'. It also distinguishes itself from the sibling tools by emphasizing it is local and requires no HTTP beyond cached assets, which differentiates it from tools like quote or price_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates that this tool is for fuzzy searching tokens by symbol or name, with ranking rules and an example. It does not explicitly name sibling alternatives or state when not to use it, but the local-search context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior, and the description adds important behavioral nuances: it relies only on assets(), avoids fetching hundreds of prices, and treats halted as opportunistic rather than exhaustive. It honestly discloses the limitation of the halted field and points to the appropriate fallback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause adds value: it explains the data source, scope, key fields, limitations, and a corrective alternative. There is no filler or repetition of schema/annotation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema present, this description is complete. It covers what the tool computes, what it intentionally excludes, how halted detection works, and how to get more accurate halt data when needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema fully describes this, so the description does not need to explain parameters. The inclusion of an example call, "market_status()", reinforces the no-argument invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports "Market-wide health" and specifies the exact data source and computed fields. It differentiates itself from sibling pricing tools by explicitly saying it "never fetches 194 prices," making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use this tool: for market-wide aggregates from assets() rather than per-symbol pricing. It also names an alternative action—"call quotes() on suspect symbols for a real halt scan"—so an agent knows exactly when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint=false), the description discloses important runtime behavior: warm=False makes no upstream requests, warm=True fans out quotes() with parallel batches, requests_made counts cache misses, and unknown sector names raise with the valid list. This adds meaningful transparency about side effects and performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, with each sentence adding value: the one-line summary, the warm=False behavior, the warm=True behavior, the sector filtering/error case, and a concrete example. It is front-loaded with the core purpose and does not waste words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description doesn't need to explain return shapes. It covers the parameter semantics, edge cases, caching/rate-limit behavior, and error handling. Nothing essential is missing for the agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates. It explains the exact meaning and consequences of warm, the behavior of sector including the 'Name' string format, the unknown-name error, and the example sector value 'Crypto/Digital Assets'. All two parameters are semantically covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, actionable statement: 'Sector map (13 sectors, static validated classification) with per-sector size and live averages.' This clearly identifies the resource and the kind of data returned, and distinguishes it from sibling tools like token_list or quote by describing a sector-level aggregate view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly distinguishes warm=False and warm=True, telling the agent when to use the cheap snapshot versus the live data path, and explains the rate-limit-safe batching behavior. It also covers the sector filter and error behavior for unknown names, giving clear decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
shields.io Endpoint
For READMEs with an existing badge row. Append &style=flat-square (or any other shields.io style) to match the rest, and &metric=tools, &metric=maintenance or &metric=claim to badge a different dimension.
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/alekskram/arcus-agent-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server