Skip to main content
Glama

spice-mcp

PyPI version

An MCP server that provides AI agents with direct access to Dune Analytics data. Execute queries, discover schemas and tables, and manage saved queries—all through a clean, type-safe interface optimized for AI workflows.

Discover High-Quality Tables: Leverages Dune Spellbook, Dune's official GitHub repository of curated dbt models, to surface verified, production-ready tables with rich metadata.

Why spice-mcp?

  • Agent-friendly: Designed for AI agents using the Model Context Protocol (MCP)

  • High-Quality Discovery: Leverages Dune Spellbook's GitHub repository to find verified, production-ready tables with rich metadata

  • Efficient: Polars-first pipeline keeps data lazy until needed, reducing memory usage

  • Discovery: Built-in tools to explore Dune's extensive blockchain datasets from both Dune API and Spellbook

  • Type-safe: Fully typed parameters and responses with FastMCP

  • Reproducible: Automatic query history logging and SQL artifact storage

Related MCP server: dune-mcp

Quick Start

  1. Install:

    uv pip install spice-mcp
  2. Set API key (choose one method):

    • Option A: Create a .env file in your project root:

      echo "DUNE_API_KEY=your-api-key-here" > .env
    • Option B: Export in your shell:

      export DUNE_API_KEY=your-api-key-here
  3. Use with Cursor IDE: Add to Cursor Settings → MCP Servers:

    {
      "name": "spice-mcp",
      "command": "spice-mcp",
      "env": {
        "DUNE_API_KEY": "your-dune-api-key-here"
      }
    }

Note: Query history logging is enabled by default. Logs are saved to logs/queries.jsonl (or ~/.spice_mcp/logs/queries.jsonl if not in a project directory). To customize paths, set SPICE_QUERY_HISTORY and SPICE_ARTIFACT_ROOT environment variables. Admin operations (create/update/fork/archive/unarchive) are logged with action_type="admin_action" and include query_id for traceability.

Core Tools

Tool

Description

Key Parameters

dune_query

Execute queries by ID, URL, or raw SQL

query (str), parameters (object), limit (int), offset (int), format (preview|raw|metadata|poll), refresh (bool), timeout_seconds (float)

dune_query_info

Get metadata for a saved query

query (str - ID or URL)

dune_discover

Unified discovery across Dune API and Spellbook (returns verified tables only). Leverages Dune Spellbook GitHub repository for high-quality, curated tables.

keyword (str|list), schema (str), limit (int), source (dune|spellbook|both), include_columns (bool)

dune_describe_table

Get column metadata for a table

schema (str), table (str)

dune_health_check

Verify API key and configuration

(no parameters)

dune_query_create

Create a new saved query

name (str), query_sql (str), description (str), tags (list), parameters (list)

dune_query_update

Update an existing saved query

query_id (int), name (str), query_sql (str), description (str), tags (list), parameters (list)

dune_query_fork

Fork an existing saved query

source_query_id (int), name (str)

dune_query_archive

Archive a saved query

query_id (int)

dune_query_unarchive

Unarchive a saved query

query_id (int)

Resources

  • spice:history/tail/{n} — View last N lines of query history (1-1000)

  • spice:artifact/{sha} — Retrieve stored SQL by SHA-256 hash

What is Dune?

Dune is a crypto data platform providing curated blockchain datasets and a public API. It aggregates on-chain data from Ethereum, Solana, Polygon, and other chains into queryable SQL tables. See the Dune Docs for more information.

What is Dune Spellbook?

Dune Spellbook is Dune's official GitHub repository containing thousands of curated dbt models. These models represent high-quality, production-ready tables that are:

  • Verified: All tables are verified to exist in Dune before being returned

  • Well-documented: Rich metadata including column descriptions and types

  • Maintained: Regularly updated by the Dune community and team

  • Production-ready: Used by analysts and dashboards across the ecosystem

spice-mcp automatically clones and parses the Spellbook repository to discover these high-quality tables, parsing dbt config blocks to resolve actual Dune table names and verifying their existence before returning them to you.

Installation

From PyPI (recommended):

uv pip install spice-mcp

From source:

git clone https://github.com/Evan-Kim2028/spice-mcp.git
cd spice-mcp
uv sync
uv pip install -e .

Requirements: Python 3.13+

Documentation

License

See LICENSE file for details.

Available Tools

10 tools
dune_describe_tableDescribe TableC

Describe columns for a schema.table on Dune.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYes
tableYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read operation ('describe') but does not explicitly state safety, authentication requirements, or side effects. Behavioral traits like idempotency or rate limits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence with no superfluous words. It is front-loaded with the core purpose and immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and only two simple string parameters, the description covers the basic purpose. However, with no annotations and minimal parameter guidance, it falls short of fully informing usage. The presence of an output schema reduces the need to describe return values, so a score of 3 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'schema.table' format without explaining individual parameters. The phrase 'for a schema.table' provides minimal context (e.g., that schema and table are parts of a fully qualified name), but does not define allowed values or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: describing columns for a schema.table. It uses a specific verb 'describe' and identifies the resource as columns, which differentiates it from siblings like dune_discover (which may list tables) and dune_query (which runs queries). However, it lacks detail on what exactly is returned (e.g., column names, types).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. No hints on prerequisites, context, or scenarios where another sibling tool would be more appropriate. The agent must infer usage solely from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_discoverDiscover TablesA

Unified tool to discover tables/models from Dune API and/or Spellbook repository. Search by keyword(s) or list tables in a schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNo
schemaNo
limitNo
sourceNoboth
include_columnsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It lacks details on read-only behavior, authentication, rate limits, or default behavior when both keyword and schema are null. This is insufficient for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no redundancy. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 elaborated. However, the description omits edge cases (e.g., no parameters provided) and pagination. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description adds meaning: keyword search, schema listing, limit, source selection, and include columns. This compensates well for the schema gap, though it does not detail value formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool discovers tables/models from Dune API and/or Spellbook, with two modes: keyword search and listing tables in a schema. It is distinct from sibling tools like dune_describe_table (describe a specific table) and dune_query (run queries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for table discovery, but does not explicitly differentiate from alternatives like dune_describe_table. However, the purpose is clear enough for an agent to infer when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_health_checkHealth CheckA

Validate Dune API key presence and logging setup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It only says 'validate' without details on network calls, return value, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 not be explained. However, lack of detail on logging setup and validation scope makes it somewhat incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, schema coverage 100%. Baseline 4 per rules as description adds no further meaning to empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it validates Dune API key presence and logging setup, which distinguishes it from sibling tools that focus on querying data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives given, but the name 'health check' implies use before other operations. Lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_queryRun Dune QueryC

Execute Dune queries and return agent-optimized preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
parametersNo
refreshNo
max_ageNo
limitNo
offsetNo
sample_countNo
sort_byNo
columnsNo
formatNopreview
extrasNo
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry the burden. It says 'Execute' but does not disclose whether the tool is read-only, can cause side effects, requires authentication, or has rate limits. The presence of a 'refresh' parameter implies caching behavior, but this is not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but overly terse given the tool's complexity. There is no structure (e.g., bullet points or sections) to aid readability, and it omits necessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, 0% schema coverage, no annotations, and a minimal description, the tool definition is severely inadequate. The agent lacks essential information to use the tool correctly, despite the existence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 12 parameters have descriptions in the schema. The tool description adds no parameter semantics—it only says 'Execute Dune queries' and 'return preview', leaving the agent without any understanding of parameters like query, parameters, refresh, limit, offset, etc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Execute Dune queries' and 'return agent-optimized preview', providing a distinct verb and resource. Among siblings like dune_describe_table or dune_query_archive, this tool's role as the execution tool is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives (e.g., dune_query_create, dune_query_archive). The agent receives no context about prerequisites, typical use cases, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_archiveArchive Saved QueryC

Archive a saved Dune query.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It only states the bare action 'archive' without explaining effects (e.g., what happens to the query, permissions needed, reversibility).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (5 words), but it is under-specified. While there is no wasted text, it omits necessary context, making it merely adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and low schema coverage, the description lacks essential context. It does not describe return values (despite an output schema), side effects, or usage conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning to the single parameter `query_id`, which is undocumented in the schema (0% coverage). It fails to explain what the parameter represents or its expected value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool archives a saved Dune query, with a specific verb and resource. However, it does not explicitly differentiate from sibling tools like `dune_query_unarchive` or `dune_query_update`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_createCreate Saved QueryB

Create a new saved Dune query (name + SQL). Requires SPICE_DUNE_ALLOW_SAVES=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
query_sqlYes
descriptionNo
tagsNo
parametersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It reveals a required environment variable, which is a critical constraint. However, it does not describe other behaviors such as whether existing queries are overwritten, if SQL validation occurs, or what the response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no unnecessary words. Every part adds value—action, required fields, and a prerequisite.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, 0% schema coverage, and presence of an output schema, the description is incomplete. It does not explain the return value, the effect of optional parameters, or the implications of the environment variable beyond being required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should compensate. It mentions 'name + SQL' (covering the two required parameters), but fails to describe the three optional parameters (description, tags, parameters). The agent lacks information on their purpose or format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a new saved Dune query, specifying 'name + SQL'. While it doesn't explicitly differentiate from siblings like dune_query_update or dune_query_fork, the verb 'create' and mention of saving indicate a distinct purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a prerequisite (SPICE_DUNE_ALLOW_SAVES=true), which helps the agent know when it can be used. However, it lacks guidance on when to use this tool vs. alternatives like dune_query_update or dune_query, and does not mention any context for creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_forkFork Saved QueryC

Fork an existing saved Dune query. Requires SPICE_DUNE_ALLOW_SAVES=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_query_idYes
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It only mentions a prerequisite but does not disclose behavioral traits like whether the fork is a deep copy, side effects, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with one sentence and a condition. However, it sacrifices essential information at the cost of brevity, making it borderline under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and lack of annotations, the description should cover return values, parameter details, and side effects. It fails to do so, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning beyond parameter names. It does not explain the 'name' parameter or any constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Fork an existing saved Dune query,' which is a specific verb+resource. However, it does not distinguish from similar tools like dune_query_create, so it lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only one usage condition is provided (environment variable requirement). No guidance on when to use this tool versus alternatives like creating a new query or updating an existing one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_infoQuery InfoC

Fetch Dune query metadata (name, parameters, tags, SQL).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose behavioral aspects like idempotency, side effects, or authentication needs; it only describes the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action, but it is too minimal and could include more detail (e.g., parameter clarification) without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Though the tool is simple and has an output schema, the description does not mention return values or complement the schema, leaving the agent underinformed about the operation's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the tool description does not explain the 'query' parameter (e.g., expected format like ID), leaving it ambiguous despite being the only parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch' and the resource 'Dune query metadata' with specific fields (name, parameters, tags, SQL), distinguishing it from siblings like dune_query which executes queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or alternatives are mentioned; the description only states the function without guiding selection among siblings like dune_query or dune_describe_table.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_unarchiveUnarchive Saved QueryC

Unarchive a saved Dune query.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It does not state any side effects (e.g., whether the query becomes queryable again), idempotency, or authentication requirements. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 6 words. It is front-loaded with the verb 'Unarchive', but the brevity sacrifices useful information without being overly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present), the description is still insufficient. It omits the effect of unarchiving, prerequisites, and any differences from sibling tools beyond the verb.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter (query_id) with 0% schema description coverage. The description does not add any meaning beyond the schema, failing to clarify the role or format of the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Unarchive' and resource 'saved Dune query', distinguishing it from the sibling 'dune_query_archive' which performs the opposite action. However, it lacks specificity on what unarchiving entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not mention when to use this tool (e.g., to restore an archived query) or when to avoid it (e.g., if the query is already active). No alternatives are discussed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dune_query_updateUpdate Saved QueryC

Update fields of a saved Dune query (name/SQL/description/tags/parameters). Requires SPICE_DUNE_ALLOW_SAVES=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYes
nameNo
query_sqlNo
descriptionNo
tagsNo
parametersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavior. It states 'Update fields' but does not disclose whether updates are full replacements or merges, if the tool is destructive, or what permissions are needed beyond the environment variable. The presence of an output schema is mentioned but not described, leaving the return behavior unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence plus a prerequisite note, both front-loaded. It is efficient with no wasted words, though it could be slightly expanded to include behavioral details without losing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, 0% schema coverage, no annotations, and an output schema), the description is insufficient. It fails to explain the effect on the query after update, does not mention alternative scenarios, and omits details that would help an agent use the tool correctly. The presence of an output schema is acknowledged but not leveraged to reduce description burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage. The description lists the updatable fields (name, SQL, description, tags, parameters) but adds no detail on format, constraints, or behavior (e.g., whether query_sql must be a full SQL statement, how tags are handled, or the structure of parameters). This is minimal added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update fields') and the resource ('saved Dune query'), with a specific list of updateable fields (name, SQL, description, tags, parameters). It distinguishes itself from sibling tools like dune_query_create, dune_query_fork, and dune_query_archive by implying modification of an existing query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a necessary precondition ('Requires SPICE_DUNE_ALLOW_SAVES=true') but provides no guidance on when to use this tool versus alternatives (e.g., dune_query_create for new queries, dune_query_fork for copies). It lacks exclusions or context for appropriate invocation.

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. 5 tool updatesv1.0.0
    • Addeddune_discover
    • Removeddune_find_tables
    • Addeddune_query_archive
    • Addeddune_query_unarchive
    • Removedsui_package_overview
  2. 9 tool updates
    • First observeddune_describe_table
    • First observeddune_find_tables
    • First observeddune_health_check
    • First observeddune_query
    • First observeddune_query_create
    • First observeddune_query_fork
    • First observeddune_query_info
    • First observeddune_query_update
    • First observedsui_package_overview

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: describe table columns, discover tables/models, health check, execute query, and manage saved queries (create, info, update, archive, unarchive, fork). No overlap.

Naming Consistency5/5

All tools follow the 'dune_' prefix with a verb_noun pattern (e.g., dune_describe_table, dune_query_create). The naming is uniform and predictable.

Tool Count5/5

10 tools is well-scoped for a Dune analytics server, covering core table inspection, query execution, and saved query lifecycle without unnecessary bloat.

Completeness4/5

Covers essential operations: describing/discovering tables, health, query execution, and saved query CRUD (except delete). Missing a list saved queries tool and explicit deletion, but core workflows are supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query and analyze blockchain data from Dune Analytics, supporting execution of saved queries, ad-hoc DuneSQL queries, and access to cached results with parameter support.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Dune MCP Server connects your AI assistant to Dune Analytics, the leading platform for blockchain data. Execute SQL queries across Ethereum, Solana, and 20+ chains to analyze DEX trades, token transfers, NFT sales, and wallet activity. Manage saved queries, upload custom datasets, and access curate
    19
    MIT