Skip to main content
Glama
Skeego

opendata-mcp

by Skeego

opendata-mcp

CI

A Model Context Protocol server for the OpenData Platform API. Tools are generated dynamically from the bundled OpenAPI 3.1 spec — every endpoint is exposed as an MCP tool with a typed input schema and a transparent HTTP handler.

  • GET endpoints: 76 — exposed without auth (the API serves them unauthenticated).

  • Write endpoints (POST / PUT / PATCH / DELETE): 23 — require a Bearer token via OPENDATA_API_KEY.

  • Built on @modelcontextprotocol/sdk (TypeScript) with stdio transport.

Install

Uses pnpm (pinned via packageManager in package.json so corepack enable is enough to get the right version).

pnpm install
pnpm run build

Related MCP server: cod-api MCP Server

Configure

Copy .env.example.env (or set in your MCP client config) and fill in:

OPENDATA_BASE_URL=https://api.tryopendata.ai   # required at call time
OPENDATA_API_KEY=od_live_xxx                   # required for writes
# OPENDATA_READ_ONLY=true                      # optional: only register GET tools
# OPENDATA_TIMEOUT_MS=30000                    # optional: per-request timeout
# OPENDATA_MAX_ATTEMPTS=3                      # optional: total HTTP attempts (retries are bounded; see below)
# OPENDATA_LOG_LEVEL=info                      # optional: off|error|info|debug

Secrets are never read from the repo. .env is gitignored; .env.example ships placeholders only.

Run

# Dev (tsx, no build step)
pnpm run dev

# Production (after build)
pnpm start

The server speaks MCP over stdio — wire it into any MCP-capable client. Example client config (Claude Desktop / similar):

{
  "mcpServers": {
    "opendata": {
      "command": "node",
      "args": ["/absolute/path/to/opendata-mcp/dist/index.js"],
      "env": {
        "OPENDATA_BASE_URL": "https://api.tryopendata.ai",
        "OPENDATA_API_KEY": "od_live_xxx"
      }
    }
  }
}

Test

pnpm test            # unit tests (mocked fetch — offline-safe)
pnpm run typecheck   # tsc --noEmit

Live tests against the real API run only when OPENDATA_BASE_URL is set:

OPENDATA_BASE_URL=https://api.tryopendata.ai pnpm test

CI runs the unit suite on every push/PR (badge above). The live smoke job runs on a daily schedule (and on pushes to main) only if the repo has OPENDATA_BASE_URL (and optionally OPENDATA_API_KEY) configured as Actions secrets — it's continue-on-error: true so a transient upstream outage doesn't show the repo as red.

How tool generation works

At startup the server:

  1. Loads openapi.json (OpenAPI 3.1, bundled).

  2. Walks every (path, method) pair (skipping deprecated operations and skipping non-GET when OPENDATA_READ_ONLY=true).

  3. Converts each operation's path + query parameters (and JSON request body for writes) into a Zod input schema via openapi-to-zod.ts.

  4. Registers one MCP tool per operation. The tool name is the OpenAPI operationId (sanitized to [a-zA-Z0-9_-]{1,64}); the description is METHOD path (auth?) — summary — description.

  5. On invoke, builds the URL (substituting path params + appending the query string), attaches Authorization: Bearer ${OPENDATA_API_KEY} for non-GET, sends the request, and returns the response as a text MCP content block.

The auth contract is enforced at the client layer (src/api-client.ts):

  • GET → no auth header is sent. If you pass a key it's still ignored.

  • Non-GET → OPENDATA_API_KEY is required; the request fails fast with a clear error if it's missing.

Logging, retries, and shutdown

  • Structured logging to stderr (stdout is reserved for the MCP protocol). One JSON object per line: {ts, level, msg, ...fields}. Tuned via OPENDATA_LOG_LEVEL (off|error|info|debug, default info). Every tool invocation carries a short rid (request id) that also surfaces in any error message returned to the client — so a user can quote an ERROR (rid=…) and you can grep it in logs.

  • Bounded retries on transient failures only: 502 / 503 / 504 and network errors are retried with jittered exponential backoff (200ms → 600ms → 1.4s, capped). 500 and any 4xx are never retried — a 500 means "I tried, it broke" and retrying just hammers a server that already gave its answer; a 4xx means the request is wrong and retrying won't help. Total attempts via OPENDATA_MAX_ATTEMPTS (default 3).

  • Graceful shutdown on SIGINT / SIGTERM: the MCP transport is closed before process.exit so any in-flight tool calls have a chance to land.

Layout

src/
  index.ts              # entry — MCP server, stdio transport
  openapi-loader.ts     # loads + normalizes the bundled spec
  openapi-to-zod.ts     # OpenAPI schema → Zod schema converter
  api-client.ts         # fetch wrapper + auth contract
  tools.ts              # generates MCP tool defs from normalized ops
  __tests__/
    tools.test.ts       # unit tests (mocked fetch)
    live.test.ts        # live tests (skipped unless OPENDATA_BASE_URL set)
openapi.json            # bundled OpenAPI 3.1 spec

License

MIT

Available Tools

99 tools
add_comment_v1_requests__request_id__comments_postC

POST /v1/requests/{request_id}/comments (auth: Bearer OPENDATA_API_KEY) — Add Comment — Add a comment to the request thread. Authenticated users only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyYesRequest body (application/json) for POST /v1/requests/{request_id}/comments

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only mentions auth requirement. No disclosure of side effects, success/error behavior, or limits. Schema provides maxLength but description adds no behavioral context.

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?

Very concise single sentence, suitable for simple action. However includes HTTP method and auth key which may be noise. Could be more structured but not overly 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?

No output schema, partial parameter descriptions, no annotations. Missing response format, explanation of request_id, and body structure beyond schema. Incomplete for a mutation tool.

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?

Description does not elaborate on parameters. Schema coverage is 50% (only body has description). request_id lacks description, and description does not compensate.

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 it adds a comment to a request thread, with verb 'Add' and resource 'comment'. Implicitly distinguishes from siblings like delete_comment and edit_comment but could be more explicit.

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 mentions 'Authenticated users only' as prerequisite. No guidance on when to use vs alternatives like list_request_events or other comment operations. Missing when-not-to-use.

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

approve_request_v1_requests__request_id__approve_postA

POST /v1/requests/{request_id}/approve (auth: Bearer OPENDATA_API_KEY) — Approve Request — Approve a dataset request (pure status change, no pipeline trigger).

Admin-only. Transitions status to approved. The actual dataset creation and ingestion happens separately via the fulfill endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyNoRequest body (application/json) for POST /v1/requests/{request_id}/approve

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries full burden. It discloses that it's a status change without pipeline trigger and admin-only. But lacks details on side effects, reversibility, error scenarios, or rate limits.

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?

Three sentences, front-loaded with endpoint and auth info. Every sentence adds value with no redundancy.

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?

Covers core purpose and distinguishes from fulfill, but lacks parameter explanations and output details. Given no output schema, tool is simple but completeness is adequate.

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 description adds no meaning to parameters; request_id and body (with expected_version, comment) are not explained. Schema coverage is 50% but property descriptions are missing in schema too, so description does not compensate.

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 approves a dataset request, specifies it's a pure status change without pipeline trigger, and differentiates from the fulfill endpoint. The verb 'approve' is specific and the scope (admin-only) is explicit.

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?

It explains when to use (approve a request) and notes that actual dataset creation is done via fulfill. It mentions admin-only prerequisite. However, no explicit exclusions for other sibling tools like reject or in-progress.

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

check_slug_availability_v1_users__user_id__views_check_slug_getA

GET /v1/users/{user_id}/views/check-slug (public) — Check whether a slug is available for the current user — Slug-availability probe used by the sandbox save dialog.

Auth + ownership: the URL clerk_id must match the caller. Returns {available, normalized_slug, reason} where reason is one of "taken" | "reserved" | "invalid" | null.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
slugYes

TDQS

A4.3/5.0
Behavior4/5

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

Given no annotations, the description effectively discloses that this is a read-only GET operation, requires matching clerk_id for auth, and returns a specific response format. It is transparent about the behavior, though it could mention potential error conditions or rate limits.

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 concise, front-loading the purpose and method, followed by auth and return details. Every sentence adds value, and it is well-structured without unnecessary words.

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

Completeness5/5

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

The description covers the endpoint, auth requirement, return format with possible reasons, and practical context (save dialog). Given it is a simple check with no output schema, it provides sufficient information for an agent to use it correctly.

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

Parameters3/5

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

With schema coverage at 0%, the description adds meaning: it indicates that 'user_id' is the clerk_id that must match the caller, and 'slug' is the slug being checked. However, it does not specify constraints like slug format or allowed characters, leaving some ambiguity.

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 tool's purpose: 'Check whether a slug is available for the current user'. It specifies the HTTP method (GET), endpoint, and distinguishes itself as a slug-availability probe used in save dialogs, which is distinct from any sibling tools.

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 provides context on when to use this tool (for checking slug availability in the save dialog) and includes an auth requirement (clerk_id must match caller). However, it does not explicitly mention when not to use it or suggest alternative tools, though no direct alternative exists.

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

compose_download_csv_v1_datasets__provider___dataset__compose_doA

GET /v1/datasets/{provider}/{dataset}/compose/download.csv (public) — Download a composed join as CSV — Stream a composed CSV of provider/dataset joined with target.

Kept narrow for v1: single join, single join column, no computed columns, no filters. Mirrors the shape of POST /compose/preview so users can preview then download without tweaking parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
targetYesJoin target dataset path (e.g. 'census/acs-5yr')
source_columnYesColumn in the main dataset to join on
join_columnYesColumn in the target dataset to join on

TDQS

A4/5.0
Behavior3/5

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

The description notes it's a GET request (public, streaming CSV) and lists current limitations (narrow v1). However, it does not explicitly confirm it's read-only or idempotent. With no annotations, the description partially addresses behavioral traits but lacks full transparency.

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 concise, two sentences plus a line, with the primary purpose front-loaded. Every sentence adds value, including the limitation note and reference to preview endpoint.

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

Completeness4/5

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

Despite no output schema or annotations, the description sufficiently explains the endpoint, its purpose, and constraints. It could mention response format or error handling but is adequate for a straightforward download tool.

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

Parameters3/5

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

Input schema has 60% coverage (3 of 5 params have descriptions). The description adds no extra parameter meaning beyond the schema. It does not compensate for missing descriptions of provider and dataset.

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 tool downloads a composed join as CSV, specifying HTTP method, public availability, and limitations (single join, no computed columns, no filters). It distinguishes itself from sibling tools like compose_preview.

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 explains that this tool mirrors the shape of POST /compose/preview, enabling users to preview then download without tweaking parameters. It implies the preview endpoint is an alternative but does not explicitly state when not to use this tool.

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

compose_preview_v1_datasets__provider___dataset__compose_previewA

POST /v1/datasets/{provider}/{dataset}/compose/preview (auth: Bearer OPENDATA_API_KEY) — Preview a compose/join without saving it — Execute a single-join preview against provider/dataset.

Kept narrow: exactly one join spec per request. Multi-join composition would compound cardinality risk during preview — we want users to vet each join in isolation before they chain them.

Preflight: when the base dataset has more than CARDINALITY_PREFLIGHT_BASE_ROW_THRESHOLD rows, we run a COUNT(*) on the joined query first. If the count exceeds CARDINALITY_PREFLIGHT_HARD_LIMIT we refuse with 400. If it's above the dynamic warning threshold we still run the preview but emit a cardinality_warning and cap rows at CARDINALITY_PREFLIGHT_ROW_CAP.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
bodyYesRequest body (application/json) for POST /v1/datasets/{provider}/{dataset}/compose/preview

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: the preflight cardinality check logic, including thresholds, refusal conditions, warnings, and row capping. This provides comprehensive transparency about what the tool does beyond its basic function.

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 concise, starting with the HTTP method and summary, then explaining the join constraint, and finally detailing preflight behavior. It is well-structured without unnecessary fluff, though slightly more precision could improve it.

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's complexity (nested parameters, no output schema), the description covers purpose, usage, and behavioral transparency but omits return format, error specifics beyond cardinality, and detailed parameter semantics. It is partially complete but leaves gaps for an AI agent to fully understand usage.

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 description does not explain the individual parameters (e.g., provider, dataset, body fields like key, source_column, join_column, select). With only 33% schema description coverage, the description should compensate but only provides high-level context about single joins and cardinality, lacking parameter-level details.

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 'Preview a compose/join without saving it' and 'Execute a single-join preview', specifying the HTTP method and auth. It distinguishes from saving by explicitly noting 'without saving', making the purpose unambiguous.

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 explicitly advises using one join spec per request to avoid cardinality risk, implying users should vet each join in isolation. It provides clear guidance on when to use the tool but does not name sibling alternatives like compose_download_csv, so it's slightly below perfect.

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

create_and_publish_view_v1_user_views_create_and_publish_postA

POST /v1/user-views/create-and-publish (auth: Bearer OPENDATA_API_KEY) — Create a view and publish 1.0.0 atomically — Create a view and immediately publish 1.0.0.

Atomic: the create + publish run inside a single transaction with one final commit. If publish fails for any reason, the create rolls back — no orphan draft is left behind. release_note comes from the request body (see :class:UserViewCreate).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body (application/json) for POST /v1/user-views/create-and-publish

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It effectively discloses the atomic transaction behavior and rollback guarantee, which are critical safety traits. However, it omits response details and error conditions beyond the rollback.

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 succinct, consisting of a few sentences without fluff. It front-loads the key purpose and atomicity. Minor improvement could remove class reference ('see :class:UserViewCreate') which is not helpful to an AI agent.

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?

Despite complex input and no output schema, the description does not mention return values, error responses, or authentication details beyond the inline endpoint line. For a tool with nested objects, more context on expected behavior and success/failure indicators is needed.

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

Parameters3/5

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

Input schema has 1 complex parameter (body) with many properties, but schema description coverage is indicated as 100% (likely meaning schema fully defines structure). The description adds value by noting that 'release_note' comes from the request body, but does not elaborate on other fields. Baseline 3 is appropriate as schema is rich.

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 explicitly states the action: 'Create a view and publish 1.0.0 atomically'. It clearly identifies the verb (create and publish) and resource (view), and distinguishes itself from siblings like create_view and publish_view by highlighting atomicity.

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 implies when to use (when atomicity is desired to avoid orphan drafts) but does not explicitly contrast with separate create-then-publish workflow. Sibling tools exist (create_view, publish_view), but no guidance is provided on when to use this vs. those.

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

create_draft_figure_v1_figures_drafts_postA

POST /v1/figures/drafts (auth: Bearer OPENDATA_API_KEY) — Create a draft figure (snapshot mode) — Create a snapshot draft figure on the authenticated user's profile.

Designed for external clients (MCP today, web sandbox tomorrow) that already have rendered data in hand and want to hand the user off into the figure editor.

Behavior:

  • Caps inline_data at 1000 rows / 512KB serialized. Anything larger is truncated and truncated=true is returned.

  • Per-user soft cap of 100 drafts per origin. Over-limit clients get a 429 asking them to delete or publish before creating more.

  • Idempotent within 60 seconds on the SHA256 of (viz_spec, inline_data, creator_id). Re-posts inside the window return the existing draft id.

  • Creates the row as a private, standalone figure. Pre-p…

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body (application/json) for POST /v1/figures/drafts

TDQS

A4.5/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavioral traits: caps on inline_data (1000 rows/512KB, truncation with truncated flag), per-user soft cap (100 drafts per origin, 429 error), idempotency within 60 seconds using SHA256, and creates a private standalone figure.

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 well-structured with a header and bullet points for behavior, front-loading the purpose. It is not overly verbose, but could be slightly more concise by removing the HTTP method and auth line since that is structural.

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

Completeness4/5

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

Given the complexity (5 nested parameters, no output schema), the description covers key behaviors like creation, limits, and idempotency. It lacks details on the response format (e.g., draft id) and does not explain all parameters in depth, but overall it is sufficiently complete for an agent.

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?

The input schema has no descriptions for individual properties, but the tool description adds context for inline_data (capping and truncation) and origin (per-origin cap). However, other parameters like viz_spec and transform_config lack explanation, though they are somewhat self-explanatory.

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 explicitly states the tool creates a snapshot draft figure on the authenticated user's profile, with a specific verb ('Create') and resource ('draft figure'), and distinguishes from siblings by specifying it's for external clients with rendered data.

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 provides a clear context for when to use this tool (external clients with rendered data wanting to hand off to the figure editor) but does not explicitly state when not to use it or mention alternatives. However, no direct sibling create tool exists, so this is adequate.

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

create_view_v1_user_views_postA

POST /v1/user-views (auth: Bearer OPENDATA_API_KEY) — Create a user view — Create a new user view.

Slugs are unique per creator. Defaults to draft (is_draft=True). Reserved slugs (latest, versions, etc., or any starting with a digit) are rejected with 400.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body (application/json) for POST /v1/user-views

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: auth, default draft status, slug uniqueness per creator, and rejection of reserved slugs. However, it omits details on conflict handling (e.g., if slug taken) and response format.

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?

Three sentences, 45 words, front-loaded with endpoint and auth. No redundant information. Efficient and clear.

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 no annotations or output schema, the description is adequate but incomplete: it explains creation behavior but does not mention return value, error responses, or idempotency. This is a gap for a creation tool.

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

Parameters3/5

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

Schema coverage is high (all 1 parameter body is described), so baseline is 3. The description adds context on slug constraints and draft default, but does not elaborate on parameters like dataset_provider or config. Minimal added value beyond 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?

Clearly states the tool creates a user view via POST endpoint, with specific constraints (slugs unique per creator, default draft, reserved slugs rejection). Distinguishes from siblings like create_and_publish_view or get_view.

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?

Specifies auth requirement (Bearer OPENDATA_API_KEY) and default draft behavior, but does not explicitly state when to use this tool vs alternatives like create_and_publish_view. Guidance is implied (draft vs publish) but lacks explicit when-not or alternative references.

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

cross_dataset_query_v1_query_postA

POST /v1/query (auth: Bearer OPENDATA_API_KEY) — Execute SQL query across multiple datasets — Execute a SQL query across multiple datasets.

Table references use provider.dataset or provider/dataset notation. Each referenced dataset's parquet file is loaded into DuckDB as a named table. Only SELECT statements are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body (application/json) for POST /v1/query

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses the use of DuckDB, loading parquet files, and restriction to SELECT. Auth is mentioned. Could include more on error handling or result structure, but covers key traits.

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?

Description is short and front-loaded. However, it contains redundancy (first sentence repeats the second). Generally efficient.

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?

No output schema exists, and description does not explain return values or error handling. The response_format parameter hints at output types but lacks elaboration. Moderate completeness for a query tool.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description adds context for the 'sql' parameter (table notation) but no additional meaning for params, timeout_ms, row_limit, response_format, or view.

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 verb (Execute SQL query) and resource (across multiple datasets). It specifies table notation and only SELECT statements, distinguishing it from sibling tools like sql_query_v1_datasets__provider___dataset__query_post.

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?

Provides clear context on table notation and allowed statements (SELECT only). However, it does not explicitly compare to alternative tools or mention when not to use it, missing a full guideline.

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

delete_comment_v1_requests__request_id__comments__event_id__deleA

DELETE /v1/requests/{request_id}/comments/{event_id} (auth: Bearer OPENDATA_API_KEY) — Delete Comment — Soft-delete a comment (sets deleted_at). Author or admin only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
event_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses soft-delete behavior (sets deleted_at) and authorization requirements. In absence of annotations, this is good but could mention visibility changes or reversibility.

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?

Single sentence containing all essential info: method, path, auth, action, behavior, restrictions. No superfluous text.

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

Completeness4/5

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

Adequate for a simple delete operation with two required params and no output schema. Could mention response format or error cases, but core info is present.

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

Parameters3/5

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

Schema has 0% description coverage; description only implies parameters via path syntax. Adds minimal meaning beyond the schema, but the path hints at their roles.

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 HTTP method, path, and that it performs a soft-delete of a comment, distinguishing it from siblings like add_comment and edit_comment.

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?

Specifies 'Author or admin only,' indicating required role. While it doesn't explicitly list when not to use, the context of siblings provides implicit guidance.

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

delete_view_v1_user_views__clerk_id___slug__deleteC

DELETE /v1/user-views/{clerk_id}/{slug} (auth: Bearer OPENDATA_API_KEY) — Delete a user view

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes

TDQS

C2.8/5.0
Behavior2/5

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

Only indicates deletion and auth method. No details about side effects (e.g., cascade deletions), irreversibility, or error conditions. With no annotations, description provides minimal behavioral insight.

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?

Extremely concise single sentence with HTTP method and auth. No wasted words, but may be too brief at the cost of missing critical information.

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?

Simple delete tool with no output schema and no annotations. Description does not cover return values, error handling, or prerequisites. Incomplete for an agent to use robustly.

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 description does not explain clerk_id or slug. Agent cannot infer what these parameters represent without additional context.

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 explicitly states 'Delete a user view', with HTTP DELETE method and path. Distinguishes from sibling tools like create_view, update_view, get_view, etc.

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, no prerequisites or ownership requirements mentioned. Agent has to infer use case from tool name and siblings.

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

discover_datasets_v1_discover_getA

GET /v1/discover (public) — Discover Datasets — Discover datasets optimized for LLM agents.

Returns enriched dataset metadata including column schemas, canonical questions, methodology summaries, and quality scores. Requires authentication.

Key differences from /search:

  • Always uses hybrid search with relevance sorting

  • Includes enriched metadata (columns, canonical questions, methodology)

  • Smaller default limit (5) for focused results

  • Requires authentication (designed for API/agent access)

  • No pagination (use /search for browsing)

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query for dataset discovery. Required.
providerNoFilter by provider slug (e.g., 'bls', 'census')
formatNoFilter by data format (e.g., 'csv', 'json')
categoryNoFilter by category tag
statusNoFilter by dataset status. Defaults to 'ready'.
limitNoMaximum number of results to return (1-20)
include_columnsNoWhether to include column metadata in results

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that authentication is required, uses hybrid search with relevance sorting, has a smaller default limit (5), and has no pagination. It does not mention rate limits or potential side effects, but for a read-only discovery tool, these are less critical. Overall, it provides adequate behavioral expectations.

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 concise and well-structured. It opens with the general purpose, then provides a bulleted list of key differences. Every sentence adds value, and there is no redundancy or unnecessary detail.

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

Completeness4/5

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

Given the tool has 7 parameters and no output schema, the description gives a good overview of what is returned (enriched metadata including columns, canonical questions, methodology, quality scores). It does not detail the exact response structure, but for a discovery tool, this level of completeness is sufficient. The lack of output schema is compensated by the description's summary.

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

Parameters3/5

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

All 7 parameters have descriptions in the input schema (100% coverage), so the schema already defines the parameters. The description adds overall context (e.g., default limit of 5) but does not elaborate on individual parameter semantics beyond what the schema provides. Thus, a baseline score of 3 is appropriate.

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 tool's purpose: 'Discover datasets optimized for LLM agents' and specifies the enriched metadata returned (columns, canonical questions, methodology, quality scores). It also explicitly distinguishes itself from the sibling tool search_datasets_v1_search_get, making its unique role evident.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool vs alternatives, including a bulleted list of key differences from /search, notes on authentication requirements, and a directive to 'use /search for browsing' when pagination is needed. This gives clear context for tool selection.

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

edit_comment_v1_requests__request_id__comments__event_id__patchA

PATCH /v1/requests/{request_id}/comments/{event_id} (auth: Bearer OPENDATA_API_KEY) — Edit Comment — Edit a comment. Author or admin only. Sets edited_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
event_idYes
bodyYesRequest body (application/json) for PATCH /v1/requests/{request_id}/comments/{event_id}

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided; description states 'Sets edited_at' which discloses a side effect. However, it does not mention idempotency, safety (mutation), or other behavioral traits, leaving gaps.

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?

Very concise with three sentences. Includes path and auth info at start, which is helpful but not critical. No wasted words.

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?

Lacks details on response format, how to construct the body, and full effect of the mutation. With 3 params and no output schema, the description is insufficient for an agent to fully understand usage.

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 33% (only body has a description). The tool description does not add meaning to request_id, event_id, or the nested body field beyond what the schema provides. It fails to compensate for the low coverage.

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 'Edit Comment' and specifies verb (edit) and resource (comment). Adds constraints like 'Author or admin only' and 'Sets edited_at'. Distinguishes from siblings like add_comment and delete_comment.

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?

Explicitly notes that only author or admin can use this tool, providing a clear access condition. Implicitly differentiates from add_comment and delete_comment by stating 'edit' as the action.

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

export_dataset_as_yaml_v1_datasets__provider___dataset__export_gA

GET /v1/datasets/{provider}/{dataset}/export (public) — Export Dataset As Yaml — Export dataset configuration as YAML.

Returns the dataset configuration in dataset.yaml format, suitable for re-importing via the sync command or POST /datasets endpoint.

The exported YAML can be used to:

  • Create a YAML-based dataset configuration

  • Back up dataset configuration

  • Share dataset definitions across environments

  • Migrate from API-created to YAML-sourced datasets

Note: Only exports configuration, not the actual data.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses that the tool is public, uses GET, exports only configuration (not data), and returns dataset.yaml format. Since no annotations are provided, these details are essential and well-covered. It does not mention rate limits or error cases, but for a simple read operation, this is sufficient.

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 well-structured, starting with the HTTP method and path, then explaining output and use cases. It is front-loaded with purpose and uses bullet points for readability. It could be slightly more concise, but every sentence adds value.

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

Completeness4/5

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

The description covers the main aspects: what it does, the output format, use cases, and a note on what it does not export. Without an output schema or annotations, it provides enough context for an agent to understand the tool's function and limitations.

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

Parameters3/5

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

The input schema has two parameters (provider, dataset) with no descriptions, and the tool description shows them in the URL path but does not add explicit meaning or constraints. Given zero schema coverage, the description partially compensates by indicating their role, but could provide more context (e.g., expected format or examples).

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 tool's purpose: export dataset configuration as YAML. It identifies the specific resource (dataset configuration) and distinguishes itself from sibling tools like get_dataset_by_path or get_dataset_meta by focusing on YAML export for re-import.

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 explains when to use the tool, listing use cases like backup, migration, and sharing. It also mentions where the output can be re-imported (sync command or POST /datasets). However, it doesn't explicitly state when not to use it or compare with alternatives, which would raise it to a 5.

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

follow_user_v1_users__clerk_id__follow_putA

PUT /v1/users/{clerk_id}/follow (auth: Bearer OPENDATA_API_KEY) — Follow a user — Follow clerk_id. Idempotent — repeat calls return current count.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses that it's a PUT with OAuth, idempotent, and returns current count. This adds transparency, though side effects or error conditions are not covered.

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 two short sentences with no fluff. It front-loads the HTTP method and auth, then the action and key behavioral trait (idempotency).

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description adequately covers the action, auth, and idempotency. However, it does not specify what 'current count' refers to or mention any prerequisites.

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, and the description does not elaborate on the clerk_id parameter beyond mentioning its name. It fails to compensate for the schema's lack of explanation.

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 'Follow a user' and mentions the specific resource (clerk_id). It also notes idempotency, distinguishing it from sibling tools like unfollow_user or get_follow_status.

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 implies usage (to follow a user) but provides no explicit guidance on when to use this tool vs alternatives like list_following or unfollow_user. Idempotency is mentioned but not contextualized.

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

fulfill_request_v1_requests__request_id__fulfill_postB

POST /v1/requests/{request_id}/fulfill (auth: Bearer OPENDATA_API_KEY) — Fulfill Request — Fulfill a dataset request by linking it to a created dataset. Admin-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyYesRequest body (application/json) for POST /v1/requests/{request_id}/fulfill

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description should disclose behavioral traits. It states the action (fulfill by linking) but lacks details on side effects, prerequisites (e.g., request existence, user permissions beyond admin), or error conditions. The POST method implies mutation but is not explicit.

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 plus auth info, which is concise. However, it is minimal and could include more detail without being verbose. It is not padded but is 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 complexity (no output schema, 2 parameters, nested body), the description is incomplete. It does not mention the response format, success indication, or what happens after fulfillment (e.g., request status change). For a mutation tool, this is insufficient.

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?

With only 50% schema description coverage (body has a generic description, request_id has none), the description adds no parameter meaning. It does not explain what dataset_id, complexity_tag, expected_version, or comment represent, leaving the agent to guess.

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 tool fulfills a dataset request by linking it to a created dataset with the verb 'fulfill' and resource 'dataset request'. It distinguishes from siblings like submit_request or reject_request by focusing on the fulfillment action after dataset creation.

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 specifies 'Admin-only', indicating who should use it. However, it does not contrast with siblings (e.g., approve_request, reject_request) or provide when-to-use vs alternatives. The usage context is implied but not explicit.

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

get_activation_v1_me_activation_getA

GET /v1/me/activation (public) — Get user activation signals — Get user activation signals for SSR branching.

Returns flags indicating whether the user has engaged with various parts of the platform. Used by SSR to decide which components to render.

Authentication: Requires Clerk authentication (browser session or JWT).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description adequately discloses behavior: it is a GET endpoint requiring authentication, returns flags. It does not mention rate limits or side effects, but for a read-only operation, this is sufficient.

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?

Description is succinct: two sentences plus an authentication note. No redundant words, front-loaded with key info. Perfectly concise.

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

Completeness4/5

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

Without output schema, description explains it returns flags about engagement. This is complete for a simple tool. Could mention flag format, but not critical.

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?

The input schema has no parameters (0 params, 100% coverage). Per guidelines, baseline is 4. Description adds no param info, but none is needed.

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 tool's purpose: 'Get user activation signals for SSR branching' and explains it returns flags about user engagement with the platform. It distinguishes itself from siblings like get_feed or get_recommendations by specifying SSR use case.

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 mentions it's 'Used by SSR to decide which components to render' and specifies authentication requirements (Clerk). It does not explicitly state alternatives or when not to use, but the context is clear enough for an AI agent.

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

get_bridges_v1_graph_bridges_getC

GET /v1/graph/bridges (public) — Get Bridges — Get top bridge datasets by betweenness centrality.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states it's a public GET request. It fails to explain what 'bridges' or 'betweenness centrality' entail, whether results are ordered, or if the limit parameter implies pagination. The description is insufficient for an agent to understand side effects or data retrieval behavior.

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 extremely concise (one line) and front-loads the HTTP method and visibility. However, the brevity sacrifices informative content. It earns a high score for conciseness but not for completeness.

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 single parameter and lack of annotations or output schema, the description should explain core concepts like 'bridges' and 'centrality' and clarify that this is a list endpoint. Without these, an agent cannot confidently decide to use this tool over others.

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%, so the description must add meaning beyond the schema. However, it does not mention the 'limit' parameter at all, leaving the agent to infer its purpose solely from the schema's type and constraints (integer, 1-100). This is insufficient.

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 ('Get'), the resource ('top bridge datasets'), and the specific metric ('by betweenness centrality'). It uniquely distinguishes this tool from sibling tools like 'get_communities' or 'get_neighbors' by specifying a graph centrality measure.

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 explicit guidance on when to use this tool versus alternatives. The 'public' label hints at accessibility, but there is no mention of prerequisites, limitations, or scenarios where this tool is preferred over similar graph-analytics endpoints.

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

get_category_detail_v1_categories__slug__getA

GET /v1/categories/{slug} (public) — Get category with datasets — Get category details with paginated datasets.

Returns the category metadata along with a paginated list of datasets in that category.

Sort options:

  • stars: Most starred datasets first (default)

  • queries: Most queried datasets first (requires backend, falls back to stars)

  • updated: Most recently updated first

  • name: Alphabetical by name

No authentication required - this is a public endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
limitNoMaximum number of datasets to return
offsetNoNumber of datasets to skip
sortNoSort order for datasets. 'queries' falls back to 'stars' in OSS version.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, description covers read-only nature (GET), public access, and sort fallback behavior. Adds value beyond schema by explaining public access and sort details. Does not address error handling or rate limits.

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?

Reasonably concise with a clear header line, one explanatory sentence, and formatted sort options. Front-loaded with purpose. Could be slightly more structured but adequate.

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?

Describes return as metadata and paginated dataset list, but lacks details on error responses, default pagination limits, or output structure. No output schema exists, so more detail would be beneficial.

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?

Schema covers 75% of parameters with descriptions. Description adds value by explaining sort options and fallback behavior for 'queries' sort, which is not fully captured in schema parameter descriptions.

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 verb 'Get', resource 'category with datasets', and specifies it's paginated. It distinguishes from sibling 'list_all_categories_v1_categories_get' by focusing on a specific category's details.

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?

Explicitly notes no authentication required and public endpoint. Describes sort options and default behavior. However, does not explicitly contrast with sibling tools or state when not to use.

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

get_communities_v1_graph_communities_getB

GET /v1/graph/communities (public) — Get Communities — Get community listing with top datasets and dominant topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3/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 full responsibility for behavioral disclosure. It mentions 'public' and the return content (top datasets, topics), but does not disclose idempotency, pagination, rate limits, or sorting behavior. The description is insufficient for a read operation.

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 extremely concise, using a single line that includes the HTTP method and path. It has no unnecessary words, but the inclusion of the path may be redundant given the tool name. It could be more informative without sacrificing conciseness.

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?

The tool has no output schema and minimal inputs, so the description needs to cover response structure and usage details. It fails to explain pagination, sorting, or how to interpret the community listing. It is incomplete for a listing endpoint.

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 input schema has one parameter (limit) with 0% description coverage. The description does not mention this parameter or add any meaning beyond the schema, failing to compensate for the gap. It should explain that limit controls the number of communities returned.

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 'Get community listing with top datasets and dominant topics,' which is a specific verb-resource combination. Among sibling tools, it is distinct from get_community_datasets (which targets a specific community) and get_bridges (graph bridges), so differentiation is clear.

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 '(public)' indicating accessibility, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. Usage context is implied as a general listing endpoint, but no direct guidance is given.

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

get_community_datasets_v1_graph_communities__community_id__datasB

GET /v1/graph/communities/{community_id}/datasets (public) — Get Community Datasets — List datasets in a graph community, ordered by importance.

ParametersJSON Schema
NameRequiredDescriptionDefault
community_idYes
limitNo
offsetNo

TDQS

B3.4/5.0
Behavior3/5

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

The description adds a 'public' tag, hinting at open access, and states ordering by importance. However, no annotations are provided, leaving the tool's safety profile unconfirmed. It doesn't mention that this is a read-only operation (though GET implies it), nor does it disclose behavior like pagination, rate limits, or what happens if community_id is invalid. Some behavioral context is given, but not enough to fully compensate for missing annotations.

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 concise in one sentence but includes some redundancy (the HTTP method and 'public' tag are arguably unnecessary for an AI agent). It front-loads the key operation. Minor improvement could remove the HTTP prefix.

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 output schema and no annotations, the description should cover return format, pagination, and authentication. It only mentions ordering and public access. Without output schema, the agent knows little about the response. This is incomplete for a tool that is likely used in data retrieval workflows.

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%, so the description must explain parameters. The description only mentions community_id implicitly via the URL path but does not describe limit or offset parameters. It fails to add meaning beyond the schema structure. For a tool with 3 parameters and no schema descriptions, this is insufficient.

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 explicitly states 'List datasets in a graph community, ordered by importance.' It uses a specific verb (list) and resource (datasets in a community), with ordering detail. This clearly distinguishes it from sibling tools like get_communities (which lists communities) or get_related_datasets (which lists related datasets for a given dataset).

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?

Description implies usage when needing datasets in a community, but provides no guidance on when not to use it or how it compares to alternatives like get_related_datasets or get_entity_datasets. No exclusions or prerequisites are mentioned. With many sibling tools, this is a moderate gap.

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

get_dataset_activity_v1_datasets__provider___dataset__activity_gA

GET /v1/datasets/{provider}/{dataset}/activity (public) — Get Dataset Activity — Get recent activity events for a dataset.

Returns system events (enrichment, ingestion, schema changes) in reverse chronological order. Used for the activity feed on dataset pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
limitNoMaximum number of activity events to return

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool returns events in reverse chronological order and lists event types (enrichment, ingestion, schema changes). This adds behavioral context beyond the schema. However, it does not mention pagination, rate limits, or any potential side effects, though being a read-only GET makes that less critical.

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—and front-loads the endpoint, purpose, and event types. Every sentence adds value with no redundancy.

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

Completeness4/5

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

For a simple activity fetch tool with no output schema, the description covers the key aspects: what events are returned and their order. However, it omits how the 'limit' parameter affects results (e.g., default, max). Given the absence of output schema, a bit more detail on the response structure would improve completeness.

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

Parameters3/5

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

Schema description coverage is only 33% (only 'limit' has a description). The description does not add meaning for the 'provider' or 'dataset' parameters beyond what the schema provides. Since coverage is low, the description should compensate but does not. Baseline score of 3 is appropriate as the schema already defines types and constraints.

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 tool's purpose: 'Get recent activity events for a dataset.' It specifies the HTTP method, path, and that it returns system events (enrichment, ingestion, schema changes) in reverse chronological order. This is a specific verb-resource pair that distinguishes it from sibling dataset tools like get_dataset_meta or get_dataset_sources.

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 explicitly says 'Used for the activity feed on dataset pages,' which gives a clear usage scenario. However, it does not mention when not to use this tool or provide alternatives among the many sibling tools. No exclusion criteria or context for differentiation is given.

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

get_dataset_by_path_v1_datasets__provider___dataset__getA

GET /v1/datasets/{provider}/{dataset} (public) — Get Dataset By Path — Get dataset data (flat) or subdataset list (hierarchical).

For flat datasets: Returns paginated data with full query support. For hierarchical datasets: Returns list of subdatasets.

Metadata is available at GET /v1/datasets/{provider}/{dataset}/meta

Format Selection (in priority order):

  1. Accept header: application/json, text/csv, text/tab-separated-values, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.apache.parquet

  2. ?format query param: json, csv, tsv, xlsx, parquet

csv/tsv/xlsx/parquet always return file attachments with the full dataset (size-guarded at MAX_DOWNLOAD_SIZE_BYTES). ?format=json also returns the full dataset as a JSON file; without ?format=json, JSON …

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
formatNoOutput format: json, csv, tsv, xlsx, parquet
limitNo
offsetNo
cursorNoCursor for keyset pagination (from next_cursor in previous response)
viewNoView: 'flat', 'timeseries', or custom grouping params
expandNoComma-separated fields to expand (e.g., 'area,item')
fieldsNoComma-separated columns to include (e.g., 'date,value')
sortNoColumn to sort by. Prefix with - for descending (e.g., 'date', '-year')
group_byNoColumn to group by
nest_fieldsNoComma-separated columns to include in nested items
nest_fieldNoName for nested array (default: 'items')
sort_nestedNoColumn to sort nested items by
aggregateNoComma-separated aggregate expressions: avg(score),count(*). Supported functions: count, sum, avg, min, max, count_distinct
include_sourcesNoInclude source attribution columns in response data
response_formatNoResponse format: 'columnar' (default, compact array-of-arrays) or 'objects' (array-of-dicts)
debugNoInclude debug info (query echo, generated SQL) in response

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description successfully discloses key behaviors: public access, pagination (limit, offset, cursor), format selection priority, file attachment downloads with size guard, and response format options. It could be improved by noting error handling or rate limits, but overall is fairly transparent.

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 front-loaded with the main purpose but becomes verbose. The trailing ellipsis indicates incompleteness, and some details (like format enumeration) could be more concise. It is adequate but not optimal.

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 18 parameters and no output schema, the description covers core behaviors but leaves some gaps: the truncated ending suggests missing content, and it does not describe typical response structure beyond format. It is reasonably complete for a complex tool but not fully satisfactory.

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

Parameters3/5

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

Schema description coverage is 78%, so baseline is 3. The description adds minimal parameter-specific insight beyond the schema (e.g., format selection priority and download behavior). It does not significantly enhance understanding of each 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 tool retrieves dataset data or subdataset list for a given provider/dataset. It specifically mentions flat vs hierarchical datasets and notes that metadata is available via a separate endpoint, distinguishing it from sibling tools like get_dataset_meta.

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?

It explains when to use this tool for data retrieval and mentions an alternative for metadata. However, it does not explicitly state when not to use it or provide clear exclusion criteria compared to other data query tools (e.g., sql_query or cross_dataset_query).

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

get_dataset_column_detail_v1_datasets__provider___dataset__columA

GET /v1/datasets/{provider}/{dataset}/columns/{column_name} (public) — Get Dataset Column Detail — Get detailed statistics for a single column.

Returns full value list (up to 1000) for low-cardinality columns.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
column_nameYes

TDQS

A3.8/5.0
Behavior3/5

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

Discloses return of full value list up to 1000 for low-cardinality columns, but doesn't specify behavior for high-cardinality columns, auth requirements (beyond 'public'), or error cases. With no annotations, more detail would be beneficial.

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 concise sentences, first stating purpose, second adding a key behavioral detail. No wasted words, front-loaded with core information.

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

Completeness4/5

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

No output schema, so description must cover return values. It does mention the value list, but omits details on what 'detailed statistics' include. Lacks pagination info. Still mostly complete for a straightforward retrieval tool.

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

Parameters3/5

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

Parameters (provider, dataset, column_name) are self-explanatory from names, but schema coverage is 0% and description adds no additional constraints or format details. Baseline 3 for adequate but minimal value.

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?

Clearly states it retrieves detailed statistics for a single column, with specific mention of returning value list for low-cardinality columns. Distinguishes from sibling tools like get_dataset_columns and get_dataset_stats.

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 guidance on when to use this over alternatives. Siblings exist for listing columns or dataset stats, but description doesn't compare or set usage context. Only implies public access.

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

get_dataset_columns_v1_datasets__provider___dataset__columns_getA

GET /v1/datasets/{provider}/{dataset}/columns (public) — Get Dataset Columns — Get column metadata and statistics for a dataset.

Returns column names, types, distinct counts, value distributions, and row count. Uses sampling for efficient stats on large datasets.

When a view is active (explicitly or via default_view), returns columns as they appear in the view output, including computed and joined columns with proper types.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
viewNoView name. Uses default_view from dataset config if not specified. Pass 'all' for raw parquet columns.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the HTTP method (GET), public access, use of sampling for efficiency on large datasets, and view-related behavior (computed/joined columns). These are useful behavioral traits beyond the obvious.

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 concise and well-structured: it starts with the purpose, lists returns, mentions sampling, and explains view behavior in three short paragraphs. Every sentence adds value, and there is no redundancy.

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

Completeness5/5

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

Despite lacking an output schema, the description lists all key return fields (column names, types, distinct counts, value distributions, row count). It also covers edge cases (view active, default_view, sampling) and is complete for its simple read operation.

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?

Schema description coverage is low (33%), but the description adds meaning for the view parameter, explaining its purpose and special value 'all'. The provider and dataset parameters are implied by the tool name and path, so the description provides sufficient context for an AI agent.

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 states 'Get Dataset Columns — Get column metadata and statistics for a dataset.' It specifically lists the returned data: column names, types, distinct counts, value distributions, and row count. This clearly differentiates from sibling tools like get_dataset_column_detail, which returns details for a single column.

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 explains when to use the view parameter and the behavior with active views, including using default_view or 'all' for raw columns. It provides clear context but does not explicitly state when not to use the tool or contrast with alternatives.

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

get_dataset_meta_v1_datasets__provider___dataset__meta_getA

GET /v1/datasets/{provider}/{dataset}/meta (public) — Get Dataset Meta — Get dataset metadata without data.

Returns metadata about the dataset including schema, available views, and query capabilities. Use this endpoint to understand dataset structure before fetching data.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A3.8/5.0
Behavior3/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 discloses it is a public GET request and returns metadata about schema, views, and query capabilities. However, it lacks details on error handling, authentication, or side effects. Since it is a read-only operation, the description 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.

Conciseness5/5

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

The description is extremely concise: two sentences that efficiently convey the endpoint type, public status, what it returns, and how to use it. No redundant 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?

Given the absence of an output schema, the description partially compensates by mentioning what metadata is returned (schema, views, query capabilities). However, it does not describe the response structure or format, leaving some ambiguity for an agent.

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 two string parameters (provider, dataset) with 0% description coverage. The tool description does not explain the meaning or format of these parameters beyond the URL path pattern. This is insufficient for an agent to know how to provide valid values.

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 gets dataset metadata without data, listing specific return values (schema, views, query capabilities). It distinguishes itself from sibling tools that fetch actual data (e.g., get_dataset_by_path) or specific components (e.g., get_dataset_columns), making the purpose unmistakable.

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?

Explicitly says to use this endpoint to understand dataset structure before fetching data, providing clear context. However, it does not explicitly state when not to use it or mention alternatives, though the usage hint is strong.

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

get_dataset_sources_v1_datasets__provider___dataset__sources_getA

GET /v1/datasets/{provider}/{dataset}/sources (public) — Get Dataset Sources — List all source URLs for a dataset.

For multi-source datasets, returns each source with its description. For aggregator datasets, returns the URL template and variable info. For single-source datasets, returns the single source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A3.9/5.0
Behavior4/5

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

Without annotations, the description carries the burden and discloses that the output format varies by dataset type (multi-source, aggregator, single-source) and that the endpoint is public. This adds behavioral context beyond just saying 'list sources'.

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 concise: a single introductory line followed by three bullet points for output cases. Every sentence provides unique value without redundancy or filler.

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

Completeness4/5

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

The description covers the return value variations for different dataset types and states the endpoint is public. It is sufficiently complete for a simple two-parameter retrieval tool, though error conditions or edge cases are not mentioned.

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 two parameters (provider, dataset) with 0% description coverage. The tool description only mentions them in the HTTP path without any additional explanation, validation rules, or examples. It adds minimal meaning beyond 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 it lists all source URLs for a dataset, distinguishing it from sibling tools like get_dataset_by_path or get_dataset_meta. It details three output formats for multi-source, aggregator, and single-source datasets, making the purpose precise.

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 implies the tool is used to retrieve dataset sources, but it does not specify when to prefer it over other dataset-related tools or when not to use it. No explicit when/when-not guidance or alternatives are provided.

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

get_dataset_stats_v1_graph_datasets__provider___dataset__stats_gC

GET /v1/graph/datasets/{provider}/{dataset}/stats (public) — Get Dataset Stats — Get graph-computed statistics for a dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description should disclose behavior like idempotency, data freshness, or error responses. It only notes the endpoint is 'public', but lacks details on rate limits, required permissions, or what happens if parameters are invalid.

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 concise sentence embedding the URL and purpose. It is front-loaded with the method and path, but could be more structured by separating endpoint info from a clearer explanation of the returned statistics.

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?

The description lacks information about the returned statistics (e.g., which metrics are included) and does not clarify the distinction from sibling tools like get_dataset_meta or get_platform_stats. Given the absence of an output schema, more details are needed for completeness.

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%, and the description only implicitly maps provider and dataset via the URL path. It adds no further explanation of valid values, formatting, or constraints compared to the schema.

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 states the HTTP method, resource path, and states it returns graph-computed statistics, clearly identifying the action on a specific dataset. However, it does not differentiate from sibling tools like get_platform_stats or get_provider_stats.

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 such as get_dataset_meta or get_dataset_activity. There is no mention of prerequisites or exclusion criteria.

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

get_dataset_view_v1_datasets__provider___dataset__views__name__gB

GET /v1/datasets/{provider}/{dataset}/views/{name} (public) — Get Dataset View — Get detailed configuration for a specific view on a dataset.

Includes all alias definitions, column projections, and lookup configurations for data enrichment.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
nameYes

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It mentions the endpoint is public and includes content details, but does not disclose error behavior, rate limits, or authentication requirements. The GET verb implies read-only operation.

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 three sentences, each adding value: endpoint and publicity, purpose, and included details. It is clear but could be slightly more concise by omitting the redundant endpoint example.

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

Completeness4/5

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

Given no output schema, the description adequately describes what the response contains (alias definitions, column projections, lookup configurations). It lacks error handling details, but for a simple GET, it is fairly complete.

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?

Input schema has zero description coverage, and the tool description adds no explanation of the parameters (provider, dataset, name). Their meaning is partially inferable from the endpoint path, but the description does not clarify them.

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 tool retrieves detailed configuration for a specific dataset view, listing what it includes (alias definitions, column projections, lookup configurations). It distinguishes from sibling tools like list_dataset_views by focusing on a specific view.

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 such as get_view_v1_views__name__get or list_dataset_views. The description does not mention prerequisites or context where this tool is preferred.

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

get_entity_datasets_v1_graph_entities__entity_type___entity_id__C

GET /v1/graph/entities/{entity_type}/{entity_id}/datasets (public) — Get Entity Datasets — Get datasets referencing a specific entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_typeYes
entity_idYes

TDQS

C2.4/5.0
Behavior2/5

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

The description notes the endpoint is GET and public, but lacks details on pagination, rate limits, error handling, or any side effects. Annotations are absent, so the description should compensate but does not.

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 very concise (single line) but lacks structure. It includes the HTTP method and path, which is helpful, but could be better organized with separate sections.

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 two required parameters with no enums or output schema, the description is insufficient. It does not explain the expected IDs, possible entity types, or the response format, leaving the agent underinformed.

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 input schema has 0% description coverage, and the description adds no meaning to the parameters. It does not explain valid values for entity_type or format of entity_id, which are critical for correct invocation.

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 retrieves datasets referencing a specific entity. It distinguishes from sibling tools like get_community_datasets and get_provider_datasets. However, it could be more precise about what 'referencing' means in graph context.

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 like get_community_datasets or list_datasets. There is no mention of prerequisites or typical scenarios.

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

get_feed_v1_me_feed_getA

GET /v1/me/feed (public) — Get user activity feed — Get a feed of updates relevant to the user.

Returns dataset activity from providers the user follows, interleaved by time. Currently supports followed provider updates; user follow system is not yet available.

Feed Types:

  • followed: Dataset updates from providers you follow

  • people: Updates from users you follow (not yet available, returns empty)

  • merged: Currently coerced to followed (the people feed is empty so the merge step would produce broken cursors).

Pagination: Use the next_cursor from the response as the cursor parameter for the next page.

Authentication: Requires Clerk authentication (browser session or JWT).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFeed type: followed (providers you follow), people (users you follow), or merged
limitNoMaximum results
cursorNoISO8601 timestamp for pagination (returns items before this time)

TDQS

A4.6/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses authentication requirement (Clerk), pagination mechanism (cursor), and behavior of feed types (e.g., 'people' returns empty, 'merged' coerced). This exceeds expectations.

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 well-structured with sections for feed types and pagination, and it is front-loaded. It is slightly lengthy but each sentence adds value.

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

Completeness5/5

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

No output schema exists, but the description adequately explains the return value (dataset updates, paginated with next_cursor) and covers authentication, feed behaviors, and pagination. It is complete for a retrieval tool.

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?

Schema coverage is 100% with good descriptions. The description adds extra context beyond schema, such as the coercion behavior of 'merged' type and that 'people' returns empty, enhancing parameter understanding.

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 defines the tool as retrieving a user activity feed with updates from followed providers, listing feed types and their current status. It distinguishes itself from similar sibling tools like get_dataset_activity and get_user_activity.

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 explains when to use the feed, including limitations (e.g., 'people' feed not available) and pagination. It provides context but does not explicitly contrast with alternative tools.

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

get_feed_v1_users_me_feed_getB

GET /v1/users/me/feed (public) — Activity feed of followed users — Activity from users the caller follows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
sinceNoISO-8601 datetime — only return events after this time

TDQS

B3.2/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 traits such as authentication requirements, rate limits, default ordering, or pagination behavior. The term 'public' hints at minimal access control but lacks detail.

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 very concise, front-loading the key purpose and HTTP method. However, it is perhaps too terse, omitting important context that could be included without significant bloat.

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 absence of an output schema and the simplicity of the tool (feed list with pagination), the description lacks essential context like default limit values, ordering, or handling of the 'since' parameter. It leaves the agent to infer too much from the schema alone.

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 3 parameters with only 33% description coverage (since has a description). The tool description adds no additional meaning to the parameters, leaving limit and offset undefined in terms of purpose or expected values.

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 tool returns the activity feed of followed users, including the HTTP method and path for specificity. It distinguishes itself from similar tools like get_user_activity by specifying 'followed users', making the purpose unambiguous.

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 implies usage for retrieving a feed of followed users but provides no explicit guidance on when to use this tool over alternatives (e.g., get_user_activity, get_feed_v1_me_feed_get). No when-not-to-use or alternative tool references are given.

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

get_figure_v1_figures__figure_id__getA

GET /v1/figures/{figure_id} (public) — Get a figure by UUID — Get a figure by its UUID.

Returns full view details including viz_spec, transform_config, inline_data, origin, like_count, and is_liked_by_me.

Visibility: public figures are returned to anyone; private drafts are returned only to their creator. Non-owners get a 404 for private drafts (we don't leak existence).

Authentication: Optional. When authenticated, the creator can read their own drafts and is_liked_by_me reflects the user's like status.

ParametersJSON Schema
NameRequiredDescriptionDefault
figure_idYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description fully covers behavioral traits: public vs private access, 404 for non-owners, optional auth, and is_liked_by_me reflecting user status. It does not mention rate limits or side effects, but for a read-only tool this is sufficient.

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 well-structured with sections for return details, visibility, and authentication. It is concise and front-loaded with the core purpose, with every sentence adding value.

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

Completeness5/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, no output schema), the description completely covers return fields, visibility rules, and auth behavior. No obvious gaps exist.

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

Parameters3/5

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

The only parameter figure_id has no description in the schema (0% coverage). The description says 'by UUID' implying a format, but no detailed format or constraints are given. It adds minimal value beyond the parameter name and type.

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 'Get a figure by its UUID.' The verb 'get' and resource 'figure' are specific, and the use of UUID distinguishes it from list endpoints like list_figures.

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 explains visibility rules and authentication needs, providing clear context on when the tool returns data and for whom. However, it does not explicitly contrast with siblings like list_figures or create_draft_figure.

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

get_follow_status_v1_users__clerk_id__follow_status_getA

GET /v1/users/{clerk_id}/follow-status (public) — Check follow status — Return whether the caller is following clerk_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description is minimal. It mentions the endpoint is public but does not disclose behavior beyond that, such as whether it returns a boolean, any rate limits, or authentication requirements.

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 extremely concise with one sentence, front-loading the key information. It is efficient but could benefit from slightly more detail without losing conciseness.

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

Completeness4/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, no output schema), the description adequately covers the purpose and basic behavior. It does not describe the response format or errors, but for a simple status check, this may be sufficient.

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

Parameters3/5

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

The only parameter 'clerk_id' has no schema description (0% coverage). The description implies it is the user whose follow status is checked, adding some semantic meaning beyond the type 'string'. However, it does not fully compensate for the missing schema description.

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 (GET), resource (follow-status), and outcome (return whether caller is following clerk_id). It distinguishes from siblings like follow_user, unfollow_user, list_followers, list_following.

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 purpose is implied: to check follow status. However, there is no explicit guidance on when to use this versus siblings (e.g., whether to use this before following) or any conditional context.

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

get_health_v1_graph_health_getA

GET /v1/graph/health (public) — Get Health — Get graph health and sync status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided. The description only repeats the endpoint and action, omitting behavioral traits like side effects, authentication (though 'public' is in the endpoint but not description), or rate limits.

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 clear front-loading. Every word serves a purpose with no redundancy.

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 zero parameters and no output schema, the description is minimally adequate. However, it fails to add context like expected response format or usage tips, which would benefit an AI agent.

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?

The input schema is empty with 0 parameters. The description does not need to add parameter detail, as there are none. Per calibration rules, 0 parameters warrant a baseline of 4.

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 tool retrieves graph health and sync status, with a specific verb and resource. Among siblings, no other tool targets health, making it distinct.

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 versus alternatives or when not to use it. The description lacks context for appropriate invocation scenarios.

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

get_join_paths_v1_graph_datasets__provider___dataset__join_pathsC

GET /v1/graph/datasets/{provider}/{dataset}/join-paths (public) — Get Join Paths — Discover multi-hop join paths from a dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
max_hopsNo
min_confidenceNo
limitNo

TDQS

C2.6/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 cover behavioral traits. It only states it's a public GET, but does not disclose behavior like result format, pagination, or effect of parameters like max_hops. For a tool with no annotations, this is insufficient.

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 with no fluff, including the endpoint and method. It is concise, though could be expanded slightly to add more value without sacrificing 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?

For a tool with five parameters involving graph traversal and no output schema, the description is too bare. It does not explain 'multi-hop join paths' or what the results look like, leaving the agent underinformed.

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 coverage is 0%, meaning no parameter descriptions in the schema. The description adds no information about parameters (e.g., what max_hops or min_confidence do). It fails to compensate for the lack of schema descriptions.

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 action ('discover multi-hop join paths') and resource (from a dataset), and indicates it's a public GET endpoint. It distinguishes the tool from siblings like get_neighbors or get_related, though not explicitly.

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 versus alternatives such as get_neighbors or get_schema_graph. No exclusions or prerequisites are mentioned.

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

get_neighbors_v1_graph_datasets__provider___dataset__neighbors_gC

GET /v1/graph/datasets/{provider}/{dataset}/neighbors (public) — Get Neighbors — Get direct 1-hop connections from a dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
edge_typesNoComma-separated edge types to filter (e.g. SIMILAR_TO,BELONGS_TO)
limitNo

TDQS

C2.7/5.0
Behavior2/5

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

The description notes 'public' but does not explicitly state whether the operation is read-only or discuss side effects. With no annotations, the description fails to disclose behavioral traits like authentication, rate limits, or data mutability.

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 that is concise and directly states the endpoint and purpose. However, it could benefit from a bit more structure, but it is not overly 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?

Given four parameters, no output schema, and no annotations, the description is minimal. It lacks details on output format, error handling, or parameter interaction, making it incomplete for a complex tool.

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 only 25% (only edge_types has a description). The description adds no parameter semantics beyond the schema; it does not clarify provider, dataset, or limit usage.

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 action ('Get Neighbors') and the resource ('direct 1-hop connections from a dataset'). It is specific and distinguishes from sibling tools like get_related which likely returns different relationships.

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 such as get_related or get_schema_graph. There is no mention of prerequisites or context for usage.

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

get_platform_stats_v1_stats_getA

GET /v1/stats (public) — Get platform statistics — Get platform-wide aggregate statistics including total providers, datasets, and rows.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral transparency. It accurately conveys the read-only nature and scope, but omits details such as rate limits, caching policy, or data freshness, which would benefit an agent in a high-stakes context.

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 a single sentence that front-loads the endpoint and public tag, then concisely states the purpose and included statistics. No redundant information.

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

Completeness4/5

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

Given no output schema and zero parameters, the description sufficiently covers what the tool does and what data it returns (providers, datasets, rows). It does not detail the response structure, but the examples give a reasonable expectation.

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?

The input schema has zero parameters, so the description cannot add parameter semantics beyond the schema. Baseline score of 4 is appropriate as no parameters exist.

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 retrieves platform-wide aggregate statistics, including specific examples (total providers, datasets, rows). It uses a distinct verb and resource, and is easily distinguishable from sibling tools that focus on provider- or dataset-specific stats.

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?

Description marks the endpoint as public ('(public)'), providing context on accessibility. However, it does not explicitly state when to use this tool versus alternatives like get_provider_stats or get_dataset_stats, which are present among siblings.

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

get_provider_datasets_metadata_v1_providers__provider__datasets_B

GET /v1/providers/{provider}/datasets/metadata (public) — Get enriched metadata for all datasets — Get AI-enriched metadata (layman descriptions) for all datasets in a provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesProvider slug (e.g., 'bls', 'census')

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It mentions 'GET' and 'public' but fails to disclose any behavioral traits like response format, error handling, or rate limits. It does not contradict annotations because none exist, but it is insufficient.

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?

Two sentences with no waste, though the first sentence largely restates the tool's name. It is efficient but could be more front-loaded with the core purpose.

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 one parameter and no output schema, the description explains the input adequately but does not specify what the returned metadata contains (e.g., fields, structure). It is minimally complete for a simple read operation.

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

Parameters3/5

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

Schema coverage is 100% and the description repeats the schema's parameter description ('Provider slug'). The description adds no extra meaning beyond the schema, meeting the baseline for high coverage.

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 gets enriched metadata for all datasets in a provider, using a specific verb and resource. It distinguishes from siblings like 'get_provider_enriched' by specifying 'metadata' and 'all datasets'.

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 guidance on when to use this tool versus alternatives such as 'get_provider_enriched' or 'discover_datasets'. The description only states what it does, leaving usage context implied.

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

get_provider_enriched_v1_providers__provider__enriched_getB

GET /v1/providers/{provider}/enriched (public) — Get enhanced provider details — Get provider details including AI-enriched metadata when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesProvider slug (e.g., 'bls', 'census')

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so the description must disclose all behavioral traits. It mentions the endpoint is public and includes enriched metadata when available, but does not detail errors, rate limits, or what happens if enrichment is absent. This is insufficient for a read endpoint.

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 concise with two sentences covering endpoint, publicity, and purpose. No unnecessary words, though the endpoint string could be omitted as it is captured in the tool name.

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?

For a simple one-parameter GET tool without output schema, the description is adequate. However, it does not explain what 'enriched' means or hint at the response structure, leaving some ambiguity.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the single parameter. The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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 tool fetches enhanced provider details with AI-enriched metadata. It uses specific verb 'Get' and resource 'provider enriched', distinguishing it from siblings like get_provider_v1_providers__provider__get which likely returns basic details.

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 explicit guidance on when to use this tool versus alternatives like get_provider_v1_providers__provider__get or get_provider_stats. The description only implies it is for enriched data but does not contrast with siblings or state prerequisites.

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

get_provider_stats_v1_providers__provider__stats_getB

GET /v1/providers/{provider}/stats (public) — Get provider statistics — Get aggregate statistics for a provider including dataset count, total rows, and update info.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesProvider slug (e.g., 'bls', 'census')

TDQS

B3.4/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 only describes the GET endpoint as public and the statistics returned, but it does not disclose any behavioral traits such as side effects, rate limits, or authentication requirements beyond being public.

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 line but contains redundancy: 'Get provider statistics' appears twice. It could be more concise without losing information.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description adequately covers the purpose and the type of data returned. It is complete enough to understand what the tool does.

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

Parameters3/5

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

Schema coverage is 100% with one parameter 'provider' described as 'Provider slug (e.g., 'bls', 'census')'. The description does not add additional meaning beyond the schema, so it meets the baseline of 3.

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 'Get', the resource 'provider statistics', and specifies the metrics included (dataset count, total rows, update info). It also provides the endpoint URL, which differentiates it from sibling tools like get_provider or get_provider_enriched.

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 indicates the tool is public and returns aggregate statistics, but it does not explicitly state when to use this tool versus alternatives like get_provider or get_provider_enriched. There is no guidance on 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.

get_provider_v1_providers__provider__getC

GET /v1/providers/{provider} (public) — Get Provider — Get provider details by slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions 'public' in the endpoint string, hinting at access, but does not disclose error behavior, data freshness, or rate limits. Minimal behavioral context.

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 (one line) but combines endpoint, visibility, and purpose in a single string. It is front-loaded but could be better structured for readability.

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?

For a simple get-by-slug tool with no output schema or annotations, the description covers the basic purpose but lacks detail on response structure or edge cases. Adequate but not comprehensive.

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 coverage is 0% with one parameter 'provider' lacking description. The description only says 'by slug', adding no format, constraints, or examples. This is insufficient for proper parameter usage.

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 action ('Get Provider'), resource ('provider details'), and method ('by slug'). It distinguishes itself from sibling tools like get_provider_stats and get_provider_enriched by specifying 'by slug', though it doesn't explicitly differentiate them.

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 versus alternatives. The description only states what it does, leaving the AI agent without context for selection among many similar provider tools.

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

get_recommendations_v1_me_recommendations__kind__getA

GET /v1/me/recommendations/{kind} (public) — Get personalized recommendations — Get recommendations for datasets, providers, or users.

Returns personalized recommendations based on user's activity (starred datasets, followed providers, created views). Cold-start users get recommendations based on popularity rankings.

Recommendation Kinds:

  • datasets: Popular or topically-related datasets

  • providers: Data providers similar to user's interests

  • users: Users with similar taste in datasets

Authentication: Requires Clerk authentication (browser session or JWT).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that it's a GET endpoint requiring authentication, returns recommendations based on activity, and describes cold-start behavior. However, it omits details about pagination behavior, error handling, rate limits, or response structure, which are important for safe invocation.

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 well-structured with a title line, a brief summary, a list of recommendation kinds, and an authentication note. It is front-loaded with key information. Minor redundancy like repeating 'Get personalized recommendations' could be removed, but overall it is efficient.

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's moderate complexity and lack of output schema, the description adequately explains the tool's purpose, parameters, and authentication. However, it does not describe the response format or pagination behavior. For an agent to reliably use pagination or interpret results, additional details are needed.

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?

The input schema covers 67% of parameters with descriptions (limit, offset). The tool description adds significant value for the 'kind' parameter by explaining each enum value (datasets, providers, users) and their meaning. This goes beyond the schema, which only lists the enum without descriptions.

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 gets personalized recommendations for datasets, providers, or users based on user activity. It lists the three kinds and distinguishes from similar tools like 'discover' or 'search' by emphasizing personalization. However, it does not explicitly differentiate from siblings like 'discover_datasets' or 'get_related_datasets', leaving minor ambiguity.

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 explains the tool should be used for personalized recommendations and notes cold-start behavior for new users. It lists the recommendation kinds and authentication requirements. While it provides good contextual guidance, it does not explicitly state when not to use this tool or directly mention alternative tools.

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

get_request_admin_detail_v1_requests__request_id__admin_getA

GET /v1/requests/{request_id}/admin (public) — Get Request Admin Detail — Get full admin detail view for a dataset request. Admin-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description bears full burden for behavioral disclosure. It only mentions 'Admin-only' for access control, but does not state that the operation is read-only, any potential side effects, or other behavioral traits. This is insufficient for a tool with no annotation support.

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 short and front-loaded with key information, but includes redundant elements like the full path and repeated title. It could be more streamlined while preserving clarity.

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?

For a simple one-parameter tool with no output schema, the description covers purpose and access restriction adequately. However, it omits parameter details and return value description, leaving moderate gaps for full contextual completeness.

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, and the description does not elaborate on the request_id parameter. No additional meaning is provided beyond the parameter name, leaving the agent without clarity on expected format or semantics.

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 retrieves full admin detail for a dataset request, with verb 'Get' and resource 'admin detail view'. The 'Admin-only' qualifier distinguishes it from sibling tool get_request_detail_v1_requests__request_id__get, providing specificity and 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 Guidelines4/5

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

The term 'Admin-only' provides clear context on intended user role, implicitly guiding when to use this tool (if admin) versus the non-admin version. However, it lacks explicit when-not-to-use instructions or enumeration of alternatives.

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

get_request_detail_v1_requests__request_id__getA

GET /v1/requests/{request_id} (public) — Get Request Detail — Public detail view of a dataset request.

Includes the linked-dataset slug when fulfilled, the submitter's display info, and the comment count. Caller's upvote state is included when authenticated.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Describes public endpoint and auth-dependent inclusion of upvote state, but does not explicitly state idempotency, rate limits, or data freshness. Since no annotations exist, description provides some behavioral context but insufficient safety guarantees.

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?

Two sentences that front-load the endpoint and title. Efficient but could separate public vs authenticated behavior more clearly.

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?

For a simple single-parameter GET tool, the description covers key output fields and authentication nuance. However, lacks output schema and does not mention error cases or data format, leaving completeness moderate.

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% and description only mentions request_id as parameter without additional details like format, examples, or constraints. The tool relies on the name to imply it's a request ID string.

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?

Clearly states the tool retrieves request details, listing specific fields (linked-dataset slug, submitter info, comment count, upvote state). Distinguishes from sibling tools like list_requests (list all) or get_request_admin_detail (admin view).

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?

Implied usage: to get details of a specific request by ID. No explicit when-to-use or when-not-to-use guidance compared to alternatives like list_requests or list_request_events.

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

get_schema_graph_v1_graph_datasets__provider___dataset__schema_gC

GET /v1/graph/datasets/{provider}/{dataset}/schema-graph (public) — Get Schema Graph — Get the schema-level subgraph around a dataset for D3 visualization.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
depthNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only indicates the endpoint is public but does not disclose how depth and limit affect the output, whether it is read-only, or any rate limits. The return structure is not described.

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 concise, with two sentences that front-load the HTTP method and path. The slight redundancy in repeating 'Get Schema Graph' is minor. Every part serves a purpose.

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 output schema, no annotations, and 0% schema description coverage, the description should compensate but only explains the basic purpose and target audience (D3). It does not cover parameter effects, return format, or edge cases, making it incomplete for a graph endpoint with multiple parameters.

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 schema has 0% description coverage, so parameters provider and dataset are only given by their names. The description mentions them in the path but adds no meaning to depth or limit, leaving the agent to infer their purpose without context.

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 retrieves the schema-level subgraph around a dataset for D3 visualization, distinguishing it from sibling graph endpoints like get_bridges or get_neighbors. The inclusion of the HTTP path and 'public' adds context. However, it could be more precise about what the subgraph contains.

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?

There is no explicit guidance on when to use this tool versus alternatives such as get_subgraph or get_neighbors. The description implies it is for D3 visualization but does not state when not to use it or mention prerequisites.

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

get_subdataset_by_path_v1_datasets__provider___dataset___subdataA

GET /v1/datasets/{provider}/{dataset}/{subdataset} (public) — Get Subdataset By Path — Get subdataset with inline data.

Returns subdataset metadata with paginated data rows.

Pagination:

  • Use cursor for keyset pagination (efficient for large datasets with views)

  • The response includes next_cursor if more data is available

  • Pass the next_cursor value as cursor in the next request

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
subdatasetYes
limitNo
offsetNo
cursorNoCursor for keyset pagination (from next_cursor in previous response)
viewNoView: 'flat', 'timeseries', or custom grouping params
expandNoComma-separated fields to expand (e.g., 'area,item')
fieldsNoComma-separated columns to include (e.g., 'date,value')
sortNoColumn to sort by. Prefix with - for descending (e.g., 'date', '-year')
group_byNoColumn to group by
nest_fieldsNoComma-separated columns to include in nested items
nest_fieldNoName for nested array (default: 'items')
sort_nestedNoColumn to sort nested items by
aggregateNoComma-separated aggregate expressions: avg(score),count(*). Supported functions: count, sum, avg, min, max, count_distinct
include_sourcesNoInclude source attribution columns in response data
response_formatNoResponse format: 'columnar' (default, compact array-of-arrays) or 'objects' (array-of-dicts)
debugNoInclude debug info (query echo, generated SQL) in response

TDQS

A4/5.0
Behavior4/5

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

With no annotations, description discloses pagination mechanism (cursor, next_cursor) and states it's public. It mentions efficiency of keyset pagination. However, it does not discuss error handling, rate limits, or response structure beyond data rows.

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?

Description is extremely concise: four sentences, front-loaded with purpose, followed by essential pagination details. No redundant or irrelevant information.

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

Completeness4/5

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

For a GET data retrieval tool with 18 params and no output schema, the description covers retrieval and pagination adequately. However, it lacks details about response structure and does not differentiate from sibling tools, missing some completeness.

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

Parameters3/5

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

Schema coverage is 72%, so baseline is 3. Description adds value by explaining pagination behavior for cursor, but other parameters are not enhanced. The cursor description in schema is already comprehensive.

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 ('Get subdataset with inline data') and resource (subdataset by path). It distinguishes from siblings by specifying it returns data rows, not just metadata.

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?

Description provides pagination guidance but does not explicitly state when to use this tool vs alternatives like get_subdataset_meta (metadata only) or get_dataset_by_path. No when-not or explicit sibling differentiation.

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

get_subdataset_meta_v1_datasets__provider___dataset___subdatasetA

GET /v1/datasets/{provider}/{dataset}/{subdataset}/meta (public) — Get Subdataset Meta — Get subdataset metadata without data.

Returns metadata about the subdataset including schema and available views.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
subdatasetYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It states the operation is public and read-only (no data returned), which is good. However, it does not mention error conditions, rate limits, or required permissions, leaving some behavioral gaps.

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 totaling about 20 words. It includes the endpoint, a label, and a clear purpose. Every word adds value, and the most critical information is front-loaded.

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

Completeness4/5

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

Given the tool's simplicity (3 string params, no output schema, no annotations), the description is largely complete. It explains what the tool returns and that it's public. However, it could benefit from clarifying possible errors or the relationship to the dataset-level meta tool.

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

Parameters3/5

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

The input schema has 3 string parameters with no additional description (0% schema coverage). The tool description does not explain the parameters further. The parameter names are self-explanatory, but the schema provides only basic type information, so the description adds no semantic value beyond the names.

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 tool's purpose: retrieve metadata about a subdataset without the data. It specifies the HTTP method and endpoint, and mentions that it returns metadata including schema and available views. This distinguishes it from sibling tools like get_dataset_meta (for datasets) and get_subdataset_by_path (for 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?

The description implies when to use this tool (when you need metadata for a subdataset) but does not explicitly state when not to use it or suggest alternatives. It lacks guidance on distinguishing from closely related siblings like get_dataset_meta or get_subdataset_by_path.

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

get_subgraph_v1_graph_subgraph_getA

GET /v1/graph/subgraph (public) — Get Subgraph — Get a seeded subgraph for the graph explorer.

When seed_type/seed_id are omitted, returns a sample of the full graph. For dataset seeds, seed_id should be 'provider/slug' (e.g. 'bls/cpi-u').

ParametersJSON Schema
NameRequiredDescriptionDefault
seed_typeNoNode label for the seed (Dataset, Topic, etc.)
seed_idNoIdentifier of the seed node
depthNo
limitNo

TDQS

A3.5/5.0
Behavior3/5

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

Discloses the method is GET and public, and describes behavior when parameters are omitted. Does not explicitly state read-only nature or other constraints, but annotations are absent so description carries full burden.

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?

Very concise: three sentences covering endpoint, purpose, and key parameter behaviors. No unnecessary words.

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?

Adequate for basic use but lacks description of output format and does not address two parameters. Given no output schema, more detail on return structure would improve completeness.

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

Parameters3/5

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

Adds meaning to seed_type and seed_id by explaining omission behavior and format, but ignores depth and limit. Schema coverage is 50% and description compensates partially but incompletely.

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?

Clearly states it gets a seeded subgraph for the graph explorer, specifying it's a GET endpoint. Slightly docked because it does not differentiate from sibling graph tools like get_bridges or get_neighbors.

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?

Provides use case for omitting parameters and gives format for dataset seeds. Lacks explicit guidance on when not to use or alternatives among siblings.

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

get_top_callers_v1_views___username___slug__top_callers_getA

GET /v1/views/@{username}/{slug}/top-callers (public) — Top callers for a view in a time window — Top-5 named callers + an "unattributed" bucket for the last N days.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
slugYes
windowNoWindow: 7d | 30d | 90d

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It states the HTTP method (GET), public access, and output structure (top-5 plus unattributed). However, it omits error conditions, rate limits, or behavior when no data exists. This is adequate but not comprehensive.

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 that efficiently conveys endpoint, access, and output. No redundant words. Could be improved by structuring with bullet points, but current length is appropriate for a straightforward retrieval tool.

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

Completeness4/5

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

For a tool that lacks an output schema, the description adequately summarizes the return format (top-5 named + unattributed bucket). It does not cover edge cases or error handling, but the core functionality is well explained. Given the low schema coverage, the description partially compensates.

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 33% (only window described). The description mentions a time window but adds no detail beyond the schema's '7d | 30d | 90d'. The required parameters username and slug lack schema descriptions and are not explained in the description, leaving ambiguity about their format or meaning.

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 tool retrieves top callers for a view, is public, uses a time window, and specifies output format (top-5 named plus unattributed bucket). This verb+resource+detail distinguishes it from sibling tools like get_view_v1 which return the view itself rather than caller analytics.

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 usage for getting top callers of a view over a window, which is distinct from sibling tools that retrieve view metadata, versions, or other analytics. However, it does not explicitly mention when to avoid or provide alternative tool names for related tasks.

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

get_user_activity_v1_users__clerk_id__social_activity_getC

GET /v1/users/{clerk_id}/social-activity (public) — Public social activity timeline for a user — Public timeline for one user.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
limitNo
offsetNo

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 behavior. It only says 'public' but doesn't explain read-only nature, pagination via limit/offset, or response content. Minimal value beyond the name.

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?

Description is very short but redundant: 'Public social activity timeline for a user' and 'Public timeline for one user' repeat the same idea. Could be more concise.

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?

For a simple tool with 3 params and no output schema, the description is incomplete. It omits return format, pagination details, and differentiation from similar tools.

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%, so description should explain parameters. It only implicitly mentions 'clerk_id' in the URL, with no details on limit or offset semantics.

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 it returns the public social activity timeline for a user using a verb+resource pattern. However, it doesn't differentiate from sibling 'get_user_activity' which uses 'user_id' instead of 'clerk_id'.

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 versus similar tools like 'get_user_activity' or 'get_feed'. No alternatives or exclusions mentioned.

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

get_user_activity_v1_users__user_id__activity_getB

GET /v1/users/{user_id}/activity (public) — Get User Activity — Get paginated activity feed for a user.

Returns a list of activities (dataset creation, starring, syncing, etc.) ordered by most recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum number of activities to return
offsetNoNumber of activities to skip
typeNoFilter by activity type: created, starred, unstarred, synced, updated

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are missing, so the description must compensate. It states the tool is public, returns paginated results ordered by most recent, and lists activity types. However, it does not disclose auth requirements, rate limits, or other behavioral traits beyond basic functionality.

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 efficient sentences: first provides endpoint and primary purpose, second adds key details about content and ordering. No redundant or unnecessary 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?

With no output schema, the description partially explains return values (list of activities, recent first) but lacks details on pagination metadata, error scenarios, or authentication. 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?

Schema coverage is 75%, with descriptions for limit, offset, and type. The description adds value by providing example activity types (created, starred, synced, etc.), which helps the agent understand the type filter parameter context.

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 retrieves a paginated activity feed for a user, listing example activity types. However, it does not explicitly differentiate from similar sibling tools like get_feed_v1_me_feed_get or get_user_activity_v1_users__clerk_id__social_activity_get.

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 versus alternatives, no mention of prerequisites or exclusions. With many activity-related siblings, this omission hinders correct tool selection.

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

get_user_by_query_v1_users_getB

GET /v1/users (public) — Look up user by username — Look up a user by username.

When username is provided, returns the matching user's public profile (same shape as GET /v1/users/{user_id}).

This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNoUsername to look up

TDQS

B3.4/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 carry the full behavioral burden. It states the endpoint is public and no auth required, but fails to disclose behavior when username is not provided (schema allows null), response shape details beyond 'same shape as user_id endpoint', or error handling.

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 somewhat redundant, repeating 'Look up user by username' twice. It could be more concise, but it is clear and front-loads key information.

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 output schema and no annotations, the description should provide more context on expected behavior when username is omitted, response format, and potential errors. It only mentions 'public profile' without further detail.

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

Parameters3/5

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

Schema coverage is 100% with a clear description ('Username to look up'). The description repeats this without adding deeper details like constraints or format, so baseline 3 is appropriate.

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 tool's purpose: look up a user by username, returning the public profile. It distinguishes from sibling tools like get_user_profile_v1_users__user_id__get by specifying the lookup by username rather than user ID.

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 usage when a username is available, but does not explicitly contrast with sibling tools like get_user_profile_v1_users__user_id__get. It notes the endpoint is public and requires no authentication, which provides context.

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

get_user_profile_v1_users__user_id__getA

GET /v1/users/{user_id} (public) — Get user public profile — Get a user's public profile.

Returns the user's public information including dataset count, starred count, and public collection count.

This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Clearly states it's public, no auth, and returns specific counts. No annotations, but description adequately discloses behavior for a simple read operation.

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?

Short and front-loaded, though the first sentence is slightly repetitive. No unnecessary information.

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

Completeness4/5

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

Covers what the tool does and what it returns. Lacks output schema but description provides enough for a simple GET.

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

Parameters3/5

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

Parameter user_id is explained by the HTTP path but lacks details on format or validation. Schema coverage 0% so description partially compensates.

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?

Purpose is clear: get public profile with specific fields. However, no explicit differentiation from sibling user tools like get_user_activity or get_user_by_query.

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?

Description implies usage (public, no auth) but does not provide when-not-to-use or contrast with alternatives.

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

get_versioned_view_meta_v1_views___username___slug_with_version_B

GET /v1/views/@{username}/{slug_with_version}/meta (public) — Get version metadata — Return metadata for the resolved version (display name, schema, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
slug_with_versionYes

TDQS

B3.2/5.0
Behavior3/5

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

The description discloses the tool is a public GET operation (read-only) and returns metadata such as display name and schema. Since no annotations exist, the description carries the behavioral transparency burden but does not detail potential side effects, authentication beyond 'public', or rate limits. It is adequate but not thorough.

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 a single, well-structured sentence that efficiently conveys the endpoint, visibility, purpose, and return contents. Every part serves a clear function without unnecessary verbosity.

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?

While the tool is simple with two parameters and no output schema, the description lacks a precise enumeration of return fields beyond 'display name, schema, etc.' It also does not clarify the relationship to sibling tools that retrieve more complete view data, leaving some contextual 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?

With 0% schema description coverage and no parameter descriptions in the tool description, the agent has no explicit explanation of what 'username' and 'slug_with_version' represent or their allowed formats. The path template provides marginal context but fails to fully compensate.

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 tool's purpose: 'Get version metadata' for a resolved version, specifying it returns metadata like display name and schema. The inclusion of the HTTP method and path, along with differentiation from sibling tools (e.g., get_versioned_view retrieves the view itself), makes the purpose distinct.

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 explicit guidance on when to use this tool versus alternatives like get_versioned_view (which retrieves the full view) or list_versions (which lists versions). The description implies usage for retrieving metadata but does not provide exclusions or contextual cues.

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

get_versioned_view_v1_views___username___slug_with_version__getA

GET /v1/views/@{username}/{slug_with_version} (public) — Get versioned view data — Resolve a versioned view and execute its query against parquet.

Parses the frozen user_view_versions.config snapshot into a UserViewConfig, looks up the dataset's parquet path, and routes the query through the same execution path used by sandbox preview (execute_user_view_config). Rows are recorded as a request_event so the view_count trigger fires.

limit and offset are accepted on the URL; offset is currently a no-op for keyset-paginated query_with_view (the executor uses an opaque cursor instead). Honoring limit is the priority — a UI that wants paging should land here once the executor exposes offset semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
slug_with_versionYes
limitNo
offsetNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains internal details: parses frozen config, looks up parquet path, routes through execute_user_view_config, records request_event for view_count trigger, and clarifies that offset is a no-op for keyset-paginated queries. This goes beyond basic purpose to reveal side effects and caveats.

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 structured with a title line, then a paragraph on execution details, and a final paragraph on parameters. It is relatively efficient for the level of detail, though it could be slightly tighter. Each sentence adds value without redundancy.

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 4 parameters, no output schema, and no annotations, the description covers behavior, side effects, and parameter caveats reasonably well. However, it fails to describe the two required parameters, reducing completeness. The execution flow explanation is helpful but incomplete without full parameter documentation.

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 must compensate. It only explains limit and offset (offset is a no-op, limit is honored), but completely omits description for the required parameters username and slug_with_version. This leaves a significant gap in understanding how to specify the view.

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 tool's purpose: 'GET /v1/views/@{username}/{slug_with_version} (public) — Get versioned view data — Resolve a versioned view and execute its query against parquet.' It is a specific verb-resource combination that distinguishes it from siblings like get_versioned_view_meta, which retrieves only metadata.

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 notes that the endpoint is public and explains the behavior of limit and offset, but it does not explicitly guide when to use this tool versus alternatives. It lacks clear when-to-use or when-not-to-use directives, though the purpose is implicit.

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

get_view_v1_user_views__clerk_id___slug__getB

GET /v1/user-views/{clerk_id}/{slug} (public) — Get a specific user view — Get a view by (clerk_id, slug).

Drafts are owner-only. Published views are public.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes

TDQS

B3/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 only mentions access control for drafts vs. published views. It does not disclose authentication requirements, error behavior (e.g., what happens if the view doesn't exist), or any side effects. The minimal behavioral detail is insufficient for a safe agent invocation.

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 short and to the point, with the purpose stated first. It consists of two sentences that efficiently convey the tool's function and access rules. No redundant or extraneous information is present.

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's simplicity (get by identifier, no output schema) and the existence of sibling tools, the description covers the essential purpose and access constraints. However, it lacks details on return values, authentication requirements, and error handling. For a minimal tool, 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.

Parameters2/5

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

The schema has 0% parameter description coverage. The description adds that the view is identified by (clerk_id, slug), but does not explain what clerk_id or slug represent, acceptable formats, or constraints. Beyond implying they are identifiers, the description adds little meaning beyond the schema structure.

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: 'Get a specific user view' identified by clerk_id and slug. It also distinguishes between drafts and published views, giving clarity on access. However, it does not explicitly differentiate from other get view endpoints like get_view_v1_views__name__get, but the identifier makes it distinct enough.

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 provides a usage condition: 'Drafts are owner-only. Published views are public.' This implies when the tool can be used based on view visibility. However, it does not give explicit guidance on when not to use this tool or mention alternative tools for similar tasks, such as other view retrieval endpoints.

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

get_view_v1_views__name__getC

GET /v1/views/{name} (public) — Get View — Get detailed configuration for a specific view.

Includes all alias definitions, column projections, and lookup configurations for data enrichment.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.9/5.0
Behavior3/5

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

The description mentions the response includes alias definitions, column projections, and lookup configurations, providing some behavioral insight. However, it does not explicitly state it is read-only, nor does it disclose any side effects or authentication requirements beyond the '(public)' label. Without annotations, this is moderate but not fully transparent.

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 concise with three short sentences. Key information is front-loaded (purpose). However, there is minor redundancy between the title line and the first sentence. Overall efficient.

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's simplicity (1 parameter, no output schema), the description covers what the response includes (aliases, projections, lookups) and notes it is public. However, it lacks constraints, expected input format, and any reference to output structure or pagination. Not fully complete but adequate for a simple GET.

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 input schema has one parameter 'name' with no description and 0% coverage. The description does not explain the 'name' parameter—its format, meaning, or examples. Schema coverage is low and the description fails to compensate, making it difficult for an agent to know how to populate 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 'Get' and the resource 'View', and specifies it returns detailed configuration including aliases, projections, and lookups. However, it does not explicitly differentiate from sibling tools like get_view_v1_user_views__clerk_id___slug__get or list_views_v1_views_get, leaving ambiguity on which view retrieval tool to use.

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. The description mentions it is 'public', implying it may require less authentication, but does not give explicit when-to-use or when-not-to-use context. No reference to sibling tools or conditions.

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

list_all_categories_v1_categories_getA

GET /v1/categories (public) — List all categories — List all data categories with dataset counts.

Returns categories that have at least one dataset, ordered by dataset count (most popular first).

Categories are derived from dataset metadata labels set during LLM enrichment.

No authentication required - this is a public endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description fully compensates by disclosing that only categories with at least one dataset are returned, the ordering is by dataset count descending, and categories are derived from LLM enrichment. No annotations exist to contradict, so score reflects added value.

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 four sentences, each providing unique information: endpoint and public status, core function, ordering and inclusion criteria, and data source. It is front-loaded and free of redundant text.

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

Completeness4/5

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

Without an output schema, the description clearly explains what is returned (categories with counts, ordered). It mentions derivation but does not detail pagination or absolute count limits, which are acceptable for a simple list endpoint.

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?

The input schema has zero parameters and 100% coverage, so the description need not add parameter details. However, it adds value by explaining the output ordering and data derivation, which is not in 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 tool lists all categories with dataset counts, ordered by popularity, and explicitly identifies the HTTP method and endpoint. It distinguishes itself from other category tools like get_category_detail_v1_categories__slug__get by focusing on a list endpoint vs a detail endpoint.

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 specifies that it is a public endpoint requiring no authentication, which implies general availability. However, it does not explicitly state when to use this tool over alternatives (e.g., get_category_detail) 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.

list_changelog_v1_changelog_getA

GET /v1/changelog (public) — List changelog entries — List recent platform announcements.

Returns a paginated list of changelog entries, ordered by published_at descending (most recent first).

This is a public endpoint and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description covers key behaviors: it's a GET endpoint, public, no auth, paginated, ordered by published_at descending. It does not mention rate limits or edge cases, but for a simple read-only tool this is adequate.

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 three sentences, front-loads the endpoint and purpose, and avoids redundancy. Every sentence is informative and necessary.

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

Completeness4/5

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

While there is no output schema, the description indicates a paginated list of changelog entries with ordering. It is complete enough for a simple list tool, though it could optionally detail the entry structure. Among many siblings, this tool is unique, so contextual completeness is high.

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?

The input schema covers parameters fully (100% coverage). The description adds context beyond the schema by stating the ordering (by published_at descending), which helps the agent understand how pagination works. This adds value.

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 tool lists changelog entries (recent platform announcements) with pagination and ordering. It explicitly notes it's public and requires no authentication, distinguishing it from other list-related sibling tools.

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 provides context for when to use (to see recent platform announcements) and that it's public. However, it does not explicitly state alternatives or when not to use, though it's sufficiently clear for a straightforward list tool.

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

list_datasets_v1_datasets_getA

GET /v1/datasets (public) — List Datasets — List all datasets with pagination.

Returns a lightweight summary of each dataset. Use the individual dataset endpoints to get full details including schema_info and column_metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNoFilter by status: pending, ingesting, ready, error
sortNoSort field with direction prefix. Use - for desc, + or none for asc. Supported: updated_at, created_at, name, status. Default: -updated_at
providerNoFilter by provider slug

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It states the endpoint is public and returns paginated lightweight summaries, but lacks details on rate limits, authentication, response structure, or pagination behavior (e.g., default limit, maximum limit). The basic safety profile is communicated, but depth is 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 concise at two sentences, front-loading the core purpose and including a clear alternative guidance. Every sentence adds value without redundancy.

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 5 parameters, no output schema, and no annotations, the description provides minimal context. It explains the high-level purpose and response nature but omits details on parameter usage, default behavior (e.g., sort order, page size), and error handling. The schema partially fills gaps, but the description itself is incomplete for a listing endpoint.

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 description adds no information about parameters. Schema coverage is 60%—three of five parameters have descriptions in the schema (status, sort, provider), but limit and offset lack descriptions. The description does not compensate for these missing schema descriptions, leaving the agent with incomplete understanding of all parameters.

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 tool lists all datasets with pagination and returns lightweight summaries. It distinguishes from sibling endpoints like get_dataset_by_path or list_provider_datasets by explicitly directing users to individual dataset endpoints for full details, including schema_info and column_metadata.

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 provides context for when to use this tool (getting a high-level list) versus alternative tools (individual dataset endpoints for full details). However, it does not explicitly mention other listing alternatives like list_provider_datasets or list_user_datasets, which could be relevant for scoped queries.

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

list_dataset_views_v1_datasets__provider___dataset__views_getA

GET /v1/datasets/{provider}/{dataset}/views (public) — List Dataset Views — List available views for a specific dataset.

Returns all views applicable to this dataset, including:

  • Inline views defined in dataset.yaml (spec.views field)

  • Global predefined views that match the dataset schema

Dataset views take priority over predefined views with the same name.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It explicitly states the endpoint is public and describes the return types and priority behavior. This adequately discloses read-only nature and key behavior.

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 concise, front-loading the purpose and then detailing the return types and priority. It uses bullet points efficiently and contains no redundant information.

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

Completeness4/5

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

For a simple list tool with two parameters and no output schema, the description covers the main points: what views are returned, the priority rule, and the public nature. It lacks details like view structure or pagination, but these are likely minimal.

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

Parameters3/5

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

With 0% schema description coverage, the description adds only minimal meaning: it implies the parameters identify the dataset. However, it does not elaborate on what 'provider' or 'dataset' represent or any constraints, relying on common understanding.

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 tool lists available views for a specific dataset, distinguishing it from siblings like get_dataset_view (single view) or list_views (all views). It explains the two types of views returned and the priority rule.

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 implies when to use the tool (to get all views for a dataset) but does not explicitly contrast with alternatives such as get_dataset_view or list_views. No 'when not to use' guidance is provided.

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

list_directory_v1_directories_getA

GET /v1/directories (public) — List Directory — List and analyze a web directory.

Fetches the directory listing from the provided URL, parses the content to extract file and subdirectory entries, and analyzes the contents to suggest appropriate next actions.

The response includes a suggested_action field:

  • "discover": Directory contains data files ready to be added as datasets

  • "browse": Directory contains subdirectories to explore further

  • "mixed": Directory contains both data files and subdirectories

Results are cached for 5 minutes to reduce load on remote servers. Use refresh=true to bypass the cache and fetch fresh data.

Args: request: FastAPI request for getting client IP url: URL of the directory to list (must be a valid HTTP/HTTPS URL) refresh: If true, by…

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the directory to list
refreshNoBypass cache and fetch fresh data

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description adequately discloses caching (5 minutes), refresh capability, and the analysis/suggestion feature. It could mention rate limits or authorization, but for a public GET endpoint, it's reasonably transparent.

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 well-structured with sections for endpoint, behavior, suggested actions, caching, and args. It is slightly verbose but each part 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?

Without an output schema, the description partially covers return fields (suggested_action) but does not detail the full response structure, such as the list of files and directories. Could be more complete.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds that url must be a valid HTTP/HTTPS URL and explains refresh, but also mentions a 'request' parameter not in schema, which may confuse.

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 lists and analyzes a web directory, parsing content and suggesting next actions. It distinguishes itself from sibling tools like discover_datasets by focusing on any web directory URL.

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 implies usage for listing directories and mentions caching behavior, but does not explicitly state when to avoid using this tool or compare to alternatives like discover_datasets or search_datasets.

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

list_figures_v1_figures_getA

GET /v1/figures (public) — List figures (discovery feed) — List public figures for the discovery feed.

A figure is a user view with a viz_spec (visualization configuration) set. Results include viz_spec, like_count, and standard view metadata.

Sort options:

  • popular: ordered by like_count DESC, then created_at DESC

  • recent: ordered by created_at DESC

This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: "popular" (by like_count) or "recent" (by created_at)
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses GET method, public access, auth not required, sort orders, and result fields. Minor omission: no mention of pagination details beyond schema.

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?

Five concise sentences, each adding distinct information: route, purpose, definition, results, sort options, auth status. No redundancy; front-loaded with key info.

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

Completeness4/5

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

Defines figures, lists output fields, explains sorts, and notes public access. Lacks default sort order (optional param) but schema covers optionality. Good for a list tool with schema but no output schema.

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?

Schema coverage 100% with descriptions. Description adds value by detailing sort order logic (like_count DESC, created_at DESC) beyond schema's brief descriptions. Limit and offset not elaborated but schema suffices.

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 tool lists public figures for the discovery feed, defines what a figure is, and mentions included fields. It distinguishes from siblings like list_user_figures by specifying 'public' and 'discovery feed'.

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 implies usage for the discovery feed and notes no authentication, but does not explicitly tell when to use this versus alternatives (e.g., list_user_figures). No when-not-to-use guidance.

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

list_followers_v1_users__clerk_id__followers_getA

GET /v1/users/{clerk_id}/followers (public) — List a user's followers — List users following clerk_id (newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
limitNo
offsetNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states public access and newest-first ordering, but lacks explanation of pagination via limit/offset or error handling (e.g., if clerk_id is invalid).

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?

Single sentence, front-loaded with endpoint and verb, no redundancies. Every part adds value.

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

Completeness4/5

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

For a simple list endpoint with no annotations or output schema, the description covers purpose, ordering, and public access. Missing pagination details, but still fairly complete.

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

Parameters3/5

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

Schema has 0% description coverage. Description adds meaning for clerk_id by stating 'user's followers' and 'following `clerk_id`', but does not explain limit and offset parameters beyond schema constraints.

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 'List' and resource 'followers', specifies the user by clerk_id, and mentions ordering (newest first). It differentiates from sibling like 'list_following' which lists who the user follows.

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 implicitly tells when to use this tool (to get followers) vs alternatives (list_following for following), but no explicit when-not or exclusions.

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

list_following_v1_users__clerk_id__following_getB

GET /v1/users/{clerk_id}/following (public) — List who a user is following — List users that clerk_id is following (newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
limitNo
offsetNo

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It mentions the tool is public, a GET operation, and returns results ordered newest first. However, it does not disclose pagination behavior, error conditions, or whether authentication is required (though 'public' hints at no auth). The behavioral disclosure is basic.

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 that efficiently conveys the core purpose and ordering. It is front-loaded and avoids extraneous information. However, it could benefit from structured sections (e.g., separating route, purpose, notes).

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?

For a simple listing tool with no output schema, the description covers the basic purpose and ordering but omits details about return values, pagination, and parameter behavior. Without output schema or deeper context, the description is minimally adequate but not fully complete for an agent to use without guessing.

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 input schema has 0% parameter description coverage, and the tool description does not explain any of the three parameters (clerk_id, limit, offset). The description only references clerk_id implicitly via the URL path but adds no semantic value beyond the schema. This is a significant gap.

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 lists users that the specified user is following, with newest first ordering. It is distinct from siblings like list_followers (which lists followers) and follow/unfollow mutations, providing clear 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 does not explicitly state when to use this tool versus alternatives (e.g., list_followers). While the purpose differentiates it, no guidance on context or limitations is given. It lacks explicit usage directives.

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

list_joinable_v1_datasets__provider___dataset__joinable_getA

GET /v1/datasets/{provider}/{dataset}/joinable (public) — List previewable joinable datasets — Return join targets for the compose/preview UI.

Filters out low-signal joins (date-only at low confidence, cross-community). Falls back to a small number of low-signal matches when the filter would produce an empty list so the UI still has something to render.

Public endpoint — matches the auth stance of other dataset-detail routes. Returns an empty target list (not 503) when Neo4j is unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A4.2/5.0
Behavior5/5

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

Even without annotations, the description details important behaviors: auth (public endpoint), error handling (returns empty list, not 503 when Neo4j is down), and filtering logic (low-signal joins filtered out, fallback to keep UI functional). This is comprehensive for a non-mutating tool.

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 succinct and front-loaded with the purpose, followed by key behavioral details. No redundant sentences; every line 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?

The description explains the filtering and fallback behavior but lacks detail on the structure of the returned join targets (e.g., what fields each target contains). Without an output schema, this leaves the agent without enough context to process the response.

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 has no descriptions (0% coverage). The description only provides the URL template, implying provider and dataset are identifiers, but offers no examples, constraints, or expected formats. It adds minimal meaning beyond the schema itself.

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 tool's function: 'List previewable joinable datasets' and specifies its context for the compose/preview UI. It distinguishes itself from siblings like compose_preview by providing the data that UI uses.

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 usage when needing join targets for the compose/preview UI, and mentions filters and fallback behavior. However, it does not explicitly contrast with alternative tools or state 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.

list_provider_datasets_v1_datasets__provider__getC

GET /v1/datasets/{provider} (public) — List Provider Datasets — List all datasets for a provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
limitNo
offsetNo
statusNoFilter by status: pending, ingesting, ready, error
sortNoSort by field. Prefix with - for descending (e.g., 'name', '-created_at')

TDQS

C2.8/5.0
Behavior2/5

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

The description mentions the endpoint is public but does not disclose key behaviors such as pagination (limit/offset), default sorting, filtering options, or what the response contains. With no annotations, more behavioral context is needed.

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: a single sentence with the HTTP method, path, and a clear one-line summary. No waste, front-loaded with essential info.

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?

Given the tool has 5 parameters, no output schema, and no annotations, the description is insufficient. It does not explain pagination, filtering, sort defaults, or response structure, leaving the agent underinformed for correct usage.

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 coverage is only 40%, and the description adds no explanation for the parameters. The 'provider' parameter is required but undocumented; 'limit' and 'offset' lack descriptions. The description fails to compensate for the schema gaps.

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 ('List all datasets for a provider') and the specific resource ('datasets for a provider'), along with the HTTP method and path. It distinguishes from siblings like list_datasets_v1_datasets_get (which lists all datasets without provider filter) and get_provider_datasets_metadata (metadata, not list).

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 gives no guidance on when to use this tool versus alternatives. Sibling tools like list_datasets_v1_datasets_get suggest a broader scope, but no explicit comparison or when-not-to-use instructions are provided.

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

list_providers_v1_providers_getB

GET /v1/providers (public) — List Providers — List all data providers with dataset stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

B3.2/5.0
Behavior3/5

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

The description indicates it's a public GET endpoint and mentions 'dataset stats', but does not elaborate on what those stats include or any behavioral traits like pagination, rate limits, or idempotency. Without annotations, more detail would improve transparency.

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 a single sentence that efficiently conveys the core purpose without extraneous information. It is well-structured and easy to parse.

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 no output schema and a simple list operation, the description is minimally adequate. However, it lacks details about the returned data structure, pagination behavior, and what 'dataset stats' comprises, leaving gaps for the agent.

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 input schema has two parameters (limit, offset) with no descriptions in the schema or the tool description. Since schema_description_coverage is 0%, the description should explain these parameters, but it does not. This severely hampers correct invocation.

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 'List all data providers with dataset stats', which is a specific verb+resource combination. It distinguishes the tool from other list tools (e.g., list_provider_datasets) by focusing on providers with stats.

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 versus alternatives like get_provider_v1_providers__provider__get or list_provider_datasets. The agent must infer usage from context, which is insufficient.

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

list_published_views_by_username_v1_users___username__views_getB

GET /v1/users/@{username}/views (public) — List a user's published views (portfolio) — List published views for a profile portfolio.

include_drafts=true is only honored when the caller is the owner; other callers see published views only. Username casing is canonicalized via a 301 if necessary.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
limitNo
offsetNo
sortNoSort order for the listing. `stars` = like_count desc, `updated` = updated_at desc (default), `usage` = view_count desc.
include_draftsNoWhen the caller IS the user, include their drafts. Ignored otherwise.

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description provides some behavioral context: include_drafts behavior and username canonicalization. However, it omits details like pagination defaults, sort order, and output format, which would help the agent understand side effects and constraints.

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 concise with 3 sentences, front-loading the endpoint and purpose. Every sentence provides value, and there is no redundancy.

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?

For a list tool with 5 parameters and no output schema, the description covers the core purpose and a key behavioral nuance. However, it misses pagination, default sort, and output structure, leaving gaps for an agent to understand full usage.

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 40%, with only 'sort' and 'include_drafts' having descriptions. The description adds meaning for 'include_drafts' (owner-only behavior) but not for 'username', 'limit', 'offset', which remain undocumented. Low coverage requires more compensation.

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 lists a user's published views (portfolio) via the endpoint. It is specific about the resource and verb, but does not explicitly differentiate from siblings like list_user_views, which also list views but by user ID.

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 explicit guidance on when to use this tool versus alternatives. The description implies usage for public portfolios and mentions owner-only behavior for drafts, but lacks when-not or alternative suggestions.

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

list_request_events_v1_requests__request_id__events_getA

GET /v1/requests/{request_id}/events (public) — List Request Events — Paginated thread events for a single request (oldest-first).

Soft-deleted comments come back as tombstones (body=null, deleted_at set) so the frontend can render "[deleted on ]" without losing position in the timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
limitNo
offsetNo

TDQS

A3.8/5.0
Behavior4/5

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

Without annotations, the description effectively discloses key behavioral traits: soft-deleted comments appear as tombstones with body=null and deleted_at set. It also notes the endpoint is public and oldest-first ordering. Rate limits or authentication details are omitted, but the provided information is valuable.

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 and one bullet point. The key purpose is front-loaded, and the tombstone detail is efficiently placed in a bullet. Every sentence earns its place.

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?

For a simple list endpoint with 3 parameters and no output schema, the description covers purpose, ordering, and a special case (tombstones). However, it does not describe the response format (array of events) or explain pagination mechanics, leaving some gaps in completeness.

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%, so the description must compensate. It mentions request_id implicitly via path and refers to pagination, but does not explicitly define limit, offset, or their semantics. This leaves the agent without clear understanding of parameter usage beyond what schema types provide.

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 HTTP method, endpoint, and purpose: listing paginated thread events for a single request in oldest-first order. It distinguishes this tool from request-related siblings like get_request_detail or list_requests.

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 implies usage for retrieving events for a request, but lacks explicit guidance on when to use this tool versus alternatives (e.g., add_comment, delete_comment). No when-not-to-use or exclusions are provided.

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

list_requests_v1_requests_getA

GET /v1/requests (public) — List Requests — List dataset requests in the public queue.

Sorted by demand (vote count) descending by default. Pass sort=newest to sort by creation time instead. If the caller is authenticated, each entry includes whether they've upvoted it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNoFilter by status
sortNoSort order: popular or newest
categoryNoFilter by category
use_caseNoFilter by use_case
searchNoSearch by title, URL, user_description, or submitter username (case-insensitive)

TDQS

A3.5/5.0
Behavior3/5

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

Adds behavioral context such as default sorting, sort parameter usage, and authentication effect on response. However, with no annotations, it omits other aspects like idempotence, safety, or rate limits. The GET verb implies read-only, but not stated.

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, no redundant information. Efficiently conveys the endpoint, purpose, and key behavioral notes. Front-loaded with purpose.

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 no output schema, the description could elaborate more on response fields or filtering usage. It mentions authenticated upvote status but lacks guidance on filter parameters (status, category, etc.). Adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 71%, so baseline is 3. The description adds value for the sort parameter by explaining its default behavior. Other parameters are already described in the schema. No additional semantics for limit, offset, status, etc.

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?

Clearly states the action 'List Requests' and the resource 'dataset requests in the public queue'. Distinguishes itself from siblings like get_request_detail by focusing on listing, but does not explicitly differentiate from other list tools.

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?

Provides context on sorting options and authentication effect, but does not specify when to use this tool versus alternatives like submit_request or get_request_detail. No explicit 'when not to use' guidance.

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

list_user_collections_v1_users__user_id__collections_getA

GET /v1/users/{user_id}/collections (public) — List user's public collections — List public collections created by a user.

Returns a paginated list of the user's public collections, ordered by last update time (most recent first).

Returns empty list for users who haven't created any collections yet. Private collections are not included. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: pagination, ordering by last update, empty list for no collections, exclusion of private collections, and public access without authentication. This provides thorough transparency.

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 succinct with 5 sentences, front-loading the key purpose and structure. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple list tool, the description covers all necessary context: purpose, behavior, pagination, and auth. No output schema is present, but the description adequately describes the response nature (paginated list).

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

Parameters3/5

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

Schema coverage is 67% with descriptions for limit and offset. The description adds little beyond the schema, only implying user_id identifies the creator. Baseline score is appropriate as schema already documents most parameters.

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 that the tool lists public collections for a user, using a specific verb and resource. It distinguishes itself by focusing on 'public collections' but does not explicitly differentiate from sibling tools like list_user_datasets.

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 implies when to use the tool (to list public collections) and mentions that private collections are not included, hinting at when not to use it. However, it lacks explicit guidance on alternatives or when-not scenarios.

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

list_user_datasets_v1_users__user_id__datasets_getA

GET /v1/users/{user_id}/datasets (public) — List user's datasets — List datasets owned by a user.

Returns a paginated list of datasets that the user has created, ordered by creation date (most recent first).

Returns empty list for users who haven't created any datasets yet. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses key behaviors: paginated results, ordering by creation date descending, empty list for no datasets, and that the endpoint is public and unauthenticated. Although no annotations exist, these details provide good transparency for a read-only GET endpoint.

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 with four sentences, front-loading the HTTP method, path, and purpose. Every sentence adds value without unnecessary words or repetition.

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 no output schema, the description does not detail the structure of returned dataset objects. It covers the essential behavior (paginated, ordered, empty list, public) but omits what fields are in each dataset, which would aid an agent in interpreting results.

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

Parameters3/5

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

Schema coverage is 67% (limit and offset have descriptions). The description does not add additional parameter meaning beyond the schema; it only implies pagination via the word 'paginated'. The required user_id is shown in the path but not elaborated.

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 tool lists datasets owned by a specific user, with the specific verb 'List' and resource 'user's datasets'. It distinguishes from sibling tools like 'list_datasets' which lists all datasets without user filter.

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 explains that the endpoint is public and requires no authentication, but does not provide explicit guidance on when to use this versus other dataset listing endpoints (e.g., list_datasets_v1_datasets_get). Usage context is implied but not delineated.

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

list_user_figures_v1_users__user_id__figures_getA

GET /v1/users/{user_id}/figures (public) — List user's public figures — List public figures created by a user.

Figures are views that have a viz_spec set (chart/visualization configuration). Results are ordered by like_count descending (most liked first).

Returns empty list for users who haven't created any figures yet. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description covers key behaviors: ordering by like_count descending, returning empty list for users without figures, and public access requiring no auth. It lacks details on pagination limits or side effects, but for a read-only GET, this is adequate.

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 concise, front-loads the method and path, and provides essential details (definition, ordering, empty behavior, public status) in a compact structure with no unnecessary words.

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?

No output schema is provided. The description indicates a list of figures is returned but does not specify the structure of each figure (e.g., fields). For a list endpoint, this is adequate but could be improved by mentioning the figure object schema.

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

Parameters3/5

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

The schema covers limit and offset with descriptions (67% coverage). The description adds that user_id identifies the user whose figures are listed and that results are ordered, but does not elaborate on parameter formats or constraints beyond 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 tool lists public figures for a specific user, defines what a figure is (views with viz_spec), and distinguishes from sibling tools like list_figures (all figures) and get_figure (single figure).

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 indicates the endpoint is public and does not require authentication, and mentions ordering and empty list behavior. It provides context for when to use it (list figures per user) but does not explicitly contrast with alternative tools.

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

list_user_liked_figures_v1_users__user_id__likes_figures_getA

GET /v1/users/{user_id}/likes/figures (public) — List figures liked by a user — List figures liked by a user.

Returns public figures the user has liked, ordered by when they liked them (most recent first). liked_at is included in each item.

Returns empty list for users who haven't liked any figures yet. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description fully bears the transparency burden. It clearly states the ordering (most recent first), that liked_at is included in each item, the empty list edge case, and that authentication is not required. This provides a complete behavioral picture.

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 concise with three sentences covering purpose, ordering, edge case, and authentication. It is front-loaded with the key information and avoids redundancy.

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

Completeness4/5

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

The description explains the return value (liked_at, ordering, empty list) and the public nature. Given no output schema, this is sufficient for a list endpoint. It could briefly mention pagination behavior (e.g., how limit/offset work together), but the omission is minor.

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 description adds no information about the parameters beyond what the input schema provides. The schema has descriptions for limit and offset (67% coverage), but user_id is missing a description, and the description does not clarify its format or usage. This fails to compensate for the schema gap.

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 tool lists figures liked by a user, using a specific verb and resource. It distinguishes itself from other user-related list endpoints (e.g., list_user_datasets, list_user_figures) by focusing on liked figures, and the naming convention reinforces this.

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 mentions the endpoint is public and does not require authentication, which provides context. It also explains the ordering and empty list behavior. However, it does not explicitly contrast with similar sibling tools like list_figures_v1_figures_get (all figures) or list_user_figures_v1_users__user_id__figures_get (figures created by user), which would help an agent decide when to use this tool.

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

list_user_starred_datasets_v1_users__user_id__stars_datasets_getA

GET /v1/users/{user_id}/stars/datasets (public) — List user's starred datasets — List datasets starred by a user.

Returns a paginated list of datasets the user has starred, ordered by when they were starred (most recent first).

Returns empty list for users who haven't starred any datasets yet. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description effectively discloses key behaviors: public endpoint, no authentication required, paginated results ordered by recency, and empty list for users with no starred datasets. This covers most essential traits, though rate limits or error details are omitted.

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 with three sentences, front-loading the HTTP method and summary, and providing necessary details without redundancy. Every sentence serves a clear purpose.

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

Completeness4/5

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

Given the tool's simplicity (list with pagination), the description adequately covers authentication, ordering, empty results, and pagination. Missing details like error handling or response structure are not critical for this context, and no output schema is provided.

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

Parameters3/5

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

The description does not elaborate on input parameters beyond what the schema provides; schema has descriptions for limit and offset, and the description only mentions pagination in general. Since schema coverage is 67%, the description adds no extra semantic value, meeting the baseline for this dimension.

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 identifies the tool as listing the datasets a user has starred, with ordering and empty result behavior explicitly stated. It distinguishes from sibling tools like list_user_starred_views by specifying 'datasets' and highlighting the public nature.

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 such as list_user_datasets or list_user_starred_views. The description only states the purpose but does not include exclusions or context for selection.

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

list_user_starred_views_v1_users__user_id__stars_views_getA

GET /v1/users/{user_id}/stars/views (public) — List a user's starred views (figures they have liked) — Published views the user has liked, ordered by most-recent like first.

Used by the profile "Starred" tab in phase 4. Mirrors GET /v1/users/{user_id}/stars/datasets.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNo
offsetNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the endpoint is public, the ordering, but omits pagination behavior (limit/offset) and any authentication details. Basic behavioral info is present, but not fully transparent.

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 three sentences and concise. The mention of 'phase 4' is slightly irrelevant but not harmful. It is front-loaded with the core purpose.

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 no output schema, the description should cover return format, pagination, and error cases. It provides ordering and usage context, but lacks pagination details and default behavior, making it adequate but not complete.

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 description must compensate. It does not explain any parameters: user_id, limit, offset. The only extra info is ordering, which relates to output, not inputs. This is a significant gap.

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 lists a user's starred views (figures they have liked), is public, and ordered by most-recent like first. It also distinguishes from the mirror datasets endpoint, which helps differentiate it among sibling tools.

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 mentions it is used by the profile 'Starred' tab and mirrors the datasets endpoint, providing context for when to use this tool. However, it does not explicitly state when not to use it or provide alternatives beyond the mirror.

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

list_user_views_v1_users__user_id__views_getA

GET /v1/users/{user_id}/views (public) — List user's public views — List public views created by a user.

Returns a paginated list of the user's public views, ordered by last update time (most recent first).

Returns empty list for users who haven't created any views yet. Private views are not included. This endpoint is public and does not require authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
limitNoMaximum results
offsetNoOffset for pagination

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses public access, no auth, pagination, ordering, empty list behavior, and exclusion of private views. It does not mention rate limits or pagination details but covers key behavioral traits.

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 concise with four sentences, each serving a purpose: identify endpoint and scope, ordering/pagination, empty case, and auth/public nature. It is front-loaded and efficient.

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

Completeness5/5

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

Given three parameters, no output schema, and no annotations, the description covers purpose, scope, ordering, pagination, empty result, and auth requirements. It is sufficiently complete for a list endpoint.

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?

Schema description coverage is 67%. The description adds context beyond schema by explaining pagination (ordered by last update time) and empty list behavior. It does not describe the user_id parameter but the tool name implies user context.

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 tool lists a user's public views, specifying the endpoint, scope (public), and ordering by last update time. It distinguishes from sibling tools like list_published_views_by_username and list_views by focusing on user-specific public views.

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 explains when to use this tool (to list a user's public views) and notes that it is public and does not require authentication. It implies not to use for private views but does not explicitly compare with sibling alternatives.

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

list_versions_v1_views___username___slug__versions_getA

GET /v1/views/@{username}/{slug}/versions (public) — List a view's published versions — Return every published version for @user/slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
slugYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden. It mentions 'public' and 'published versions', but omits important behavioral traits like pagination, ordering, or whether the endpoint is read-only. For a listing endpoint, minimal detail is provided beyond the action.

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 a single sentence, efficiently including the HTTP method, endpoint, visibility, and purpose. No redundant information, front-loaded with key details.

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?

For a simple list endpoint with two parameters and no output schema, the description covers the basic purpose and scope. However, it does not mention response format, ordering, or limits, leaving some gaps in completeness.

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

Parameters3/5

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

The schema has no descriptions (0% coverage). The description adds meaning by referencing '@user/slug', indicating username and slug parameters, but does not define them explicitly. It partially compensates for the schema gap but could be more precise.

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 lists published versions for a view identified by username and slug. It uses specific verb 'List' and resource 'published versions', effectively distinguishing it from sibling tools like list_view_versions which uses clerk_id.

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 implies the tool is public and lists versions, but provides no explicit guidance on when to use this over alternatives such as list_published_views_by_username or list_view_versions. Usage context is implied but lacks exclusions or criteria.

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

list_views_v1_views_getA

GET /v1/views (public) — List Views — List all available predefined views.

Returns a summary of each view including name, description, available aliases, and default sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly states the method (GET), that it's public, and what the response contains (name, description, aliases, default sorting). This is sufficient for a read-only list operation.

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 two sentences: first the endpoint and purpose, second the return content. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given no parameters and no output schema, the description fully covers the tool's purpose and return information. It includes the endpoint, public nature, and a summary of returned fields.

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?

There are zero parameters, so the schema coverage is 100% by default. The description adds no parameter details, which is acceptable as there are none. Baseline 4 is appropriate.

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 tool lists all available predefined views, using the verb 'List' and specifying the resource as 'all available predefined views'. It distinguishes from siblings like get_view (single view) and user-specific view tools.

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 implies usage for retrieving system views but does not explicitly state when to use this tool versus alternatives (e.g., for user-specific views or single view detail). No when-not-to-use guidance is provided.

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

list_view_versions_v1_user_views__clerk_id___slug__versions_getA

GET /v1/user-views/{clerk_id}/{slug}/versions (public) — List a view's published versions (owner-aware) — List versions for a view addressed by (clerk_id, slug).

Mirrors the public /v1/views/@user/slug/versions endpoint but uses the clerk_id-based URL so the sandbox can fetch its own drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It indicates read-only GET behavior and reveals that the tool can list drafts for the owner. However, it lacks details on authentication requirements, error responses, or constraints like rate limits.

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 three sentences long. The first sentence summarizes the purpose, the second adds behavioral context, and the third explains the relation to a sibling endpoint. It is efficient but could be more structured with bullet points.

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?

For a simple list endpoint with two parameters and no output schema, the description provides core purpose and key behavioral nuance (owner-aware, drafts). However, it lacks details on output format, error cases, and when to prefer this over the public counterpart, which are moderately important for correct invocation.

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 must add meaning beyond parameter names. It names 'clerk_id' and 'slug' but provides no format, constraints, or examples. The names are self-explanatory but no additional semantic value is given.

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 lists a view's published versions, specifying it is owner-aware and uses clerk_id/slug. It distinguishes itself from the public endpoint by noting the sandbox use case for fetching drafts. This is specific and unambiguous.

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 when to use this tool (for owner-aware listing, especially for sandbox/drafts) and references the public mirrored endpoint as an alternative. However, it does not explicitly state when not to use it or provide direct comparison with the sibling list_versions tool.

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

mark_in_progress_v1_requests__request_id__in_progress_postC

POST /v1/requests/{request_id}/in-progress (auth: Bearer OPENDATA_API_KEY) — Mark In Progress — Mark a dataset request as in-progress. Admin-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyNoRequest body (application/json) for POST /v1/requests/{request_id}/in-progress

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. The description indicates it is a write operation (POST) and requires admin auth, but does not disclose other behavioral traits such as whether the action is reversible, what happens to previous status, or any 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.

Conciseness4/5

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

The description is extremely concise, a single sentence including the path and auth requirement. While efficient, it could better structure information for quick scanning.

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 output schema, the description should explain return values or status. It does not. Among sibling tools for request management, this description lacks differentiation and clarity on effects.

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 50% (body has a description, but request_id does not). The description adds no additional meaning beyond what the schema already provides. No explanation of expected_version or comment usage.

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 'Mark' and the resource 'dataset request', with 'in-progress' as the status. It also specifies 'Admin-only', which distinguishes it from other request actions like 'approve' or 'reject'.

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 explicit guidance on when to use this tool versus alternatives like 'approve_request' or 'reject_request'. The description only mentions that it is admin-only, but does not provide context such as prerequisites or workflow ordering.

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

publish_view_v1_user_views__clerk_id___slug__publish_postA

POST /v1/user-views/{clerk_id}/{slug}/publish (auth: Bearer OPENDATA_API_KEY) — Publish a new version — Publish the current draft (or working-copy edits) as a new version.

bump_type is ignored for the first publish of a draft (always 1.0.0).

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes
bodyYesRequest body (application/json) for POST /v1/user-views/{clerk_id}/{slug}/publish

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It discloses that bump_type is ignored for the first publish (always 1.0.0), which is important behavioral context. However, it does not mention side effects (e.g., whether previous versions are overwritten or preserved), authentication details beyond a token note, or idempotency. The description is honest 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.

Conciseness4/5

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

The description is concise with two sentences. It front-loads the HTTP method and auth, which may be redundant given the tool name and schema, but does not add excessive verbosity. Every sentence provides useful information, though the auth detail could be omitted.

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 complexity of publishing a version with a special first-publish rule, the description lacks crucial context. It does not state what the tool returns (e.g., the new version number or a success status), whether a draft must exist, or if publishing is reversible. The absence of an output schema heightens the need for such details. This is incomplete for an action-oriented tool.

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

Parameters3/5

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

Schema description coverage is low (33%), and the description adds value by explaining that bump_type is ignored on first publish. It does not describe clerk_id or slug beyond their obvious path-parameter roles, nor does it expand on release_note limits. The added context clarifies a key nuance, but leafs significant gaps.

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 tool's purpose: 'Publish a new version' from the current draft or working-copy edits. It uses a specific verb ('Publish') and resource ('version'), and distinguishes itself from sibling tools like update_view (which modifies drafts) and create_and_publish_view (which combines creation and publishing).

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 implies usage when a draft exists and the user wants to publish a new version, but it does not explicitly state when to use this tool over alternatives like create_and_publish_view. It also notes the special behavior for first publish, offering some guidance, but lacks exclusionary criteria or prerequisites.

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

reject_request_v1_requests__request_id__reject_postB

POST /v1/requests/{request_id}/reject (auth: Bearer OPENDATA_API_KEY) — Reject Request — Reject a dataset request with a reason. Admin-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyYesRequest body (application/json) for POST /v1/requests/{request_id}/reject

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates the action is destructive (reject) and requires admin auth, but does not discuss side effects, reversibility, or error conditions.

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 concise and front-loaded with key info. However, it redundantly includes the HTTP method and path which may be implied by the tool name.

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 output schema and missing parameter explanations, the description is incomplete. It does not explain return values, error scenarios, or the effect on the dataset request state.

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 description only hints at the 'reason' parameter ('with a reason'), ignoring 'expected_version' and 'comment'. The input schema has low coverage (50%) and the description adds minimal value beyond that.

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 ('Reject Request'), the resource ('dataset request'), and includes a specific constraint ('Admin-only'). It distinguishes from sibling tools like approve_request.

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 implies usage by admins only and mentions the need for a reason, but does not explicitly state when to use this tool vs alternatives like approve_request or other request manipulations.

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

remove_upvote_v1_requests__request_id__upvote_deleteB

DELETE /v1/requests/{request_id}/upvote (auth: Bearer OPENDATA_API_KEY) — Remove Upvote — Remove an upvote from a dataset request.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must communicate behavioral traits. It identifies the HTTP method (DELETE) and auth requirement, but does not explain side effects (e.g., whether the user must have previously upvoted, if the operation is idempotent, 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.

Conciseness4/5

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

The description is concise at one sentence, but includes the HTTP method and auth in parentheses which may be redundant given the tool name. It is front-loaded but could be structured more clearly.

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?

For a simple removal tool with one parameter and no output schema, the description is minimally adequate. However, it lacks context about prerequisites (e.g., user must have upvoted first) and expected outcomes.

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 single parameter 'request_id' has no description in the schema (0% coverage), and the description does not clarify its meaning beyond the schema. The agent must infer that it refers to a dataset request ID.

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 tool removes an upvote from a dataset request, using the verb 'Remove' and specifying the resource 'upvote from a dataset request'. It distinguishes from the sibling tool 'upvote_request' which performs the opposite action.

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?

Usage is implied by the action name and description, but there is no explicit guidance on when to use this tool versus alternatives like 'upvote_request'. No exclusions or conditions are mentioned.

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

request_enrichment_v1_enrichment_request__provider___dataset__poA

POST /v1/enrichment/request/{provider}/{dataset} (auth: Bearer OPENDATA_API_KEY) — Request Enrichment — Public endpoint: any authenticated user can request enrichment.

Rate-limited to one request per user per dataset per hour. Records the request in enrichment_requests for audit, and (if not rate-limited) queues the dataset by setting enrichment_status='pending' and waking the worker -- same effect as the admin retry endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully discloses auth method, public nature, rate-limiting, audit logging, conditional queuing, and worker wake. It is transparent about what happens on success and under rate-limiting.

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 well-structured: first line gives core info (method, path, auth, purpose), then two sentences cover rate-limiting and effects. Every sentence adds value and is front-loaded.

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

Completeness4/5

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

The description covers purpose, auth, rate-limiting, and effects, but lacks information about the response/return value. Given no output schema, this is a minor gap; overall it is fairly complete for a simple POST endpoint.

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

Parameters3/5

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

The description does not explicitly define the 'provider' and 'dataset' parameters; it only uses them in the path. Schema coverage is 0%, so some explanation would be beneficial, though the names are somewhat clear from context.

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 is for requesting enrichment of a dataset, specifying the HTTP method and path. It distinguishes itself from sibling tools like submit_request by being a public enrichment-specific endpoint.

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 explains that it is public, authenticated, and rate-limited (one request per user per dataset per hour). It describes the effect (audit logging, queuing, worker wake) and compares to the admin retry endpoint, but does not explicitly mention when not to use it or alternatives.

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

search_datasets_v1_search_getA

GET /v1/search (public) — Search Datasets — Search across all datasets using full-text search.

Searches dataset names, descriptions, provider names, and column names. Results are ranked by relevance using PostgreSQL's FTS capabilities.

Search Modes:

  • keyword: Traditional FTS with tsvector matching

  • semantic: Embedding-based similarity search (conceptual matching)

  • hybrid: Combines both using Reciprocal Rank Fusion (RRF)

Query Syntax:

  • inflation - simple term search

  • "consumer price index" - exact phrase search

  • census -historical - exclude term

  • inflation OR unemployment - alternative terms

Sort Options:

  • relevance: FTS ranking (default when query provided)

  • recency: Most recently updated first

  • name: Alphabetical by dataset name

  • `populari…

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query. Supports Google-style syntax: quotes for phrases, - to exclude, OR for alternatives.
modeNoSearch mode: 'keyword' for FTS only, 'semantic' for embedding similarity, 'hybrid' for both combined with RRF fusion.
providerNoFilter by provider slug (e.g., 'bls', 'census')
formatNoFilter by data format (e.g., 'csv', 'json')
categoryNoFilter by category tag
statusNoFilter by dataset status. Defaults to 'ready' to show only queryable datasets.
sortNoSort order for results. Options: 'relevance' (FTS ranking), 'recency' (updated_at), 'name' (alphabetical), 'popularity' (stars), 'trending' (time-decayed activity), 'queries' (query count), 'downloads' (download count).
time_rangeNoTime range for period-based metrics (trending, queries, downloads). Options: 'today', 'week', 'month', 'year', 'all_time'. Defaults to 'week' for trending sort, 'all_time' otherwise.
limitNoMaximum number of results to return (1-100)
offsetNoNumber of results to skip for pagination

TDQS

A4/5.0
Behavior4/5

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

Discloses search behavior: uses PostgreSQL FTS, explains search modes (keyword, semantic, hybrid), query syntax, and sort options. With no annotations, the description carries the burden well, though response format is not described.

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?

Well-structured with sections for search modes, query syntax, sort options. Front-loaded with purpose. Minor issue: appears cut off at 'populari…', but otherwise concise for the detail provided.

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?

Covers search behavior and parameter details well, but lacks description of pagination behavior (limit/offset), default status, response format, or authentication requirements. Adequate but with gaps for a 10-param tool with no output schema.

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?

Schema coverage is 100%, but description adds meaning beyond schema by explaining search modes, query syntax, sort options with examples, and default for time_range. Adds value to parameter understanding.

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?

Clearly states it searches datasets using full-text search across names, descriptions, provider names, and column names. Distinguishes from siblings like suggest_datasets_v1_search_suggest_get by specifying full search capabilities.

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?

Provides context about search modes and sort options, but no explicit guidance on when to use this tool over alternatives (e.g., suggest_datasets, list_datasets). Usage is implied but not explicit.

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

sql_query_v1_datasets__provider___dataset__query_postB

POST /v1/datasets/{provider}/{dataset}/query (auth: Bearer OPENDATA_API_KEY) — Execute SQL query against a dataset — Execute a SQL query against a dataset's parquet file.

The query runs in a sandboxed DuckDB environment. Only SELECT statements are allowed. Table references like data or provider/dataset are bound to the dataset's parquet file automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYes
datasetYes
bodyYesRequest body (application/json) for POST /v1/datasets/{provider}/{dataset}/query

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description discloses the sandboxed DuckDB environment and automatic table binding, but omits details on failure handling, rate limits, or result structure. The information is sufficient but not comprehensive.

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 brief and front-loaded with the endpoint, but it contains necessary information. It could be slightly more structured but avoids verbosity.

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 (nested body, multiple parameters, no output schema), the description lacks critical details about return format, error messages, or parameter usage, making it incomplete for an agent to use reliably.

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 low (33%), and the description adds no explanation of parameters like provider, dataset, or the body fields. It only hints at table reference binding, leaving most parameters semantically underspecified.

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 'Execute a SQL query against a dataset's parquet file' and specifies the endpoint, making the tool's purpose unmistakable. It distinguishes itself implicitly from cross-dataset queries by targeting a single dataset.

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 notes that only SELECT statements are allowed, but does not explicitly guide when to use this tool versus siblings like cross_dataset_query_v1_query_post. No when-not or alternative recommendations are provided.

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

submit_request_v1_requests_postA

POST /v1/requests (auth: Bearer OPENDATA_API_KEY) — Submit Request — Submit a new dataset request to the review queue.

Description-first intake: user_description is required (>=20 chars, enforced by the schema). URL fields are optional. When a landing_page_url is provided, we run URL validation + a lightweight metadata scrape so the admin queue can show a page title and scraped meta description. We do NOT auto-discover or ingest — fulfillment is fully manual.

For description-only submissions, we run a quick search to surface a potential dataset match (hint only — the request is still created).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body (application/json) for POST /v1/requests

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavioral traits: required auth, input constraints, URL validation and metadata scrape, no auto-discovery, and the hint mechanism. No contradictions; it covers key behaviors well.

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 concise for the amount of detail, well-structured with short paragraphs. It starts with the endpoint and auth, then explains intake mode and specific behaviors without redundancy.

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

Completeness4/5

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

Despite no output schema, the description covers all major aspects: required inputs, optional fields, side effects (metadata scrape, hint search). It could mention response/error codes, but overall complete for the tool's complexity.

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?

Schema coverage is 100%, but the description adds value by detailing the behavior for URL fields (validation, metadata scrape), the required length of user_description, and the hint search. This goes beyond schema definitions.

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 submits a new dataset request to the review queue, with a specific endpoint and auth method. It also distinguishes from siblings (e.g., approve, reject, fulfill) by focusing on submission and manual fulfillment.

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 implicitly guides usage by explaining the required user_description, optional URL fields, and the hint search for description-only submissions. It does not explicitly list when not to use or alternatives, but the context is clear.

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

suggest_datasets_v1_search_suggest_getA

GET /v1/search/suggest (public) — Suggest Datasets — Get autocomplete suggestions for search typeahead.

Returns dataset names that start with the given prefix, for use in search input autocomplete. Only returns datasets with status='ready'.

Response:

  • suggestions: List of matching datasets with name, slug, provider, and path

  • query: The prefix echoed back

Example: GET /v1/search/suggest?q=con might return suggestions like "Consumer Price Index", "Congressional Budget Data", etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesPrefix to match against dataset names for autocomplete
limitNoMaximum number of suggestions to return (1-10)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses that the endpoint is public, only returns ready datasets, and describes the response format (suggestions with name, slug, etc.). No mention of rate limits or failure modes, but adequate for a simple read operation.

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 concise and well-structured: a single-line summary, then details, response format, and an example. Every sentence adds value without unnecessary repetition.

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

Completeness4/5

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

Given no output schema, the description defines the response structure (suggestions, query). It covers the core behavior and includes an example. Could mention that only 'ready' datasets are returned, which is done. Missing edge cases like empty result set, but acceptable for a simple tool.

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?

Schema coverage is 100%, so baseline is 3. The description adds context by explaining the 'q' parameter as a prefix for autocomplete and giving an example (GET /v1/search/suggest?q=con). It also notes the limit parameter indirectly through the max of 10 in schema, but the description's response section adds value beyond 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 tool's purpose: 'Get autocomplete suggestions for search typeahead.' It specifies the resource (dataset names starting with prefix) and the condition (only 'ready' datasets), distinguishing it from other search tools like search_datasets_v1_search_get.

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 implies usage 'for use in search input autocomplete' but does not explicitly mention when to use this vs alternatives, nor provides when-not-to-use or exclusion criteria.

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

unfollow_user_v1_users__clerk_id__follow_deleteA

DELETE /v1/users/{clerk_id}/follow (auth: Bearer OPENDATA_API_KEY) — Unfollow a user — Unfollow clerk_id. Idempotent — DELETE on a missing edge returns OK.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description discloses the HTTP method (DELETE), authentication requirement (Bearer OPENDATA_API_KEY), idempotency, and behavior on missing edge. Lacks mention of potential errors or rate limits, but adequate for a simple operation.

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 concise: a single line with method, auth, action, and idempotent note. Every word adds value; no redundancy.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description provides all necessary context: what it does, how to call it, and behavioral guarantees.

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

Parameters5/5

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

The only parameter (clerk_id) is explained: 'Unfollow clerk_id.' Schema coverage is 0%, so the description fully compensates by clarifying the parameter's role.

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 'Unfollow a user' and specifies the clerk_id parameter. Among siblings (notably follow_user), it distinctly identifies this as the unfollow operation, with idempotent behavior noted.

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 usage for unfollowing by its name and action, but does not explicitly contrast with the follow tool or provide when-not-to-use scenarios. Still, the context is clear enough.

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

update_operator_notes_v1_requests__request_id__notes_patchA

PATCH /v1/requests/{request_id}/notes (auth: Bearer OPENDATA_API_KEY) — Update Operator Notes — Update admin operator notes on a request. Admin-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
bodyYesRequest body (application/json) for PATCH /v1/requests/{request_id}/notes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the HTTP method (PATCH), auth requirement (Bearer token), and admin scope. However, it does not describe idempotency, effect of setting notes to null, or error responses. Minimal beyond what is inferable.

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 auth info. It is concise and front-loaded with the action. No wasted words. Lacks structured formatting but efficient.

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 2 parameters, no output schema, and minimal schema coverage, the description is somewhat incomplete. It does not explain success behavior, response format, or common errors. Adequate for a simple update but could be more helpful.

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

Parameters3/5

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

Schema description coverage is 50% (body has description). The description adds that body is 'application/json', and the path indicates request_id is a path parameter. But request_id lacks description. The description adds context beyond schema but not enough to fully compensate for the remaining gap.

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 ('Update'), the resource ('Operator Notes on a request'), and includes admin auth context. It differentiates from siblings like add_comment (public notes) and approve_request (status change).

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 specifies 'Admin-only,' which implies usage restriction, but does not provide when to use this tool versus alternatives like add_comment or other request mutations. No explicit when-to-use or when-not-to-use guidance.

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

update_view_v1_user_views__clerk_id___slug__patchA

PATCH /v1/user-views/{clerk_id}/{slug} (auth: Bearer OPENDATA_API_KEY) — Update a user view — Update a view.

For published views, config edits go to draft_config so the published snapshot stays frozen. Slug changes are allowed only on drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes
bodyYesRequest body (application/json) for PATCH /v1/user-views/{clerk_id}/{slug}

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description covers key behavioral traits: config edits go to draft_config for published views, slug changes only on drafts. Auth method is mentioned. It does not elaborate on error handling or return values.

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?

Three sentences with no fluff. Front-loads endpoint, auth, then behavior. Each sentence 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?

No output schema and low schema coverage (33%) mean the description should compensate. It explains some behaviors but not return values, error cases, or full parameter constraints. Adequate but with gaps.

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?

The description adds context beyond the schema: slug changes restricted to drafts, config edits go to draft_config. The schema details the body properties well, but the description gives behavioral rules for parameters, especially config and slug.

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 updates a user view, distinguishing between published and draft behavior with specific rules for config edits and slug changes. This differentiates it from sibling tools like create_view, publish_view, etc.

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 when to use this tool (to update a view) and provides constraints (slug changes only on drafts), but does not explicitly contrast with alternatives or mention 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.

upvote_request_v1_requests__request_id__upvote_putC

PUT /v1/requests/{request_id}/upvote (auth: Bearer OPENDATA_API_KEY) — Upvote Request — Upvote a dataset request to increase its priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It includes auth info but fails to disclose idempotency (PUT may be idempotent), side effects, rate limits, or whether upvoting is additive or toggling. This is insufficient for a write 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 short and to the point, but slightly repetitive ('Upvote Request — Upvote a dataset request'). It front-loades the path and auth, which is good, but could be more concise without losing meaning.

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?

The description is insufficient for a simple write tool. With no output schema and no annotations, it should at least mention whether the operation can fail (e.g., duplicate upvote), what the response looks like, or that a remove_upvote exists. The current text leaves agents guessing.

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?

With 0% schema description coverage, the description should compensate. It mentions 'request_id' in the path but does not explain its meaning, format, or constraints beyond what the schema provides. The parameter is obvious from the path, but no additional context is given.

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 action ('Upvote a dataset request to increase its priority') and includes the HTTP method and path. However, it does not explicitly distinguish from sibling tools like 'approve_request' or 'remove_upvote', leaving some ambiguity about when to use this specific tool.

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 such as 'approve_request', 'reject_request', or 'remove_upvote'. The description does not mention prerequisites, conflicts, or typical scenarios.

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

view_diff_v1_user_views__clerk_id___slug__diff_getB

GET /v1/user-views/{clerk_id}/{slug}/diff (public) — Diff working copy vs the last published version

ParametersJSON Schema
NameRequiredDescriptionDefault
clerk_idYes
slugYes

TDQS

B3.4/5.0
Behavior3/5

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

The description states the operation 'Diff working copy vs the last published version', implying a read-only comparison. However, it does not clarify the output format, pagination, or any side effects. Given no annotations, the description should provide more behavioral context but is minimally adequate.

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, concise and efficient. It includes the HTTP method, endpoint, and visibility. However, it could add parameter descriptions 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?

With two required params, no output schema, and no annotations, the description is insufficient. It does not explain what 'diff' means in practice (e.g., list of changed fields?) or how to interpret the result.

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% and the description does not explain the parameters (clerk_id and slug). While the tool name hints at them, an agent would benefit from knowing their roles (e.g., which user's view and which view slug).

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 tool's function: 'Diff working copy vs the last published version' for a specific resource (user views). This distinguishes it from siblings like get_view (retrieve current view) and publish_view (publish).

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 indicates the tool is public via '(public)' but does not specify when to use it versus other view-related tools. It lacks context on prerequisites (e.g., existence of unpublished changes) 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 99 tool updatesv0.2.0
    • First observedadd_comment_v1_requests__request_id__comments_post
    • First observedapprove_request_v1_requests__request_id__approve_post
    • First observedcheck_slug_availability_v1_users__user_id__views_check_slug_get
    • First observedcompose_download_csv_v1_datasets__provider___dataset__compose_do
    • First observedcompose_preview_v1_datasets__provider___dataset__compose_preview
    • First observedcreate_and_publish_view_v1_user_views_create_and_publish_post
    • First observedcreate_draft_figure_v1_figures_drafts_post
    • First observedcreate_view_v1_user_views_post
    • First observedcross_dataset_query_v1_query_post
    • First observeddelete_comment_v1_requests__request_id__comments__event_id__dele
    • First observeddelete_view_v1_user_views__clerk_id___slug__delete
    • First observeddiscover_datasets_v1_discover_get
    • First observededit_comment_v1_requests__request_id__comments__event_id__patch
    • First observedexport_dataset_as_yaml_v1_datasets__provider___dataset__export_g
    • First observedfollow_user_v1_users__clerk_id__follow_put
    • First observedfulfill_request_v1_requests__request_id__fulfill_post
    • First observedget_activation_v1_me_activation_get
    • First observedget_bridges_v1_graph_bridges_get
    • First observedget_category_detail_v1_categories__slug__get
    • First observedget_communities_v1_graph_communities_get
    • First observedget_community_datasets_v1_graph_communities__community_id__datas
    • First observedget_dataset_activity_v1_datasets__provider___dataset__activity_g
    • First observedget_dataset_by_path_v1_datasets__provider___dataset__get
    • First observedget_dataset_column_detail_v1_datasets__provider___dataset__colum
    • First observedget_dataset_columns_v1_datasets__provider___dataset__columns_get
    • First observedget_dataset_meta_v1_datasets__provider___dataset__meta_get
    • First observedget_dataset_sources_v1_datasets__provider___dataset__sources_get
    • First observedget_dataset_stats_v1_graph_datasets__provider___dataset__stats_g
    • First observedget_dataset_view_v1_datasets__provider___dataset__views__name__g
    • First observedget_entity_datasets_v1_graph_entities__entity_type___entity_id__
    • First observedget_feed_v1_me_feed_get
    • First observedget_feed_v1_users_me_feed_get
    • First observedget_figure_v1_figures__figure_id__get
    • First observedget_follow_status_v1_users__clerk_id__follow_status_get
    • First observedget_health_v1_graph_health_get
    • First observedget_join_paths_v1_graph_datasets__provider___dataset__join_paths
    • First observedget_neighbors_v1_graph_datasets__provider___dataset__neighbors_g
    • First observedget_platform_stats_v1_stats_get
    • First observedget_provider_datasets_metadata_v1_providers__provider__datasets_
    • First observedget_provider_enriched_v1_providers__provider__enriched_get
    • First observedget_provider_stats_v1_providers__provider__stats_get
    • First observedget_provider_v1_providers__provider__get
    • First observedget_recommendations_v1_me_recommendations__kind__get
    • First observedget_related_datasets_v1_datasets__provider___dataset__related_ge
    • First observedget_related_providers_v1_providers__provider__related_get
    • First observedget_related_v1_graph_datasets__provider___dataset__related_get
    • First observedget_request_admin_detail_v1_requests__request_id__admin_get
    • First observedget_request_detail_v1_requests__request_id__get
    • First observedget_schema_graph_v1_graph_datasets__provider___dataset__schema_g
    • First observedget_subdataset_by_path_v1_datasets__provider___dataset___subdata
    • First observedget_subdataset_meta_v1_datasets__provider___dataset___subdataset
    • First observedget_subgraph_v1_graph_subgraph_get
    • First observedget_top_callers_v1_views___username___slug__top_callers_get
    • First observedget_user_activity_v1_users__clerk_id__social_activity_get
    • First observedget_user_activity_v1_users__user_id__activity_get
    • First observedget_user_by_query_v1_users_get
    • First observedget_user_profile_v1_users__user_id__get
    • First observedget_versioned_view_meta_v1_views___username___slug_with_version_
    • First observedget_versioned_view_v1_views___username___slug_with_version__get
    • First observedget_view_v1_user_views__clerk_id___slug__get
    • First observedget_view_v1_views__name__get
    • First observedlist_all_categories_v1_categories_get
    • First observedlist_changelog_v1_changelog_get
    • First observedlist_dataset_views_v1_datasets__provider___dataset__views_get
    • First observedlist_datasets_v1_datasets_get
    • First observedlist_directory_v1_directories_get
    • First observedlist_figures_v1_figures_get
    • First observedlist_followers_v1_users__clerk_id__followers_get
    • First observedlist_following_v1_users__clerk_id__following_get
    • First observedlist_joinable_v1_datasets__provider___dataset__joinable_get
    • First observedlist_provider_datasets_v1_datasets__provider__get
    • First observedlist_providers_v1_providers_get
    • First observedlist_published_views_by_username_v1_users___username__views_get
    • First observedlist_request_events_v1_requests__request_id__events_get
    • First observedlist_requests_v1_requests_get
    • First observedlist_user_collections_v1_users__user_id__collections_get
    • First observedlist_user_datasets_v1_users__user_id__datasets_get
    • First observedlist_user_figures_v1_users__user_id__figures_get
    • First observedlist_user_liked_figures_v1_users__user_id__likes_figures_get
    • First observedlist_user_starred_datasets_v1_users__user_id__stars_datasets_get
    • First observedlist_user_starred_views_v1_users__user_id__stars_views_get
    • First observedlist_user_views_v1_users__user_id__views_get
    • First observedlist_versions_v1_views___username___slug__versions_get
    • First observedlist_view_versions_v1_user_views__clerk_id___slug__versions_get
    • First observedlist_views_v1_views_get
    • First observedmark_in_progress_v1_requests__request_id__in_progress_post
    • First observedpublish_view_v1_user_views__clerk_id___slug__publish_post
    • First observedreject_request_v1_requests__request_id__reject_post
    • First observedremove_upvote_v1_requests__request_id__upvote_delete
    • First observedrequest_enrichment_v1_enrichment_request__provider___dataset__po
    • First observedsearch_datasets_v1_search_get
    • First observedsql_query_v1_datasets__provider___dataset__query_post
    • First observedsubmit_request_v1_requests_post
    • First observedsuggest_datasets_v1_search_suggest_get
    • First observedunfollow_user_v1_users__clerk_id__follow_delete
    • First observedupdate_operator_notes_v1_requests__request_id__notes_patch
    • First observedupdate_view_v1_user_views__clerk_id___slug__patch
    • First observedupvote_request_v1_requests__request_id__upvote_put
    • First observedview_diff_v1_user_views__clerk_id___slug__diff_get

TDQS

C2.9/5.0
Disambiguation3/5

Many tools have distinct purposes, but there are several overlapping pairs (e.g., multiple get_user_activity, get_feed, get_related, list_versions vs list_view_versions). Descriptions help differentiate, but the sheer number of tools increases ambiguity.

Naming Consistency2/5

Tool names are highly inconsistent: some are long path-based (e.g., add_comment_v1_requests__request_id__comments_post), others are short (e.g., discover_datasets). Mix of full paths, HTTP verbs, and typical function names with no clear pattern.

Tool Count1/5

99 tools is far too many for an MCP server. The server wraps a large API, but for agent use, this overwhelms selection. Typical servers have 5-20 tools; this is extreme.

Completeness3/5

The tool set covers many areas (datasets, views, figures, requests, graph, enrichment, providers, users), but there are notable gaps (e.g., no create/delete dataset) and redundancy. It's comprehensive but not well-curated.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Skeego/opendata-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server