Query Info
dune_query_infoFetch Dune query metadata including name, parameters, tags, and SQL to understand and manage blockchain data queries.
Instructions
Fetch Dune query metadata (name, parameters, tags, SQL).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/spice_mcp/mcp/server.py:173-178 (registration)Registration of the 'dune_query_info' tool using FastMCP's @app.tool decorator, specifying name, title, description, and tags.
@app.tool( name="dune_query_info", title="Query Info", description="Fetch Dune query metadata (name, parameters, tags, SQL).", tags={"dune", "query"}, ) - src/spice_mcp/mcp/server.py:179-211 (handler)The handler function for 'dune_query_info' that extracts query ID/URL, fetches metadata from Dune API using HTTP GET, extracts relevant fields like name, description, tags, parameters, SQL, and returns them in a structured dict. Handles errors gracefully.
def dune_query_info(query: str) -> dict[str, Any]: _ensure_initialized() try: qid = dune_urls.get_query_id(query) url = dune_urls.url_templates["query"].format(query_id=qid) from ..adapters.dune.user_agent import get_user_agent as get_dune_user_agent headers = { "X-Dune-API-Key": dune_urls.get_api_key(), "User-Agent": get_dune_user_agent(), } client = HTTP_CLIENT or HttpClient(Config.from_env().http) resp = client.request("GET", url, headers=headers, timeout=10.0) data = resp.json() if resp.headers.get("content-type", "").startswith("application/json") else {} # Select useful fields; fall back gracefully if missing payload = { "ok": resp.ok, "status": resp.status_code, "query_id": qid, "name": data.get("name"), "description": data.get("description"), "tags": data.get("tags"), "parameters": data.get("parameters"), "version": data.get("version"), "query_sql": data.get("query_sql"), "query_url": f"https://dune.com/queries/{qid}", } return payload except Exception as e: return error_response(e, context={ "tool": "dune_query_info", "query": query, })