HEY Research Lab
Server Details
The public record of building on Robinhood Chain — every ship with its source.
- Status
- Healthy
- Uptime
- 99.6% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- hey-research-lab/hey-research-open
- GitHub Stars
- 1
- Server Listing
- HEY Research MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Most tools have a distinct retrieval role (changes ledger, contract detail, evidence receipt, v4 hook, timeline), but research_answer is a composite that overlaps heavily with get_project_timeline, get_changes, get_contract and explain_fact, so an agent must infer when to use the cited one-shot answer versus the granular tools. Descriptions provide guidance (raw data vs. one cited answer) but the boundary is fuzzy, especially between research_answer's what_changed/builder_status and get_changes/get_project_timeline.
All eight tools use snake_case verb_noun or verb_object patterns (explain_fact, find_projects, get_changes, get_contract, get_evidence, get_project_timeline, get_v4_hook, research_answer) with the get_ prefix dominant for retrievals. No camelCase mixing or vague bare verbs.
Eight tools is a well-scoped size for a read-only research/evidence server and each maps to a distinct data surface. The only redundancy is research_answer acting as a synthesized wrapper over several granular tools, which slightly inflates the surface without adding new capability.
The surface covers identity lookup, change feed, project timeline with lenses, contract/creator analysis, v4 hooks, evidence receipts and cited answers, giving strong lifecycle coverage for a research domain. Minor gaps: no way to discover or list projects without already knowing a name/ticker/address, and no batch or export operation.
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. build.change explains one change (event=, or the latest): its stage, who reported it, any exact release↔deployment link, what HEY does not know.
| Name | Required | Description | Default |
|---|---|---|---|
| fact | No | The fact to explain; omit to list them. | |
| slug | Yes | A project slug, e.g. "agentos". | |
| event | No | With fact=build.change: a change-ledger id; omit for the latest. | |
| 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 mark the tool read-only and open-world; the description adds meaningful behavioral detail about what is returned, including derived vs unknown values, winning source, rule version, lineage, and evidence ids, and notes what HEY does not know for build.change. It does not cover permissions, rate limits, or pagination, but those are secondary given the annotations and 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?
Three sentences, front-loaded with the user-facing question and then output and mode details; no filler. The dense fragments and question format are slightly less direct than a plain verb-first statement, but the description remains compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read-only provenance tool with complete input schema coverage and an output schema, the description covers purpose, output shape, list mode, and conditional parameters. It could be stronger by routing among sibling tools, but nothing essential to invoking it correctly is 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 100% and each parameter already has a description, so the description's parameter guidance is mostly reinforcement. It adds cross-parameter context for source.counted and build.change but does not give syntax beyond the schema, so the baseline 3 applies.
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 ('explain') and resource ('fact') and details the output components such as value, derivation, rule/version, winning source, lineage, and evidence ids. It clearly distinguishes listing facts from explaining a specific fact, but does not explicitly differentiate itself from sibling evidence or change tools.
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?
Provides conditional usage for optional parameters: omit fact to list what can be explained, source.counted takes a source id, and build.change explains one change via event id or the latest. It does not say when to prefer this tool over get_evidence, get_changes, or other siblings, leaving alternative selection 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 | Keep only these event types. | |
| 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 | ISO date: events whose own time is before it. | |
| before | No | Browse older than this cursor. | |
| domain | No | Keep only these domains. | |
| 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, but the description adds real behavior: results are 'newest first by first arrival', 'one event per change with its own time and precision, when HEY first knew', and that a retraction means the claim is withdrawn. It also states the epistemics ('Facts, never causes'). Missing are rate limits or error behavior, but the added semantics go well beyond the annotations.
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 scoping question is front-loaded before the ledger definition and cursor instructions, and the phrasing is dense but purposeful. A few fragments ('Facts, never causes.') and the em-dash list are stylistic load rather than wasted space, though they slightly slow comprehension.
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 10-parameter, zero-required read tool with an output schema, the description covers scope, ordering, cursor/sync protocol, and retraction semantics, which is what an agent needs to call it correctly. It leaves the query-mode selection (since vs detectedSince vs after) partially inferable rather than fully spelled out, keeping it from a 5.
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 100% schema coverage the baseline is 3, but the description earns more by explaining the ordering model ('newest first by first arrival') that governs the after/before cursors and by clarifying the distinction between an event's own time and 'when HEY first knew it' (since vs detectedSince). That resolves the trickiest ambiguity in the parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete question ('What changed on Robinhood Chain today or this week, or for one project or contract?') and defines the resource as a 'change ledger' enumerating releases, ships, status moves, deploys, verification, sources and unlocks. 'Without market readings' carves out scope, but no sibling tool (get_project_timeline, get_evidence, explain_fact) is named for contrast, so the agent must infer the boundary.
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?
Clear invocational guidance is given: 'for today pass detectedSince; to sync, pass after=c1.0 and keep each cursor', which tells the agent exactly which mode to pick. There is no explicit when-not guidance or routing to alternatives like get_project_timeline for the same project view, so it stops short of full alternative coverage.
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), published source code 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 | A 0x contract address; or give slug. | |
| 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?
Beyond readOnlyHint/openWorldHint, the description discloses real behavioral quirks: an unread proxy is reported as 'not read' rather than 'not a proxy', method names are withheld and selector signatures are explicitly guesses, and it disclaims being a safety verdict. These are exactly the kind of data-caveats an agent needs and cannot get from annotations or 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?
The lead question is front-loaded well, but the body is a dense comma-spliced list that is hard to parse, and much of it re-enumerates return fields already covered by the output schema. It is information-rich but not efficiently structured.
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?
Given an output schema exists, the return enumeration is partly redundant, but the description still covers inputs, key interpretive caveats, and the limits of the data. The main gap is routing guidance relative to the seven sibling 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?
Schema coverage is 100%, so address/slug/chainId are already fully documented, and the description largely restates them (chainId default 4663, slug returns all of a project's contracts). It adds no format or constraint detail beyond the schema, so the baseline of 3 applies.
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 opening question ('Who made this Robinhood Chain contract, and is it a known project's?') plus the enumerated outputs (deployer, source provenance, Sourcify answer, proxy history, method call counts) make the retrieval target unambiguous. It does not, however, distinguish itself from siblings like get_evidence or get_project_timeline, which could plausibly overlap with provenance and history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the field list; there is no explicit 'use this when' or named alternative. The closing 'Not a safety verdict' functions as a when-not hint, steering agents away from treating it as an audit tool, but no positive selection criteria are offered.
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 | Default build. | |
| 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 declare readOnlyHint and openWorldHint, and the description adds real context beyond them: the event taxonomy returned, the fact that each event carries a timestamp-precision signal ('how precisely HEY knows its time'), and that results are cursor-paged via 'before'. It stops short of describing ordering direction or what an empty page means.
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 as a question that frames intent, followed by one dense but purposeful sentence on event coverage and lenses, then the paging note. Every clause carries information, though the long run-on enumeration is slightly harder to scan than a short list.
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, return values need not be explained, and annotations cover the safety profile; the description fills in the event taxonomy and paging model that the schema does not. The main residual gap is routing guidance among the several sibling read tools, but nothing needed to invoke it correctly is 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 100% and all four parameters are already documented, including defaults for lens and limit and the cursor meaning for before, so the baseline applies. The description only restates the lens set and the cursor paging, adding no syntax or semantic detail the schema lacks.
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 opening question 'What did this project ship, and when?' plus the enumeration of event types (builds, releases, code, contract deploys, upgrades, locks/unlocks) makes the resource and returned content specific. It does not name or exclude a sibling such as get_changes or get_evidence, so an agent cannot fully distinguish overlapping read tools from the description alone.
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 notes 'Lenses: build (default), code, onchain, locks', which implies which lens to pick for which interest, and states paging behavior. However, there is no explicit when-to-use guidance versus get_changes, get_evidence, or explain_fact, and no prerequisites or exclusions are given.
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 hookBRead-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 | The hook's 0x contract address. |
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?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add genuine behavioral caveats beyond the annotations: project attribution is reported only while listed and never resolves to a creator account, and declared callbacks are explicitly 'not a safety verdict'. However, it says nothing about lookup failure behavior or what 'unknowns' means operationally, so the added context is partial.
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 a single compact sentence with no filler, and the resource is front-loaded. But the sentence is overloaded with stacked parentheticals and a trailing 'and unknowns', which makes the returned fields harder to parse on first read than a short enumerated list would be.
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?
The tool is simple (one required address parameter), an output schema exists so return shape needn't be explained, and annotations cover the read-only profile. The description supplies the attribution caveats an agent would otherwise get wrong (listed-only naming, callbacks not being a safety judgment), leaving only sibling routing as a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'address' is fully documented with a pattern in the schema, so the description carries no additional burden. It does not add format or disambiguation detail (e.g., which chain to assume), so the baseline of 3 is appropriate.
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 concrete resource (a Uniswap v4 hook on Robinhood Chain, keyed by address) and enumerates what is returned: builder/project attribution, declared callbacks, source, hooklist entry, and pools by week. An agent can tell this is a provenance/attribution lookup rather than a generic contract fetch, though the interrogative phrasing ('Who built this...?') leaves the verb implicit and no sibling is named for contrast.
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 explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as get_contract or find_projects. The only conditional language ('named only while listed; never a creator account') constrains what the output will contain, not when to call the tool.
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_found is a status, not isError. Not price advice or a safety verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | A name or $TICKER; a shared name lists candidates, never a guess. | |
| days | No | what_changed: default 7. | |
| limit | No | what_changed: events shown, default 25; the total is the whole window. | |
| types | No | what_changed: change types to keep, e.g. build.release. | |
| detail | No | Default summary text; full text; compact drops the capability data from the JSON. | |
| address | No | A 0x contract address on Robinhood Chain. | |
| project | No | A project slug. | |
| building | No | what_changed: only events that count as building. | |
| projects | No | compare_builders: 2 to 4 slugs. | |
| capability | Yes | Which answer; each takes the arguments the tool description names. |
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=true and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious behavior: claims are labeled FACT/DERIVED/UNKNOWN with evidence ids, and 'not_found is a status, not isError', which tells the agent how to interpret an empty result rather than treating it as a failure. It also notes that a shared name lists candidates 'never a guess', and that `detail` controls whether capability data is dropped from the JSON.
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 questions it answers, then capability/argument pairs, then behavior and exclusions — a sensible order with no filler sentences. The telegraphic style ('q: a name or $TICKER, or address, or project: a slug') is dense to the point of being slightly cryptic on first read, but every clause carries 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?
For a 10-parameter, 7-capability tool with an output schema, the description covers the capability routing, the claim taxonomy, error semantics, and scope exclusions, which is most of what an agent needs. The remaining gap is cross-tool routing against its many overlapping siblings, which is not addressed at all.
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 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema cannot express: which capability consumes which argument, the 1–30 day window for what_changed, and the 2–4 / 'no winner' constraint on compare_builders. The capability-to-argument coupling is the key missing piece in the flat schema and the description supplies it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with concrete research questions ('is this project still being built, what did it ship, what changed, is this contract its own') and promises 'One cited answer', which pins down both the verb and the deliverable. It also enumerates the capability modes (research_project, what_changed, verify_project, compare_builders, unknowns) so the tool's scope is legible. What it lacks is explicit differentiation from siblings like find_projects, get_changes, and get_evidence, which cover overlapping ground.
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 maps each capability to its required arguments ('what_changed (project or chain, 1–30 days)', 'compare_builders (2–4, no winner)'), which is useful internal routing, and states exclusions ('Not price advice or a safety verdict'). However, it never says when to use this tool instead of the seven siblings, and the overlaps are severe — `what_changed` vs `get_changes`, `research_project` vs `find_projects`, cited claims vs `get_evidence`. Usage is implied rather than prescribed.
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_answer1 field changed- changed
Output schema / properties / status / enumPrevious value: -[ - "ok", - "not_found", - "moved", - "invalid_request", - "unavailable" -]New value: +[ + "ok", + "ambiguous", + "not_found", + "moved", + "invalid_request", + "unavailable" +]
6 tool updates
- Changed
explain_fact1 field changed- added
Input schema / properties / fact / descriptionAdded value: +"The fact to explain; omit to list them."
- Changed
get_changes3 fields changed- added
Input schema / properties / domain / descriptionAdded value: +"Keep only these domains." - added
Input schema / properties / type / descriptionAdded value: +"Keep only these event types." - added
Input schema / properties / until / descriptionAdded value: +"ISO date: events whose own time is before it."
- Changed
get_contract1 field changed- added
Input schema / properties / address / descriptionAdded value: +"A 0x contract address; or give slug."
- Changed
get_project_timeline1 field changed- added
Input schema / properties / lens / descriptionAdded value: +"Default build."
- Changed
get_v4_hook1 field changed- added
Input schema / properties / address / descriptionAdded value: +"The hook's 0x contract address."
- Changed
research_answer10 fields changed- added
Input schema / properties / address / descriptionAdded value: +"A 0x contract address on Robinhood Chain." - added
Input schema / properties / building / descriptionAdded value: +"what_changed: only events that count as building." - added
Input schema / properties / capability / descriptionAdded value: +"Which answer; each takes the arguments the tool description names." - added
Input schema / properties / days / descriptionAdded value: +"what_changed: default 7." - added
Input schema / properties / detail / descriptionAdded value: +"Default summary text; full text; compact drops the capability data from the JSON." - added
Input schema / properties / limit / descriptionAdded value: +"what_changed: events shown, default 25; the total is the whole window." - added
Input schema / properties / project / descriptionAdded value: +"A project slug." - added
Input schema / properties / projects / descriptionAdded value: +"compare_builders: 2 to 4 slugs." - added
Input schema / properties / q / descriptionAdded value: +"A name or $TICKER; a shared name lists candidates, never a guess." - added
Input schema / properties / types / descriptionAdded value: +"what_changed: change types to keep, e.g. build.release."
1 tool update
- Changed
explain_fact2 fields changed- added
Input schema / properties / eventAdded value: +{ + "description": "With fact=build.change: a change-ledger id; omit for the latest.", + "maxLength": 240, + "type": "string" +} - changed
Input schema / properties / fact / enumPrevious value: -[ - "activity.status", - "build.momentum", - "still_building", - "research.level", - "token.verification", - "source.counted" -]New value: +[ + "activity.status", + "build.momentum", + "still_building", + "research.level", + "token.verification", + "source.counted", + "build.change" +]
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
Publisher details
- Operator
- HEY Research Lab · Publisher source
- Operator website
- https://heyresearch.xyz · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://heyresearch.xyz/mcp/research · Publisher source
- Trust center
- Not available
- Restrictions
- None. Free, no key and no sign-up. Fair-use rate limits apply. · Publisher source
Related MCP Connectors
Token intelligence for Robinhood Chain: onchain and social data on any token, timestamped.
Read Robinhood Chain live: scan a token, trace its deployer, list new launches.
On-chain honeypot/rug scanner, market data, and launch tools for Robinhood Chain (EVM 4663).
Robinhood Chain stock token data — price, split-adjusted supply, DeFi, corporate actions, movers.
Related MCP Servers
- FlicenseAqualityBmaintenanceA 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.959 npm8-
- AlicenseAqualityBmaintenanceRobinhood Chain safety checks for trading agents: check a coin before buying (who is behind it, bundles, dev record, LP), check a transaction or x402 payment before signing (ALLOW / WARN / BLOCK), ERC-8004 agents, Uniswap v4 hooks and Stock Token data. Read-only, free tier, no key.24MIT
- AlicenseAqualityDmaintenanceEnables agents to query live Robinhood Chain data including tokens, wallets, Chainlink feeds, heat scores, and tracking error on tokenized equities, all read-only without API keys.411 npmMIT
- AlicenseCqualityAmaintenanceProvides read-only access and unsigned transaction building for the Robinhood Chain Arbitrum Orbit L2, including NFT, ERC-20, stock tokens, oracles, and EIP-3009 tooling.10017 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.