HEY Research Lab
Server Details
Evidence-backed Robinhood Chain research: builders, ships, contracts, changes, market context.
- Status
- Healthy
- Uptime
- 99.2% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- hey-research-lab/hey-research-open
- GitHub Stars
- 0
- Server Listing
- HEY Research MCP Server
TDQS
Scored across 8 tools
Several tools overlap in change/ship/evidence reporting: get_changes, get_project_timeline, find_projects (for addresses) and research_answer all surface activity or builder status, while explain_fact, get_evidence and research_answer all handle claims. Descriptions are detailed and scoped, but an agent still faces real choices among them for common queries.
All names use consistent snake_case verb_noun phrasing (explain_fact, find_projects, get_changes, get_evidence, etc.), with no case or style mixing. research_answer is the only slightly non-get_ name but remains predictable.
8 tools is well-scoped for a complex research server covering identity, changes, contracts, timelines, hooks, facts, evidence and answers. No bloat; each tool serves a distinct data layer.
Coverage spans project identity, timelines, change ledgers, contract metadata, v4 hooks, evidence and synthesized answers, with explicit coverage/unknown states. Minor gaps include no project browsing/listing or raw source/ABI retrieval tool, though agents can work around via identifiers and evidence records.
Available Tools
8 toolsexplain_factExplain a factARead-onlyInspect
Why does HEY say a project is Shipping, Dormant or Still Building, or show a figure? The value, FACT, DERIVED or UNKNOWN, the rule and version, the winning source, the inputs, the lineage and the evidence ids. Omit fact to list what can be explained; source.counted takes a source id.
| Name | Required | Description | Default |
|---|---|---|---|
| fact | No | ||
| slug | Yes | A project slug, e.g. "agentos". | |
| source | No | With fact=source.counted: the source id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by disclosing the derivation model (FACT/DERIVED/UNKNOWN) and that lineage and evidence ids are surfaced, but says nothing about auth needs, rate limits, or failure modes.
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 opening rhetorical question is front-loaded and effective, but the middle sentence is a dense enumeration of return fields that largely duplicates what the existing output schema already provides, so not every clause 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 an output schema present, the description need not restate return values, and it correctly focuses on purpose, the discovery mode, and the fact/source dependency. What remains missing is differentiation from sibling lookup tools, which matters given seven related tools.
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?
Beyond the schema (67% coverage), the description explains the cross-parameter dependency that the schema cannot express: 'fact' may be omitted to enumerate explainable facts, and 'source' is only meaningful with fact=source.counted. It does not annotate each enum member individually, but the conditional logic is genuinely additive.
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 and resource: it explains the facts behind HEY's claims (why a project is 'Shipping', 'Dormant' or 'Still Building', or why a figure is shown), and names the returned concepts (value, rule, version, source, lineage, evidence ids). This is concrete and distinguishable from generic read tools, though it never explicitly contrasts itself with siblings like get_evidence or get_contract.
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 one real usage rule — 'Omit fact to list what can be explained' — which tells the agent how to enter discovery mode. However, it offers no guidance on when to choose this tool over the many siblings (get_evidence, get_contract, research_answer), leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_projectsFind a Robinhood Chain projectARead-onlyInspect
Which Robinhood Chain project is this name, $TICKER or 0x contract? Identity only (name, ticker, contract, slug), at most eight rows; give the slug to research_answer. A full 0x address answers whether anyone is building that contract: activity status, ship records in 30 days, the last ship with its source, whether the project names it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Name, $TICKER, slug or 0x contract; q also works. |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral detail beyond that: results are capped at eight rows, output is identity-only, and a full 0x address changes the response to activity status, 30-day ship records, last ship with source, and whether the project names the contract. It does not describe no-match or ambiguity 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 dense sentences, front-loaded with the identity question and then the scope/cap and the 0x-mode behavior. No filler, but the phrasing is compact to the point of being terse ('give the slug to research_answer'), which costs a little readability.
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, yet the description usefully summarizes both response modes and the row cap. Gaps remain around fuzzy matching, result ordering, and empty-result handling, but for a single-parameter lookup tool it is largely 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 one parameter at 100% schema coverage, the baseline is 3; the description exceeds it by explaining that a full 0x address produces a materially different answer shape than a name/ticker query. It adds semantic meaning the schema does not convey, though it never defines what counts as a 'full' address.
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 frames the tool as resolving a name/$TICKER/0x contract to a Robinhood Chain project identity, listing the exact return fields (name, ticker, contract, slug). This is specific enough that an agent can tell it apart from get_project_timeline or research_answer, though it opens with a question rather than a verb, which makes the core action slightly less immediate.
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 a clear downstream routing instruction ('give the slug to research_answer') and describes a distinct usage mode for full 0x addresses. It stops short of stating when NOT to use it (e.g., for contract data, use get_contract), so it is strong context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesWhat changed on Robinhood ChainARead-onlyInspect
What changed on Robinhood Chain today or this week, or for one project or contract? The change ledger without market readings: releases, ships, status moves, contract deploys and upgrades, verification, sources, unlocks — one event per change with its own time and precision, when HEY first knew, and its evidence. Newest first by first arrival; for today pass detectedSince; to sync, pass after=c1.0 and keep each cursor. A retraction means HEY no longer makes that claim. Facts, never causes.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| after | No | Sync forward from this cursor (c1.0 is the start). | |
| limit | No | Default 30. | |
| since | No | ISO date: events whose own time is at or after it (events with no source time are left out). | |
| until | No | ||
| before | No | Browse older than this cursor. | |
| domain | No | ||
| project | No | A project slug. | |
| contract | No | <chainId>:<address>. | |
| detectedSince | No | ISO instant: start a sync at the first event HEY recorded at or after it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds genuine operational context beyond that — newest-first by first arrival, one event per change with its own time and precision plus when HEY first knew and its evidence, and the retraction semantics ('HEY no longer makes that claim'). It does not discuss rate limits or result-volume behavior, so it falls short of a 5.
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?
It is dense but front-loaded: the rhetorical question establishes scope first, then the event inventory, then the pagination/sync mechanics. A few phrasing choices ('when HEY first knew') cost tokens, but every sentence carries routing or behavioral information.
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?
Output schema exists, so return values need no explanation, and the description covers ordering, evidence, retractions, and cursor semantics for a 10-parameter tool. Minor gaps remain: `until` is undocumented in both schema and description, and there is no note on default page size behavior beyond the schema's 'Default 30.'
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 coverage is ~70%, so the schema documents many parameters already (after, before, since, limit, project, contract, detectedSince). The description still adds value by explaining the sync workflow — after=c1.0 as the start cursor, keep each cursor, detectedSince for today — which the bare schema descriptions do not spell out as a procedure.
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?
It names a concrete resource (the change ledger) and enumerates the event families it covers — releases, ships, status moves, contract deploys/upgrades, verification, sources, unlocks — so the agent knows exactly what comes back. The contrast clause 'without market readings' and 'Facts, never causes' carve out scope against neighboring tools, though no sibling is named by name the way a 5 would require.
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?
Gives real selection guidance: use it for today / this week / one project / one contract, pass detectedSince for today, and for incremental sync pass after=c1.0 keeping each cursor. It stops short of naming an alternative (e.g. when to prefer get_project_timeline or explain_fact), so it is clear context rather than full when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contractWho made this contractARead-onlyInspect
Who made this Robinhood Chain contract, and is it a known project's? Project, creation, deployer (the only account named, with a count of other tracked projects' tokens it deployed), verified source and whose code it is (template, bytecode match or its own), Sourcify's answer, proxy and implementation history, interface changes, 7 days of calls per method (counts, names withheld; a selector's signature candidate — a guess, never a name). Address (chainId default 4663) or slug for all of a project's. An unread proxy is "not read", never "not a proxy". Not a safety verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | A project slug, for all of its contracts. | |
| address | No | ||
| chainId | No | Default 4663. |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld, but the description adds real caveats: an unread proxy is reported as 'not read' rather than 'not a proxy', selector signature candidates are 'a guess, never a name', and 'Not a safety verdict.' These are genuine interpretation guardrails beyond structured data.
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 main clause is front-loaded, but the body is a dense run-on of parentheticals (counts, names withheld; template, bytecode match or its own) that is hard to parse in one pass. Every clause carries information, but the structure hurts scanability.
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 an output schema present, the description need not explain return values, yet it usefully characterizes them and flags that no parameter is required (address or slug). For a 3-param open-world read tool it is largely complete, with only sibling-routing guidance missing.
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 coverage is 67% (address has only a pattern, no prose). The description compensates by clarifying the address-vs-slug duality and that a slug returns all of a project's contracts, plus the chainId default of 4663, adding meaning beyond 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 title/description clearly frames the tool as answering 'who made this contract' and enumerates the provenance payload: deployer, verified source, proxy history, call counts. A specific verb+resource is evident, though it never explicitly names a sibling to differentiate from, so it stops short of a 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?
It states an address OR a slug can be supplied ('slug for all of a project's'), which implies how to invoke it, but gives no explicit when-to-use vs siblings like get_v4_hook, get_changes, or find_projects, and states no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidenceOpen evidenceARead-onlyInspect
What backs this claim? Open the record a HEY answer cited by its typed id — ship:, signal:, abi:, impl:, lock:, source:, claim:, state:, narrative:, method:, sourcechange:, security:, v4hook:, v4pool:, ponsgrad: — as a receipt: what it claims, its source URL, when it happened at what precision, when HEY knew, how it is backed. A withdrawn record says so.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A typed evidence id, e.g. "ship:2ac87a66-…". |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuine behavioral context beyond that: what fields the returned receipt contains (claims, source URL, timing precision, when HEY knew, backing) and that withdrawn records are explicitly flagged.
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 motivating question is front-loaded and the payload description is dense but single-pass. The long inline prefix list is necessary information but makes the single sentence heavy; a small structural break would help without losing content.
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 one-parameter read tool with a full output schema and readOnly/openWorld annotations, the description covers purpose, valid input types, returned fields, and the withdrawn-record edge case. An agent has everything needed to call and interpret it.
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 coverage is 100% and the schema already shows the id pattern, so baseline is 3. The description goes further by enumerating the valid typed prefixes (ship:, signal:, abi:, claim:, etc.), which the schema's generic pattern does not convey.
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 ('Open the record') and resource (a typed evidence id cited by a HEY answer), then enumerates the exact id prefixes accepted. An agent can distinguish it from siblings like explain_fact or get_contract without opening a schema.
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 opening question 'What backs this claim?' gives a clear trigger condition for use, and the receipt framing implies verification/provenance workflows. It does not name an alternative tool or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_timelineWhat a project shippedARead-onlyInspect
What did this project ship, and when? Builds, releases, code, contract deploys, upgrades and interface changes, token verification, locks and unlocks, each with how precisely HEY knows its time. Lenses: build (default), code, onchain, locks. Paged with the before cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| lens | No | ||
| slug | Yes | A project slug, e.g. "agentos". | |
| limit | No | Default 30. | |
| before | No | The cursor the previous answer gave. |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), and the description adds real behavioral context beyond them: results carry a time-precision qualifier ('how precisely HEY knows its time'), the response is paged, and pagination is driven by the before cursor. It does not cover ordering or behavior when a slug is unknown, so it stops short of 5.
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?
Front-loaded with the core question, then event coverage, then lens/pagination mechanics — a sensible information order with no filler sentences. It is dense but every clause carries content; the phrasing around HEY's time precision is slightly awkward but not wasteful.
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 an output schema present, the description need not explain return values, and it doesn't. For a 4-parameter, read-only, paged read tool it covers the essentials: scope, event types, lens selection, and pagination. Minor gaps (ordering, empty/unknown-slug behavior) are not blocking for correct 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 coverage is 75%, so the schema already documents slug, limit and before. The description still adds value by naming the four lens values and flagging build as the default (which the enum cannot express) and by explaining that before is a cursor from a previous answer, not an arbitrary timestamp. Limit semantics are left to 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?
States a specific outcome (what a project shipped and when) and enumerates the event classes it covers — builds, releases, code, contract deploys, upgrades, interface changes, token verification, locks/unlocks. An agent can tell it is a project-scoped timeline tool. It does not differentiate itself from siblings like get_changes or get_contract, which is the only thing keeping it from a 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?
The leading question implies the use case (reconstructing a project's shipping history), and the lens list hints at how to narrow scope, but there is no explicit when-to-use versus get_changes, get_contract, or get_evidence, and no stated preconditions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v4_hookUniswap v4 hookCRead-onlyInspect
Who built this Robinhood Chain Uniswap v4 hook? The project HEY ties it to and why (named only while listed; never a creator account), declared callbacks (not a safety verdict), source, hooklist entry, pools by week and unknowns.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| data | No | |
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add genuine caveats beyond the annotations: 'named only while listed; never a creator account' and 'declared callbacks (not a safety verdict)'. These are useful scope limiters, though the phrasing is cramped and omits other operational 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 run-on fragment with nested parentheticals and no front-loaded statement of what the tool does. Several clauses are backward or ambiguous, so the content does not read cleanly despite being short.
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 spelled out, yet the description spends its text enumerating returns while omitting input semantics and usage context. It is adequate for a simple single-parameter lookup but leaves the agent guessing about scope and alternatives.
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 the description never mentions the required address parameter or what it should point at. The single parameter is largely self-evident from the tool name and the address regex pattern, which keeps this at a minimum-viable 3 rather than lower.
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 name and title identify the resource (a Uniswap v4 hook) and the description enumerates the content returned (creator/project tie, declared callbacks, source, hooklist entry, pools by week, unknowns). However, it is phrased as a question with no clear verb, and the extraneous 'Robinhood Chain' framing muddies the scope rather than clarifying it. The purpose is inferable but not stated cleanly.
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, when not to, or how it relates to siblings like get_contract or get_project_timeline. The reader must guess that this is the hook-specific lookup versus the generic contract lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_answerResearch a Robinhood Chain projectARead-onlyInspect
Is this Robinhood Chain project still being built, what did it ship, what changed, is this contract its own? One cited answer. capability: research_project or builder_status (q: a name or $TICKER, or address, or project: a slug; a shared name lists candidates); what_changed (project or chain, 1–30 days); verify_project (address, project?); compare_builders (2–4, no winner); unknowns (every coverage state). Claims FACT/DERIVED/UNKNOWN with evidence ids. Not price advice or a safety verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| days | No | ||
| limit | No | ||
| types | No | ||
| detail | No | ||
| address | No | ||
| project | No | ||
| building | No | ||
| projects | No | ||
| capability | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| answer | Yes | |
| claims | Yes | |
| schema | Yes | |
| status | Yes | |
| evidence | Yes | |
| capability | Yes | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds output-level behavior beyond that: claims are labeled FACT/DERIVED/UNKNOWN with evidence ids, and the tool explicitly declines price advice or safety verdicts. That taxonomy is genuinely useful context an agent cannot get from the annotations, though latency, coverage limits, or rate behavior are not mentioned.
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?
Ten parameters and seven capabilities are compressed into roughly 90 words with no filler sentences; the lead questions and the capability list are front-loaded. The telegraphic parenthetical style is dense but each clause maps to a real routing or parameter decision.
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 an output schema present, the description need not explain return values, and it does add the claim-labeling taxonomy and scope exclusions. However, for a 10-parameter, 7-capability dispatcher with heavy sibling overlap, the missing parameter semantics and absence of sibling routing leave real gaps an agent must resolve by trial.
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 10 parameters, so the description carries the burden. It documents the most important ones (q content types, days 1-30, projects 2-4, full capability enum) but leaves limit, types, detail, and building entirely unexplained, so half the surface remains 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?
The description communicates what the tool produces: a single cited answer to research questions about a Robinhood Chain project, with an enumerated capability list (research_project, what_changed, verify_project, compare_builders, unknowns) that clarifies its scope. It is not a clean verb+resource statement and never mentions the 7 sibling tools, so an agent must infer the boundary versus get_changes, find_projects, or get_evidence on its own.
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 per-capability conditions in parentheses: q accepts a name/$TICKER/address/project slug (a shared name lists candidates), what_changed takes a project or chain over 1-30 days, compare_builders takes 2-4 with no winner. It also states an explicit exclusion, 'Not price advice or a safety verdict,' which acts as a when-not. It falls short of naming the sibling alternatives that cover overlapping ground.
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.
1 tool update
- Changed
research_answer4 fields changed- changed
Input schema / properties / capability / enumPrevious value: -[ - "research_project", - "what_changed", - "builder_status", - "verify_project", - "compare_builders", - "unknowns" -]New value: +[ + "research_project", + "what_changed", + "builder_status", + "verify_project", + "compare_builders", + "unknowns", + "chain_brief" +] - changed
Input schema / properties / detail / enumPrevious value: -[ - "summary", - "full" -]New value: +[ + "summary", + "full", + "compact" +] - changed
Output schema / properties / capability / enumPrevious value: -[ - "research_project", - "what_changed", - "builder_status", - "verify_project", - "compare_builders", - "unknowns" -]New value: +[ + "research_project", + "what_changed", + "builder_status", + "verify_project", + "compare_builders", + "unknowns", + "chain_brief" +] - changed
Output schema / requiredPrevious value: -[ - "schema", - "schemaVersion", - "capability", - "status", - "answer", - "claims", - "evidence", - "data" -]New value: +[ + "schema", + "schemaVersion", + "capability", + "status", + "answer", + "claims", + "evidence" +]
1 tool update
- Changed
find_projects1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Name, $TICKER, slug or 0x contract."New value: +"Name, $TICKER, slug or 0x contract; q also works."
1 tool update
- Changed
get_changes1 field changed- changed
Input schema / properties / type / items / enumPrevious value: -[ - "build.release", - "build.code_activity", - "build.ship", - "build.status_changed", - "build.dormant", - "build.resumed", - "build.accelerating", - "build.slowing", - "contract.deployed", - "contract.followup_deployed", - "contract.implementation_changed", - "contract.source_verified", - "contract.source_unverified", - "contract.interface_changed", - "contract.usage_changed", - "contract.method_first_observed", - "contract.method_resumed", - "token.launch_stage_changed", - "token.verification_changed", - "research.published", - "research.builder_verified", - "research.owner_verified", - "research.source_added", - "research.source_unavailable", - "research.source_restored", - "research.source_changed", - "research.narrative_assigned", - "lock.unlock_due", - "lock.observed", - "lock.withdrawn" -]New value: +[ + "build.release", + "build.code_activity", + "build.ship", + "build.status_changed", + "build.dormant", + "build.resumed", + "build.accelerating", + "build.slowing", + "contract.deployed", + "contract.followup_deployed", + "contract.implementation_changed", + "contract.source_verified", + "contract.source_unverified", + "contract.interface_changed", + "contract.usage_changed", + "contract.method_first_observed", + "contract.method_resumed", + "contract.v4_pool_initialized", + "token.launch_stage_changed", + "token.verification_changed", + "research.published", + "research.builder_verified", + "research.owner_verified", + "research.source_added", + "research.source_unavailable", + "research.source_restored", + "research.source_changed", + "research.narrative_assigned", + "lock.unlock_due", + "lock.observed", + "lock.withdrawn" +]
1 tool update
- Changed
research_answer2 fields changed- added
Input schema / properties / detailAdded value: +{ + "enum": [ + "summary", + "full" + ], + "type": "string" +} - added
Input schema / properties / qAdded value: +{ + "maxLength": 64, + "minLength": 2, + "type": "string" +}
1 tool update
- Changed
find_projects1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Name, ticker, slug or 0x contract."New value: +"Name, $TICKER, slug or 0x contract."
1 tool update
- Added
get_v4_hook
10 tool updates
- Removed
ask_hey - Removed
chain_overview - Changed
explain_fact1 field changed- changed
Input schema / properties / fact / enumPrevious value: -[ - "market.valuation", - "market.status", - "activity.status", - "build.momentum", - "discovery_gap", - "still_building", - "research.level", - "token.verification", - "source.counted", - "market_integrity.state" -]New value: +[ + "activity.status", + "build.momentum", + "still_building", + "research.level", + "token.verification", + "source.counted" +]
- Changed
find_projects20 fields changed- removed
Input schema / properties / ageRemoved value: -{ - "description": "Since the first pool opened.", - "enum": [ - "day", - "week", - "month", - "older" - ], - "type": "string" -} - removed
Input schema / properties / deployedRemoved value: -{ - "description": "Since the contract was deployed.", - "enum": [ - "day", - "week", - "month", - "older" - ], - "type": "string" -} - removed
Input schema / properties / hasRemoved value: -{ - "description": "Facts every row must carry.", - "items": { - "enum": [ - "token", - "x", - "marketCap", - "launchpad", - "liveMarket", - "verifiedToken", - "trading", - "github" - ], - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / kindRemoved value: -{ - "enum": [ - "UTILITY", - "MEME", - "HYBRID", - "INFRASTRUCTURE", - "RWA", - "APPLICATION", - "OTHER" - ], - "type": "string" -} - removed
Input schema / properties / launchpadRemoved value: -{ - "description": "e.g. \"pons\", \"virtuals\".", - "maxLength": 40, - "type": "string" -} - removed
Input schema / properties / limitRemoved value: -{ - "description": "Default 24.", - "maximum": 48, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / maxMarketCapRemoved value: -{ - "description": "USD, on the card's valuation reading.", - "exclusiveMinimum": 0, - "type": "number" -} - removed
Input schema / properties / minLiquidityRemoved value: -{ - "description": "USD; unknown is excluded, never zero.", - "exclusiveMinimum": 0, - "type": "number" -} - removed
Input schema / properties / minMarketCapRemoved value: -{ - "exclusiveMinimum": 0, - "type": "number" -} - removed
Input schema / properties / minVolumeRemoved value: -{ - "description": "24h volume, USD.", - "exclusiveMinimum": 0, - "type": "number" -} - removed
Input schema / properties / narrativeRemoved value: -{ - "description": "Narrative slug, e.g. \"ai-agents\".", - "maxLength": 80, - "type": "string" -} - removed
Input schema / properties / offsetRemoved value: -{ - "description": "The offset a previous answer gave.", - "minimum": 0, - "type": "integer" -} - changed
Input schema / properties / query / descriptionPrevious value: -"Name, ticker or contract (or its start)."New value: +"Name, ticker, slug or 0x contract." - changed
Input schema / properties / query / maxLengthPrevious value: -120New value: +64 - removed
Input schema / properties / radarRemoved value: -{ - "description": "With surface=builder-radar: a Radar view.", - "enum": [ - "all", - "pons", - "virtuals", - "other-launch", - "no-token", - "new", - "established", - "most-improved", - "development", - "onchain", - "resumed" - ], - "type": "string" -} - removed
Input schema / properties / sortRemoved value: -{ - "description": "Default activity; shipped = newest ship first; shipped7d / shipped30d = most meaningful ships in the last 7 / 30 days.", - "enum": [ - "activity", - "shipped", - "shipped7d", - "shipped30d", - "marketCap", - "newest", - "liquidity", - "volume24h" - ], - "type": "string" -} - removed
Input schema / properties / stageRemoved value: -{ - "description": "Token launch stage.", - "enum": [ - "curve", - "graduated", - "dex" - ], - "type": "string" -} - removed
Input schema / properties / statusRemoved value: -{ - "description": "Activity status.", - "enum": [ - "SHIPPING", - "ACTIVE", - "QUIET", - "DORMANT", - "RESUMED", - "UNKNOWN" - ], - "type": "string" -} - removed
Input schema / properties / surfaceRemoved value: -{ - "enum": [ - "building-with-token", - "still-building", - "under-the-radar", - "shipping-now", - "most-active", - "new-builders", - "back-from-dormancy", - "utility", - "memes", - "shipping-in-silence", - "accelerating", - "builder-radar" - ], - "type": "string" -} - added
Input schema / requiredAdded value: +[ + "query" +]
- Changed
get_changes2 fields changed- changed
Input schema / properties / domain / items / enumPrevious value: -[ - "build", - "contract", - "market", - "token", - "research", - "lock", - "market_integrity" -]New value: +[ + "build", + "contract", + "token", + "research", + "lock" +] - changed
Input schema / properties / type / items / enumPrevious value: -[ - "build.release", - "build.code_activity", - "build.ship", - "build.status_changed", - "build.dormant", - "build.resumed", - "build.accelerating", - "build.slowing", - "contract.deployed", - "contract.followup_deployed", - "contract.implementation_changed", - "contract.source_verified", - "contract.source_unverified", - "contract.interface_changed", - "contract.usage_changed", - "contract.method_first_observed", - "contract.method_resumed", - "market.status_changed", - "market.liquidity_moved", - "market.volume_spike", - "market.distribution_changed", - "token.launch_stage_changed", - "token.verification_changed", - "research.published", - "research.builder_verified", - "research.owner_verified", - "research.source_added", - "research.source_unavailable", - "research.source_restored", - "research.source_changed", - "research.narrative_assigned", - "lock.unlock_due", - "lock.observed", - "lock.withdrawn", - "market_integrity.event" -]New value: +[ + "build.release", + "build.code_activity", + "build.ship", + "build.status_changed", + "build.dormant", + "build.resumed", + "build.accelerating", + "build.slowing", + "contract.deployed", + "contract.followup_deployed", + "contract.implementation_changed", + "contract.source_verified", + "contract.source_unverified", + "contract.interface_changed", + "contract.usage_changed", + "contract.method_first_observed", + "contract.method_resumed", + "token.launch_stage_changed", + "token.verification_changed", + "research.published", + "research.builder_verified", + "research.owner_verified", + "research.source_added", + "research.source_unavailable", + "research.source_restored", + "research.source_changed", + "research.narrative_assigned", + "lock.unlock_due", + "lock.observed", + "lock.withdrawn" +]
- Removed
get_project_snapshot - Changed
get_project_timeline1 field changed- changed
Input schema / properties / lens / enumPrevious value: -[ - "everything", - "build", - "code", - "onchain", - "market", - "locks" -]New value: +[ + "build", + "code", + "onchain", + "locks" +]
- Removed
get_token_market - Removed
market_integrity - Removed
project_diff
1 tool update
- Changed
find_projects2 fields changed- changed
Input schema / properties / sort / descriptionPrevious value: -"Default activity; shipped = newest ship first."New value: +"Default activity; shipped = newest ship first; shipped7d / shipped30d = most meaningful ships in the last 7 / 30 days." - changed
Input schema / properties / sort / enumPrevious value: -[ - "activity", - "shipped", - "marketCap", - "newest", - "liquidity", - "volume24h" -]New value: +[ + "activity", + "shipped", + "shipped7d", + "shipped30d", + "marketCap", + "newest", + "liquidity", + "volume24h" +]
16 tool updates
- Changed
ask_hey2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
chain_overview2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Removed
compare_projects - Changed
explain_fact2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
find_projects2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
get_changes2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
get_contract2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
get_evidence2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Removed
get_project_coverage - Changed
get_project_snapshot2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
get_project_timeline2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
get_token_market2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Removed
lookup_token - Changed
market_integrity2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
project_diff2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "api": { + "type": "string" + }, + "data": {}, + "schema": { + "const": "hey.mcp-api-answer", + "type": "string" + } + }, + "required": [ + "schema", + "api" + ], + "type": "object" +}
- Changed
research_answer2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "answer": { + "additionalProperties": true, + "properties": { + "text": { + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "capability": { + "enum": [ + "research_project", + "what_changed", + "builder_status", + "verify_project", + "compare_builders", + "unknowns" + ], + "type": "string" + }, + "claims": { + "items": { + "additionalProperties": true, + "properties": { + "id": { + "type": "string" + }, + "status": { + "enum": [ + "FACT", + "DERIVED", + "UNKNOWN" + ], + "type": "string" + } + }, + "required": [ + "id", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "data": { + "anyOf": [ + { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "evidence": { + "items": { + "additionalProperties": true, + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + "schema": { + "const": "hey.agent-intelligence-response", + "type": "string" + }, + "schemaVersion": { + "const": "1", + "type": "string" + }, + "status": { + "enum": [ + "ok", + "not_found", + "moved", + "invalid_request", + "unavailable" + ], + "type": "string" + } + }, + "required": [ + "schema", + "schemaVersion", + "capability", + "status", + "answer", + "claims", + "evidence", + "data" + ], + "type": "object" +}
2 tool updates
- Changed
find_projects1 field changed- changed
Input schema / properties / sort / descriptionPrevious value: -"Default activity (card completeness, then activity); shipped = most recently shipped first."New value: +"Default activity; shipped = newest ship first."
- Changed
research_answer1 field changed- added
Input schema / properties / buildingAdded value: +{ + "const": "only", + "type": "string" +}
1 tool update
- Added
research_answer
Related MCP Connectors
Token intelligence for Robinhood Chain: onchain and social data on any token, timestamped.
Robinhood Chain intelligence: trend scores, launch radar, KOL leaderboard, pre-trade risk checks.
Robinhood Chain risk layer: token Risk Level, contract scans, wallet x-rays, non-custodial trades
On-chain honeypot/rug scanner, market data, and launch tools for Robinhood Chain (EVM 4663).
Related MCP Servers
- AlicenseAqualityCmaintenanceA zero-config data server for read-only queries on Robinhood Chain (stock tokens, memecoins, launches, chain stats) and an opt-in trading server with spend caps and confirm gates for executing swaps and transfers.943 npm6-

PALISADE MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceOnchain security scanner for DeFi traders, protecting against rugpulls, honeypots, and dangerous token approvals on Robinhood Chain and other networks.MIT
fingersofficial
AlicenseNot gradedqualityCmaintenanceRead-only checks on tokens, NFTs, wallets, contracts and tokenized stocks before an agent acts. Honeypot, peg, copycat, wallet risk. Deep Robinhood Chain coverage. Never your keys.MIT- AlicenseNot gradedqualityBmaintenanceAn MCP server providing EVM-native on-chain trading intelligence for Robinhood Chain (chain id 4663), including real-time KOL trades, DEX trade tape, token discovery, and deployer reputation.403 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.