Draxlr
Server Details
Draxlr's remote MCP server connects AI assistants to your SQL databases and dashboards. Explore schemas, run read-only queries, manage saved queries and dashboards, and export results, all with row-level security so each user sees only their own data.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 15 tools
Each tool targets a distinct resource+action (run vs. save vs. get vs. list vs. export queries; list/get/export/add for dashboards). The closest pair, draxlr_run_query (ad-hoc SQL) and draxlr_run_saved_query (existing query), is explicitly disambiguated in both descriptions. No two tools appear interchangeable.
Every tool uses the same draxlr_ prefix followed by a consistent verb_noun pattern (list_databases, get_query, run_query, save_query, export_query, etc.). Naming is highly predictable across all 15 tools.
15 tools sit at the top of the ideal range and each maps to a clear operation across databases, queries, dashboards, and docs. No filler or redundant tools are present.
The surface covers the core lifecycle well: discover (list/search), inspect (get schema/get), execute (run), persist (save/update), and export queries and dashboards. Minor gaps exist, such as no delete for queries/dashboards and no create-dashboard or widget-removal operations, but these are workable around.
Available Tools
15 toolsdraxlr_add_query_to_dashboardAdd query to dashboardAInspect
Add a query as a widget to a dashboard. Use draxlr_save_query first to get a queryId, and draxlr_list_dashboards to get a dashboardGroupId.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional widget title (overrides the query name) | |
| queryId | Yes | The queryId to add (from draxlr_save_query or draxlr_run_query) | |
| description | No | Optional widget description | |
| displayType | No | How to display the widget (default table) | |
| dashboardGroupId | Yes | The dashboard id to add the query to (from draxlr_list_dashboards) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about permissions, idempotency, duplicate-widget behavior, or side effects of a mutation. For a write tool with zero annotation coverage this is a substantial gap.
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 tight sentences, with the core action front-loaded and the prerequisite chain immediately after. Nothing extraneous.
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 prerequisite chain is covered and the schema is fully documented, but with no annotations and no output schema, the description leaves success/failure behavior and mutation semantics unexplained. Adequate but with clear gaps.
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 all five parameters are already documented, including the source tools for queryId and dashboardGroupId. The description's mention of those sources duplicates the schema rather than adding format, defaults, or constraints. 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 and resource ('Add a query as a widget to a dashboard'), which is unambiguous and maps directly to the tool name. It also implies its place in the workflow by naming prerequisite siblings, though it never explicitly distinguishes itself from adjacent tools like draxlr_get_dashboard or draxlr_update_saved_query.
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?
Explicitly tells the agent which tools to call first to obtain each required id, which is actionable sequencing guidance. It stops short of when-not-to-use conditions or alternatives (e.g. what to do if the query is already on the dashboard).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_export_dashboardExport a dashboardAInspect
Export an entire dashboard group (all of its widgets) as an Excel workbook (.xlsx) or a PDF. Use draxlr_list_dashboards to get a dashboardGroupId. Returns a short-lived link to download the file.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | PDF only: render the dashboard in light (default) or dark theme | |
| format | No | Export format: 'xlsx' (default) or 'pdf' | |
| showFilters | No | PDF only: include the dashboard's filter bar in the output | |
| dashboardGroupId | Yes | The dashboard id to export (from draxlr_list_dashboards) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully states the return is a 'short-lived link to download the file' and that theme/showFilters are PDF-only, but says nothing about permissions required, whether the export blocks until ready, or any size/time limits on large dashboards.
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 short sentences, front-loaded with the core action and scope, then dependency, then return value. Nothing is padded or repeated.
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 no output schema, the description correctly fills that gap by describing the return as a short-lived download link. Schema coverage is complete for the four parameters, though the absence of any permission or failure-mode notes leaves a minor gap for a file-producing operation.
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%, with enums and per-parameter descriptions already covering theme, format, showFilters, and dashboardGroupId. The description adds the format enumeration and the PDF-only constraint, but largely restates what the schema documents, 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 (export), resource (entire dashboard group, all of its widgets), and output formats (.xlsx or PDF). The scope phrase 'an entire dashboard group (all of its widgets)' cleanly distinguishes it from the sibling draxlr_export_query, which operates on a single query.
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 an explicit prerequisite and routing hint: 'Use draxlr_list_dashboards to get a `dashboardGroupId`', which tells the agent how to obtain the required input. It stops short of stating when to prefer this over draxlr_export_query or draxlr_get_dashboard, but the context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_export_queryExport a queryAInspect
Export a saved query's results as a CSV or Excel (.xlsx) file. Works for both raw SQL and query-builder saved queries. Use draxlr_list_saved_queries or draxlr_get_query to get a queryId. Returns a short-lived link to download the file.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format: 'csv' (default) or 'xlsx' | |
| queryId | Yes | The saved query id to export (from draxlr_list_saved_queries or draxlr_get_query) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does disclose useful traits: the export covers both query types and the return is a short-lived download link. It omits permissions, row/size limits, and whether the export is synchronous, which are the remaining gaps.
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 tight sentences, front-loaded with the action and output, followed by applicability, prerequisite, and return behavior. No filler or redundancy.
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 no output schema, the description usefully explains the return value as a short-lived link, and it covers the prerequisite for queryId. It is nearly complete for a simple two-parameter export, with only limits/permissions unaddressed.
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 both parameters (queryId and the csv/xlsx enum format) are already fully documented in the schema. The description restates the format options and queryId source but adds no syntax or constraint detail beyond that, matching the baseline 3.
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 (export), the exact resource (a saved query's results), and the output formats (CSV or xlsx). It also scopes applicability to both raw SQL and query-builder queries, which cleanly separates it from the sibling draxlr_export_dashboard.
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?
Explicitly tells the agent where to obtain the required queryId (draxlr_list_saved_queries or draxlr_get_query), which is a real prerequisite. It does not, however, distinguish when to export versus running the query inline with draxlr_run_saved_query, so no full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_get_dashboardGet a dashboardAInspect
Get a dashboard's widgets by its id — for example to resolve a dashboard link (…/dashboard/:databaseId/:dashboardGroupId). Returns the list of widgets (name, display type, query) and a url to view it in Draxlr.
| Name | Required | Description | Default |
|---|---|---|---|
| databaseId | Yes | The database id (the :databaseId part of a /dashboard/:databaseId/:dashboardGroupId link) | |
| dashboardGroupId | Yes | The dashboard id (the :dashboardGroupId part of the link) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it is clearly a read operation and it discloses the return shape (widget list plus a viewable URL), which is significant given there is no output schema. It stops short of noting read-only guarantees, permission requirements, or behavior for an unknown/missing dashboard id.
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 tight sentences, front-loaded with the core action and followed by the lookup use case and return contents. Every clause earns its place with no filler.
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 absence of an output schema is compensated by the description enumerating the returned fields and the url, and both required parameters are fully covered by the schema. What is missing is guidance on what happens when the dashboard id is invalid and how this pairs with discovery tools, but overall it is sufficient to invoke correctly.
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 both parameters are already documented as the :databaseId and :dashboardGroupId segments of the dashboard link. The description reinforces that link-based mapping but adds no format, type, or edge-case semantics beyond the schema, 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 states a specific verb and resource ('Get a dashboard's widgets by its id') and immediately contrasts with the id-less sibling paradigm by requiring a dashboard id, so an agent can separate it from draxlr_list_dashboards. It even enumerates the returned payload (widgets with name, display type, query, plus a url), leaving no ambiguity about what the tool produces.
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 supplies a concrete motivating scenario ('to resolve a dashboard link …/dashboard/:databaseId/:dashboardGroupId'), which implies when the tool is useful. However, it never states when NOT to use it or names an alternative (e.g. list_dashboards to discover ids, or add_query_to_dashboard to modify), so routing guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_get_database_schemaGet database schemaAInspect
Get a database's schema — its tables and their columns with data types — so you can write correct SQL. Reference the table name and column name (not the display names) in your queries. Only tables the user can access are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| databaseId | Yes | The database id (from draxlr_list_databases) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses access scoping ('only tables the user can access are returned') and the name-vs-display-name quirk, but says nothing about result size, pagination, or performance for large schemas.
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 tight sentences, front-loaded with the core purpose, then the practical naming caveat. Every sentence earns its place with no filler.
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 no output schema, the description does describe what is returned (tables, columns, data types) and the access filter, which covers the essentials for a simple read tool. It could say a bit more about the shape/limits of the response, but 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?
Schema coverage is 100% and the single databaseId parameter is already fully documented in the schema (including its source, draxlr_list_databases). The description adds no parameter 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?
States a specific verb and resource (get a database's schema) and then enumerates the payload — tables plus their columns with data types. This is clearly distinguishable from siblings like draxlr_list_databases or draxlr_run_query.
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 phrase 'so you can write correct SQL' makes the use context clear: consult this before composing/running queries. It does not explicitly name a sibling or state a when-not condition, so it falls 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.
draxlr_get_queryGet a saved queryAInspect
Get the details of a saved query by its id — for example to resolve a query link. Returns the query's name, description, type ('raw' SQL or 'builder'), SQL (for raw queries) and a url to view it in Draxlr. Raw links look like /explore/:databaseId/:queryId; builder links look like /explore/:databaseId/:tableId/:queryId?saved=true.
| Name | Required | Description | Default |
|---|---|---|---|
| queryId | Yes | The query id (the :queryId part of an /explore/... link) | |
| databaseId | No | The database id (the :databaseId part of the link), used to build the view url |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does so well by enumerating what is returned (name, description, type, SQL, url) and clarifying that SQL is present only for 'raw' queries. It omits read-vs-write framing, auth requirements, and error behavior for missing ids, which keeps it 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?
Purpose is front-loaded in the first clause, followed by a compact return-value summary and link formats. Every sentence is relevant, though the trailing link-format detail is dense enough that it edges past strictly necessary brevity.
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 simple single-resource read with no output schema, the description gives enough on purpose and return shape to call it correctly. Only secondary details like error handling or permission requirements are absent, which is minor for a read-only getter.
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 schema already documents both queryId and databaseId, including that they correspond to parts of an /explore/ link. The description restates the link formats but adds little semantic detail beyond the schema, making the baseline 3 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?
States a specific verb and resource ('Get the details of a saved query by its id') and frames it against the sibling actions: it returns metadata/details rather than listing (list_saved_queries), running (run_saved_query), or exporting (export_query). The 'resolve a query link' framing makes the intended use immediately concrete.
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 a clear context for use ('for example to resolve a query link'), which is a genuine when-to-use signal. It does not name alternatives or exclusions (e.g. 'use list_saved_queries to enumerate'), so it falls just 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.
draxlr_list_dashboardsList dashboardsAInspect
List dashboards in the Draxlr organization. Optionally filter by databaseId. Returns each dashboard's id (use as dashboardGroupId), name and database.
| Name | Required | Description | Default |
|---|---|---|---|
| databaseId | No | Optional database id to list dashboards for a specific database only |
TDQS
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 says 'List' (implying read-only) and describes the return fields, but omits pagination behavior, result limits, ordering, and permission requirements for a list operation. This is a gap for a tool with zero annotation coverage.
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 tight sentences: the first states purpose, the second covers the optional filter and return fields. No wasted words and the key information is front-loaded.
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 simple list tool with one optional parameter and no output schema, the description covers the core facts and return fields. However, with no annotations it should state read-only nature, result limits, or pagination to be fully adequate.
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%; the single databaseId parameter is already documented in the schema. The description adds that filtering is optional, matching the schema, but no additional semantics such as format or edge cases.
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 and resource ('List dashboards'), names the scope ('in the Draxlr organization'), and distinguishes itself from siblings like draxlr_get_dashboard (single retrieve) and draxlr_list_databases by making the entity explicit.
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 optional databaseId filter hints at a narrowing use case, but there is no explicit when-to-use guidance versus draxlr_search or draxlr_get_dashboard. An agent must infer that this is the enumeration entry point for dashboards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_list_databasesList databasesAInspect
List all databases connected to the Draxlr organization. Returns each database's id, name, type and active status. Use the id as databaseId for the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the returned fields (id, name, type, active status), which is useful, but says nothing about permissions, pagination, or scale limits for an org-wide listing.
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 short sentences, front-loaded with the action and scope, then outputs, then the downstream usage hint. Nothing extraneous.
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 zero-parameter list tool with no output schema, the description compensates by enumerating the returned fields and pointing at how the id is consumed elsewhere. An agent has everything needed to call it correctly.
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?
There are zero parameters, so the baseline is 4. The description mentions the `databaseId` naming convention used by sibling tools, which is a small semantic bonus, but there is no schema surface to enrich.
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 (List) and resource (databases) with explicit scope ('connected to the Draxlr organization'). The resource name cleanly distinguishes it from the dashboard-, query-, and docs-oriented siblings.
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 workflow cue — 'Use the id as `databaseId` for the other tools' — telling the agent this is a discovery step that feeds downstream tools. It doesn't state when-not-to-use or name a specific alternative, but no true alternative list-databases tool exists here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_list_saved_queriesList saved queriesAInspect
List the saved queries for a Draxlr database. Returns each saved query's id, name, description and — for raw SQL queries — its SQL. type is 'raw' (SQL) or 'builder' (built in the Draxlr UI); builder queries also have a tableId. Use the id as queryId for draxlr_add_query_to_dashboard, draxlr_run_saved_query or draxlr_export_query.
| Name | Required | Description | Default |
|---|---|---|---|
| databaseId | Yes | The database id (from draxlr_list_databases) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does meaningful work: it enumerates the returned fields (id, name, description, SQL) and explains that SQL appears only for raw queries while builder queries carry a tableId. Pagination, permissions, and behavior on empty results are not covered, but the read-only listing intent is unambiguous.
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, each earning its place: purpose first, returned shape second, id-consumption routing third. No filler and the most decision-relevant information is front-loaded.
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 no output schema, the description compensates by explaining the return payload and the type-dependent fields, plus how the id feeds other tools. For a single-parameter read tool this covers everything an agent needs to call it and use the result.
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?
There is a single parameter (databaseId) with 100% schema description coverage, and the schema already states it comes from draxlr_list_databases. The description only implies the database scope ('for a Draxlr database') and adds no syntax or provenance detail beyond the schema, so 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 and resource ('List the saved queries for a Draxlr database') and goes on to define the returned entity and its 'type' semantics ('raw' vs 'builder'). An agent can distinguish this listing tool from get_query/run_saved_query without opening a schema, especially since it names the three downstream tools that consume the returned id.
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 clear downstream context — 'Use the id as queryId for draxlr_add_query_to_dashboard, draxlr_run_saved_query or draxlr_export_query' — which tells the agent where this tool fits in a workflow. It does not state exclusions or when to prefer it over draxlr_get_query or draxlr_search, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_run_queryRun SQL queryAInspect
Run a read-only SQL query against a Draxlr database and return the resulting rows. Only read (SELECT) queries are allowed. Returns a queryId that can be passed to draxlr_save_query or draxlr_add_query_to_dashboard, and a url to view the query in Draxlr.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | The SQL query to run. Must be a read-only (SELECT) query. | |
| page | No | Page number for pagination (default 1) | |
| pageSize | No | Rows per page (default 25) | |
| databaseId | Yes | The database id (from draxlr_list_databases) |
TDQS
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 usefully discloses the read-only restriction and the returned queryId/url, but says nothing about row limits, query timeouts, permission requirements, or how pagination behaves — meaningful gaps for an arbitrary-SQL execution tool.
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, each earning its place: purpose first, constraint second, return contract third. No filler and the most decision-relevant information is front-loaded.
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 no output schema, describing the returned queryId and url is exactly the right compensation and it does so. The only shortfall is that pagination (page/pageSize exist in the schema) is never mentioned, so result-set handling is slightly under-specified.
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 all four parameters (sql, databaseId, page, pageSize) are already documented in the schema. The description adds no syntax or format detail beyond repeating the read-only constraint, which is the baseline-3 case.
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 (Run) and resource (read-only SQL query against a Draxlr database) plus the output. It implicitly distinguishes itself from draxlr_run_saved_query by emphasizing arbitrary SQL, and names the downstream tools that consume its queryId.
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 description gives a clear usage constraint (only read/SELECT queries are allowed) and shows where the result flows (draxlr_save_query, draxlr_add_query_to_dashboard). However, it never states when to prefer this over draxlr_run_saved_query or draxlr_search, so routing among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_run_saved_queryRun a saved queryAInspect
Run an existing saved query by its id and return the resulting rows. Works for both raw SQL and query-builder saved queries. Use draxlr_list_saved_queries or draxlr_get_query to get a queryId. To run ad-hoc SQL instead, use draxlr_run_query.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default 1) | |
| queryId | Yes | The saved query id to run (from draxlr_list_saved_queries or draxlr_get_query) | |
| pageSize | No | Rows per page (default 25) | |
| databaseId | No | The database id the saved query belongs to (resolved from the query if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses that it returns rows, which is useful, but does not cover pagination defaults (partial - schema covers), auth/permission requirements, or what happens with invalid queryId. For a read/execution tool with zero annotation coverage, this is adequate but not rich.
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 tight sentences: purpose, scope, then two routing alternatives. Front-loaded with the core action and no filler.
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?
Complete enough for a 4-param read/exec tool: purpose, return behavior, id acquisition, and alternative tool are all covered. Without annotations it should ideally say more about permissions or error behavior, but the essentials are present.
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 schema already documents all four parameters including their origins. The description adds only that the queryId originates from list/get tools, which is marginal. Baseline 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?
Specific verb (Run) and resource (saved query) with explicit scope: works for both raw SQL and query-builder saved queries. Clearly distinguishes from sibling draxlr_run_query (ad-hoc SQL) and names where to get the id.
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?
Explicit alternatives for both directions: use draxlr_list_saved_queries or draxlr_get_query to get a queryId, and use draxlr_run_query for ad-hoc SQL. Routing conditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_save_querySave SQL queryBInspect
Save a SQL query to a Draxlr database so it appears under the database's saved queries. Provide either sql (it is executed then saved) or a queryId returned by draxlr_run_query.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | No | The SQL to save. Provide either this or queryId. | |
| name | Yes | Name for the saved query | |
| queryId | No | A queryId from draxlr_run_query. Provide either this or sql. | |
| databaseId | Yes | The database id the query belongs to | |
| description | No | Optional description for the saved query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important trait: the supplied `sql` is executed before being saved, so the agent knows there is real execution side-effect rather than a pure write of text. It omits other meaningful behavior such as whether a duplicate name overwrites or errors, required permissions, and what the call returns.
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 short sentences, front-loaded with the outcome (query appears under the database's saved queries) followed by the input-selection rule. Every sentence carries weight, though the input alternative is restated from the schema.
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 5-parameter mutation tool with no annotations and no output schema, the description covers the core call pattern but leaves gaps: no return value indication (e.g., whether the new saved-query id is returned), no collision/overwrite behavior, and no permission expectations. Adequate but not 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?
Schema description coverage is 100%, and the schema already states the `sql`/`queryId` exclusivity rule verbatim, so the description largely duplicates structured data rather than adding meaning. Baseline 3 applies since the schema does the heavy lifting for all five parameters.
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?
Specific verb (Save) + resource (SQL query) + destination (Draxlr database, appearing under saved queries), which distinguishes it from draxlr_run_query and draxlr_run_saved_query. However, it never explicitly contrasts itself with the sibling draxlr_update_saved_query, so an agent could confuse creating vs. modifying a saved query.
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 either/or pattern for the two input modes (`sql` vs `queryId`) and states that `queryId` originates from draxlr_run_query, which implicitly tells the agent the call sequence. It does not state when to prefer this tool over draxlr_update_saved_query, nor any prerequisites such as ownership or permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_searchSearch queries and dashboardsAInspect
Search a database for saved queries and dashboards by name. Returns matching saved queries and dashboards with their ids and view links. Use the id with draxlr_get_query, draxlr_run_saved_query or draxlr_get_dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The text to search saved query and dashboard names for | |
| databaseId | Yes | The database id (from draxlr_list_databases) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape ('matching saved queries and dashboards with their ids and view links'), which is useful, but doesn't mention whether results are paginated, case-sensitivity, or any permissions needed. Adequate but incomplete.
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 tight sentences with zero waste, front-loaded with the search capability and then the follow-up routing. Every sentence 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?
Covers the what, return values, and next steps for a 2-param search tool. Missing only minor behavioral details like pagination or search semantics, but reasonably complete for the complexity and lack of output schema.
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 schema already documents both parameters in detail. The description implies a name search but adds no syntax or format details beyond the schema. Baseline 3 is correct when the schema does the heavy lifting.
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 ('Search') and resource ('saved queries and dashboards by name'), clearly distinguishing it from sibling list tools like draxlr_list_saved_queries and draxlr_list_dashboards by adding the text-search capability.
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?
Explicitly names follow-up tools (draxlr_get_query, draxlr_run_saved_query, draxlr_get_dashboard) to use after getting an id, which provides a clear workflow. Does not state when to use this search tool versus the list alternatives, so no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_search_docsSearch Draxlr documentationAInspect
Search Draxlr's product documentation (how-to guides, features, dashboards, drill down, access levels, billing) by keyword. Returns the most relevant docs with a title, a short snippet, and a link to the full page. Use this to answer 'how do I…' questions about using Draxlr.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 5) | |
| query | Yes | What to search the documentation for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the return shape (title, snippet, link), which is valuable, but says nothing about read-only nature, permissions, result ranking, or the default/maximum result behavior implied by limit.
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 tight sentences: purpose and scope first, then return format and intended use case. Every clause earns its place with no redundancy.
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?
There is no output schema, but the description compensates by describing the returned fields (title, snippet, link). Combined with the fully documented input schema, an agent has enough to invoke it correctly; only pagination/limit behavior nuance is unstated.
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 both query and limit are already documented in the schema, including the default of 5 and the 1-20 range. The description adds no additional parameter meaning, 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 (Search) and resource (Draxlr's product documentation) and enumerates the covered content areas (how-to guides, features, dashboards, drill down, access levels, billing). This clearly distinguishes it from the generic sibling draxlr_search and the query/dashboard 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?
Gives a clear use case: answer 'how do I…' questions about using Draxlr. It does not, however, explicitly contrast itself with the sibling draxlr_search or state when not to use it, leaving that routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draxlr_update_saved_queryUpdate saved queryAInspect
Update an existing saved query: rename it, change its description, and/or replace its SQL (raw SQL queries only). Provide the saved queryId (from draxlr_list_saved_queries) and any of name, description or sql.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | No | New SQL to replace the query's definition (raw SQL queries only) | |
| name | No | New name for the saved query | |
| queryId | Yes | The saved query id to update (from draxlr_list_saved_queries) | |
| description | No | New description for the saved query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose two useful traits: the update is partial ('and/or', 'any of') and SQL replacement applies to 'raw SQL queries only'. It says nothing about required permissions, reversibility, failure behavior, or the effect on dashboards already using the query.
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 tight sentences with the action and the permissible fields front-loaded, and no filler. It loses a point only because the second sentence largely re-enumerates parameters the schema already describes.
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 mutation tool with no annotations and no output schema, the description covers the what and the input contract but omits outcome behavior: no success/failure semantics, no permission requirements, and no note on what happens when the underlying query is referenced elsewhere. Adequate but with clear gaps.
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 schema already documents all four parameters, setting the baseline at 3. The description's only genuine addition is the 'raw SQL queries only' constraint on `sql`; everything else (queryId source, optionality) restates 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 verb (Update) and resource (an existing saved query), and enumerates exactly which attributes can change: name, description, SQL. It implicitly separates itself from draxlr_save_query by scoping to 'an existing' query, but never names the sibling it is not, so it stops short of full sibling differentiation.
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 concrete invocation guidance: supply the saved `queryId` and 'any of `name`, `description` or `sql`', plus a pointer to draxlr_list_saved_queries as the source of the id. It does not say when to prefer this over draxlr_save_query, nor does it state exclusions such as non-raw-SQL queries being un-updatable beyond the sql field.
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.
15 tool updates
- First observed
draxlr_add_query_to_dashboard - First observed
draxlr_export_dashboard - First observed
draxlr_export_query - First observed
draxlr_get_dashboard - First observed
draxlr_get_database_schema - First observed
draxlr_get_query - First observed
draxlr_list_dashboards - First observed
draxlr_list_databases - First observed
draxlr_list_saved_queries - First observed
draxlr_run_query - First observed
draxlr_run_saved_query - First observed
draxlr_save_query - First observed
draxlr_search - First observed
draxlr_search_docs - First observed
draxlr_update_saved_query
Publisher details
- Operator
- http://github.com/kevivmatrix/
- Operator website
- https://www.draxlr.com
- Vendor relationship
- First-party
- Documentation
- https://docs.draxlr.com/docs/mcp-server
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
The Ramp MCP server enables users to securely connect Ramp with AI assistants like ChatGPT and Claude to query financial data and take actions using natural language. It transforms Ramp's developer API into a SQL interface that LLMs can query, allowing admins to analyze spend trends, identify cost savings, and run complex SQL analyses on comprehensive datasets (transactions, purchase orders, vendors, users), while all users can manage cards, view transactions, request reimbursements, and get expense policy answers.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
Related MCP Servers
- AlicenseAqualityAmaintenanceA read-only MCP server that exposes SQL database access to LLMs, supporting multiple database types, compact columnar results, pagination, and file export.617MIT
- -licenseNot gradedqualityCmaintenanceAn MCP server that bridges AI assistants with SQL databases, enabling natural language querying across multiple database types with built-in optimization and security.3-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides AI assistants with comprehensive access to SQL databases, enabling schema inspection, query execution, and database operations with enterprise-grade security.357MIT
- AlicenseNot gradedqualityAmaintenanceThis MCP server enables AI models to directly and securely query databases using persistent or temporary connections, supporting multiple data sources with automatic connection management.741MIT