MCP server built on top of Dune API endpoint for executing and managing Dune queries
Server has 14 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (dune_query, dune_query_create, etc.). Descriptions are present but often generic (avg ~80 chars, below 194-char baseline). Parameter descriptions exist but lack detail on constraints, formats, and valid ranges. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification. Output schemas not documented. Error handling guidance absent. Composition is reasonable, tools are single-purpose, but chaining support unclear.
Get detailed information about a table including columns and data types
Execute a Dune query with optional parameters and retrieve results
Archive a saved Dune query
Create a new saved query on Dune
Fork an existing Dune query
Fetch Dune query metadata (name, parameters, tags, SQL).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification (READ_ONLY, WRITE, REVERSIBLE). LLMs cannot infer safety properties without explicit hints.
Parameter descriptions lack constraint details. E.g., 'limit' and 'offset' in dune_query have no min/max bounds; 'format' enum is documented but other params lack format/pattern guidance. LLMs cannot validate inputs without explicit constraints.
Output schemas not documented. Tools return results but LLMs have no schema to plan downstream calls or extract fields. E.g., dune_query returns data but structure is opaque.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Unarchive a saved Dune query
Update an existing saved query on Dune
Search for tables in Dune by keyword
Retrieve query execution history
Get the schema/structure of a table
Check server health status and configuration
List all tables in a schema
Verify that a table exists and is accessible
No error recovery guidance. Tools lack descriptions of failure modes, retryability, or next steps. E.g., 'Query not found' vs 'Query not found. Try find_tables() to discover available queries.'
Descriptions are generic and brief (avg ~60 chars vs 194-char baseline). E.g., 'Archive a saved Dune query' lacks context on when to use it, what happens to the query, or whether it's reversible.