AsOf Demo
Server Details
Anonymous, read-only demo of historical crypto wallet holdings, recorded prices, coverage evidence and CSV exports. Replays two fixed public EVM and Solana wallet examples at the listed date; no new wallet scans or live price lookups. No sign-up, OAuth, API key or credits required. Explore at https://asof.xyz/demo. Use https://mcp.asof.xyz/mcp with a paid AsOf account to scan your own wallets.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
get_holdings and retrieve_holdings are explicitly described as returning the same fixed data, so an agent cannot reliably choose between them. Other tools are more distinct, but this overlap creates a clear misselection risk.
Tool names follow a consistent snake_case verb_noun pattern (export_holdings_csv, get_historical_price, list_demo_wallets, etc.). The main issue is semantic rather than stylistic: get_holdings and retrieve_holdings use different verbs for the same operation.
Six tools is well-scoped for a fixed-snapshot demo server covering wallets, holdings, prices, export, and guidance. The count avoids both thinness and bloat, even though one tool is redundant.
The surface covers the apparent demo domain: list wallets, read holdings, read recorded prices, export positions, and explain scope. No write or update operations are expected for a fixed snapshot, though the duplicate holdings tool is redundant rather than adding coverage.
Available Tools
6 toolsexport_holdings_csvDemo: Export holdings csvCRead-onlyIdempotentInspect
Export all positions from a fixed sample as safe CSV, including price/verification evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | ||
| as_of_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world (openWorldHint=false), so the safety profile is covered. The description adds that the data comes from a 'fixed sample' and includes price/verification evidence, but 'safe CSV' is unexplained and no export mechanics (file size, format details) are given.
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?
One sentence that front-loads the action and resource with no padding. The only weak spot is the vague qualifier 'safe', which costs a bit of value per word.
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?
An output schema exists, so return values need not be described, and annotations cover the safety profile. However, the two required parameters are entirely undocumented and there is no routing guidance against five sibling tools, leaving an agent unable to call this correctly without opening the schema and guessing at wallet/date formats.
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% and both required parameters (wallet, as_of_date) carry no descriptions. The description never mentions wallet or date semantics, so it does not compensate for the coverage gap; only a vague sense that all positions are returned is conveyed.
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?
States a specific verb+resource ('Export all positions ... as CSV') and even discloses the content scope (price/verification evidence). It does not differentiate itself from the sibling reads get_holdings and retrieve_holdings, so an agent must infer that this one produces a CSV file rather than holdings data directly.
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?
There is no when-to-use guidance and no mention of the alternatives (get_holdings, retrieve_holdings, list_demo_wallets). The phrase 'fixed sample' weakly implies demo/sample data, but nothing tells the agent when to pick this tool over the other holdings tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_demo_guideDemo: Get demo guideBRead-onlyIdempotentInspect
Explain fixed-snapshot scope and how to connect the separate paid service.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds topical scope (snapshot semantics, paid-service connection) but says nothing about the form, depth, or freshness of the returned content; with an output schema present, that omission is acceptable rather than critical.
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 short sentence with no filler and the key topics front-loaded. It is efficiently sized, though its brevity edges into under-specification rather than tight conciseness.
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 parameters, full annotation coverage, and an output schema that documents the return value, the description only needs to frame what the guide is about, which it does. The gaps are that 'fixed-snapshot scope' and 'separate paid service' are left as unexplained jargon with no indication of the surrounding domain.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4.
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 names the subject matter ('fixed-snapshot scope', 'the separate paid service') but never states the concrete action or artifact: it does not say this returns a static explanatory guide/document, and it does not distinguish itself from sibling demo tools like list_demo_wallets. 'Explain ... and how to connect' describes content topics rather than a tool operation, so an agent gets only a vague sense of purpose.
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?
There is no when-to-use or when-not-to-use guidance and no reference to any alternative tool. An agent must infer from the topic words alone that this is the place to look for demo/snapshot documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_priceDemo: Get historical priceBRead-onlyIdempotentInspect
Read a recorded sample price by symbol or exact contract; no market lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| chain | No | ||
| wallet | No | ||
| as_of_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, which matches 'no market lookup' and reinforces that no external call occurs. The description usefully signals that the returned price is a recorded sample (potentially stale/demo), but says nothing about behavior on unknown symbols, missing records, or date-range limits.
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 tight sentence with the core action front-loaded and the 'no market lookup' qualifier at the end where it reads as a constraint. Nothing is wasted, though the extreme brevity leaves little room for the parameter detail this tool 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?
An output schema exists, so return values need not be explained. But with 4 parameters at 0% schema coverage and only a passing mention of symbol/contract, the description leaves format for 'as_of_date', the meaning of chain vs wallet, and error behavior unspecified.
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% across 4 parameters, so the description must carry the semantics. It only hints at 'asset' (symbol) and 'chain'/'wallet' ('exact contract'), and gives no meaning for 'as_of_date' or the relationship between chain and wallet. Most parameters remain undocumented.
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?
States a specific verb ('Read') and resource ('a recorded sample price') and narrows the source with 'by symbol or exact contract; no market lookup,' which lets an agent tell it apart from a live-quote tool. It does not explicitly differentiate from the holdings/wallet siblings, but those are clearly different resources.
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?
'No market lookup' and 'recorded sample price' imply the usage context: this retrieves stored/demo data rather than fetching live prices. However, no alternative tool is named and no explicit when-not condition is stated, so the routing guidance is inferred rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_holdingsDemo: Get holdingsBRead-onlyIdempotentInspect
Read one listed wallet's precomputed report, paginated; never scan or refresh.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| wallet | Yes | ||
| as_of_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuine context beyond them: the data is precomputed (not computed on demand), results are paginated, and no scan/refresh occurs, which tells the agent about staleness and cost.
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, and the key constraint (precomputed, never scan/refresh) is placed where an agent will see it. It is slightly telegraphic, which costs a little readability but not length.
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?
An output schema exists so return values need not be explained, but for a 4-parameter tool with 0% schema coverage the description leaves required inputs (as_of_date format, wallet identifier form) and sibling routing unexplained.
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% across 4 parameters, so the description carries the full burden. It only implies pagination (limit/offset) and wallet scope; it says nothing about the required as_of_date semantics, accepted date format, or what a 'listed' wallet means.
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?
States a specific verb (Read) and resource (one listed wallet's precomputed report), plus a scoping attribute (precomputed, paginated). It does not, however, distinguish itself from the similarly named sibling retrieve_holdings or export_holdings_csv, leaving an agent to guess which holdings tool applies.
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?
'never scan or refresh' implies this tool only serves cached/precomputed data and should not be reached for fresh computation, which is useful implied guidance. But no alternative tool is named for the refresh/scan case, and no explicit when-to-use condition is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_demo_walletsDemo: List demo walletsARead-onlyIdempotentInspect
List the fixed public wallets, snapshot dates and recorded coverage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds that the wallets are "fixed public" and that snapshot dates/coverage are included, which is modest extra context but not much beyond the annotations and the existing output schema.
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. The verb and the returned content are stated in the first few words and nothing is repeated from the title or schema.
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 zero-parameter read-only list tool with full annotations and a declared output schema, the description covers what is needed to invoke it. It could be slightly richer about what the demo dataset represents, but the return-value burden is already carried by the output schema.
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 tool takes zero parameters, so the schema-level baseline of 4 applies. The description correctly does not invent parameters, though it also offers no scoping or filtering semantics because none exist.
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?
States a specific verb ("List") and concrete resources (fixed public wallets, snapshot dates, recorded coverage), so an agent can predict the shape of the result. It does not explicitly contrast itself with siblings like get_holdings or get_demo_guide, so it falls short of the sibling-differentiating 5.
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?
There is no statement of when to use this tool versus alternatives such as get_holdings, retrieve_holdings, or get_demo_guide. The "demo" naming hints at a demo-data context, but no explicit trigger, prerequisite, or exclusion is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_holdingsDemo: Retrieve holdingsBRead-onlyIdempotentInspect
Retrieve recorded sample positions with provenance; same fixed data as get_holdings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| wallet | Yes | ||
| as_of_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world, non-destructive), so the bar is lower. The description adds genuinely new behavioral context beyond those fields: the data is fixed/sample rather than live, and records carry provenance metadata. It does not describe pagination behavior despite limit/offset parameters.
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 dense sentence with no filler, and the most decision-relevant fact (equivalence to get_holdings) is placed last for emphasis rather than buried. Nothing redundant.
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?
An output schema exists so return values need no explanation, but with four undocumented parameters at 0% schema coverage and no usage routing against get_holdings, the definition is too thin for an agent to invoke it confidently.
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% and there are four parameters, so the description carries the full burden. It only vaguely gestures at 'positions' (wallet, as_of_date) and says nothing about limit/offset semantics, date format, or wallet identifier format, so it fails to compensate for the coverage gap.
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?
States a specific verb+resource ('retrieve recorded sample positions') and front-loads the key distinguishing fact that it serves the same fixed data as get_holdings. That naming of a sibling gives an agent a way to tell the two apart, though it stops short of explaining why a distinct tool exists for identical data.
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 phrase 'same fixed data as get_holdings' implies the two are interchangeable and that this is the demo/sample variant, which is contextual. But there is no explicit when-to-use, when-not-to-use, or selection rule, leaving the agent to infer which of the two holdings tools to call.
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.
6 tool updates
- First observed
export_holdings_csv - First observed
get_demo_guide - First observed
get_historical_price - First observed
get_holdings - First observed
list_demo_wallets - First observed
retrieve_holdings
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.