Skip to main content
Glama

@stronger-ecommerce/gadget-mcp

Универсальный MCP-сервер с правами только на чтение для любого приложения Gadget. Запрашивайте любую модель через интроспекцию GraphQL — создание клиента не требуется.

Создано Stronger eCommerce.


Быстрая настройка (рекомендуется)

Запустите интерактивный мастер настройки из директории вашего проекта Gadget. Он автоматически определяет слаг вашего приложения из .gadget/sync.json и записывает конфигурацию.

npx @stronger-ecommerce/gadget-mcp setup

Мастер выполнит следующие действия:

  1. Определит слаг вашего приложения из .gadget/sync.json (если он есть)

  2. Запросит ваш API-ключ и окружение

  3. Выведет готовую команду claude mcp add для Claude Code

  4. Автоматически запишет ваш ~/.cursor/mcp.json для Cursor


Related MCP server: mcp-graphql-bridge

Ручная настройка

1. Получите API-ключ для продакшена

Перейдите по адресу https://<your-app>.gadget.app/edit/settings/api-keys и создайте ключ с доступом на чтение.

2. Регистрация в Claude Code

claude mcp add my-app-gadget \
  -e GADGET_APP=my-app \
  -e GADGET_API_KEY=your_key_here \
  -- npx @stronger-ecommerce/gadget-mcp

Регистрируйте несколько приложений под разными именами:

claude mcp add app-one-gadget \
  -e GADGET_APP=my-first-app \
  -e GADGET_API_KEY=key1 \
  -- npx @stronger-ecommerce/gadget-mcp

claude mcp add app-two-gadget \
  -e GADGET_APP=my-second-app \
  -e GADGET_API_KEY=key2 \
  -- npx @stronger-ecommerce/gadget-mcp

3. Регистрация в Cursor

Добавьте в ~/.cursor/mcp.json:

{
  "mcpServers": {
    "app-one-gadget": {
      "command": "npx",
      "args": ["@stronger-ecommerce/gadget-mcp"],
      "env": {
        "GADGET_APP": "my-first-app",
        "GADGET_API_KEY": "key1"
      }
    },
    "app-two-gadget": {
      "command": "npx",
      "args": ["@stronger-ecommerce/gadget-mcp"],
      "env": {
        "GADGET_APP": "my-second-app",
        "GADGET_API_KEY": "key2"
      }
    }
  }
}

Переменные окружения

Переменная

Обязательно

По умолчанию

Описание

GADGET_APP

Да

—

Слаг приложения, например my-app

GADGET_API_KEY

Да

—

API-ключ для продакшена

GADGET_ENVIRONMENT

Нет

production

production или development


Инструменты

Инструмент

Описание

list_models

Список всех моделей, доступных в приложении

introspect_model

Показать поля и типы для модели

query_records

Запрос к любой модели с фильтрами и выбором полей

get_record

Получить одну запись по ID

run_graphql

Выполнить произвольный GraphQL-запрос (мутации заблокированы)


Пример использования

После подключения спросите Claude:

  • "List the models in my Gadget app"

  • "Show me the fields on the shopifyOrder model"

  • "Find orders where email is customer@example.com"

  • "Get all records with errors"


Будущие функции

Идеи и заметки об исследованиях (включая логи / интеграцию ggt для агентов) находятся в FUTURE_FEATURES.md.


Участие в разработке

Сообщения об ошибках и пулл-реквесты приветствуются!

  • Нашли ошибку? Откройте issue

  • Есть исправление или новая функция? Сделайте форк репозитория, внесите изменения и откройте PR в ветку main

  • Для значительных изменений сначала откройте issue, чтобы мы могли согласовать подход

Локальный запуск

git clone https://github.com/Stronger-eCommerce/gadget-mcp
cd gadget-mcp
npm install
npm run build
npm test

О проекте

Сделано с ♥ компанией Stronger eCommerce — разработка на Shopify и eCommerce-операции.

Available Tools

13 tools
count_recordsA

Return the total number of records for a Gadget model, with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel name in singular camelCase, e.g. shopifyOrder, label
filterNoOptional filter to count only matching records. Use introspect_filters to discover valid filter shapes.

TDQS

A3.5/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 states it returns a count; does not disclose return format (e.g., integer), side effects, permissions, or limitations like maximum count.

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 that is front-loaded and to the point. No wasted 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?

Lacks output schema and annotations; does not clarify return format or possible constraints. Adequate for a simple count but could be more complete.

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 both parameters with descriptions (100% coverage). Description adds cross-reference to introspect_filters for filter shape, which is helpful 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?

Describes exactly what the tool does: returns total number of records for a model, with optional filtering. Clearly distinct from sibling tools like get_record (single record) or query_records (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?

No explicit guidance on when to use this tool versus alternatives (e.g., query_records for full records, get_record for single record). Agent must infer usage from description alone.

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

export_recordsA

Export many records (beyond query_records' 50) to a CSV or JSON file on this machine for analysis or sharing. Pages through automatically. Returns the file path, row count, columns and a short preview. Redaction settings apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort value, e.g. [{ createdAt: { sortOrder: "Descending" } }]
modelYesModel name in singular camelCase, e.g. shopifyOrder
fieldsNoField selection (default: all scalar fields). Nested fields become dot-named CSV columns, e.g. "* customer { email }" → customer.email
filterNoFilter value — use introspect_filters for valid shapes
formatNoFile format (default csv)
filenameNoOptional file name (no directories); saved in the export folder (GADGET_EXPORT_DIR or ~/gadget-mcp-exports)
max_recordsNoMaximum records to export (default 10000, max 100000)

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 carries the full disclosure burden and does substantial work: it reveals the side effect (writes a file to the local filesystem), that pagination is handled automatically, that redaction settings affect output, and what the result contains (path, row count, columns, preview). It omits permission requirements and overwrite/error behavior, so it is strong but not complete.

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?

Four tight sentences with the primary purpose and the sibling comparison front-loaded, then behavior, then return shape. Nothing is redundant, though 'Redaction settings apply.' is terse to the point of being slightly cryptic about what is being redacted.

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 7-parameter bulk-export tool with no output schema and no annotations, the description covers purpose, pagination, side effects and return contents, which is most of what an agent needs. Remaining gaps, such as overwrite behavior and auth requirements, are secondary but not trivial for a tool that writes files.

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 the schema already documents model, fields, filter, format, filename, max_records and sort with examples. The description adds no parameter-level detail beyond the format options (already an enum) and a vague note that redaction settings apply. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb (export) and resource (records) plus the output form (CSV/JSON file on this machine), which is concrete and actionable. It also differentiates itself from the sibling query_records by citing the 50-record threshold, so an agent can route between them without opening a schema.

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?

Gives clear use context (bulk export for analysis or sharing) and explicitly names the alternative, query_records, with the condition that selects this tool (result sets beyond 50). It does not state any explicit when-not-to-use case (e.g. single-record lookups belong in get_record), so it falls just short of the top band.

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

get_recordC

Get a single Gadget record by ID. Specify the model name, record ID, and fields to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecord ID
modelYesModel name in camelCase, e.g. shopifyOrder, label
fieldsNoGraphQL field selection. Omit or use "*" for every scalar field; mix with relations like "* lineItems { edges { node { title } } }".

TDQS

C2.9/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 behavioral burden. 'Get' implies a read, but nothing is said about permissions/auth requirements, error behavior for a missing or invalid ID, or whether the returned shape depends on the fields selection. This is thin for an unannotated tool.

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 short sentences with the purpose front-loaded and no filler. The second sentence is largely redundant with the schema, which keeps it just short of a 5.

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 3-parameter read tool with full schema coverage and no output schema, the description is minimally adequate. It omits error/not-found behavior and any hint that the fields selection governs the response shape, which would matter for an agent calling it cold.

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 the baseline is 3; the schema already documents 'model' (camelCase example) and 'fields' (GraphQL selection syntax) thoroughly. The description only restates that these three inputs exist and adds no syntax or format detail beyond 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 a specific verb and resource with scope ('Get a single Gadget record by ID'), which clearly separates it from list-style siblings. However, it never names or contrasts with the obvious alternatives (query_records, run_graphql), so the agent must infer the boundary itself.

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 second sentence ('Specify the model name, record ID, and fields to return') is a restatement of the input parameters, not usage guidance. There is no statement of when to prefer this over query_records or run_graphql, nor any prerequisite or exclusion.

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

get_schema_overviewA

Return all models with their fields and types in a single call. Use this for a broad understanding of the app schema before diving into specific models.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations, but description transparently reveals the tool's output (all models with fields/types) and scope (single call). A simple read operation, well explained.

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, front-loaded with purpose followed by usage guidance. No extraneous 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?

For a zero-parameter tool returning schema overview, description fully covers purpose and usage. No missing details.

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

Parameters4/5

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

No parameters exist, so description adds no param info. Baseline 4 per guidelines for zero-param tools.

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 'Return all models with their fields and types in a single call', specifying verb, resource, and scope. It distinguishes from siblings like 'introspect_model' (specific model) and 'list_models' (names only).

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?

Text advises using this for 'broad understanding before diving into specific models', providing context and implying alternatives. Explicit when-not or named alternatives would push to 5.

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

group_countA

Count records grouped by a field's value, e.g. orders by financialStatus or products by vendor. Exact for enum and boolean fields; other fields are counted by scanning (up to max_records) and say whether the result is exact.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoFor non-enum fields: how many groups to return, largest first (default 50)
fieldYesScalar or enum field to group by, e.g. financialStatus
modelYesModel name in singular camelCase, e.g. shopifyOrder
filterNoOptional filter applied before grouping
max_recordsNoFor non-enum fields: records to scan (default 10000, max 20000)

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 carries the full burden and does disclose a genuinely non-obvious behavioral trait: accuracy is field-type dependent, non-enum fields are computed by scanning up to max_records, and the result self-reports whether it is exact. It still omits permissions, cost/latency implications of scanning, and truncation behavior, but the key semantic caveat is surfaced.

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, front-loaded with purpose followed by the accuracy caveat; no filler. Dense but efficient, and each clause carries information the schema does not.

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 5-parameter read tool with no output schema and no annotations, the description covers the essential correctness caveat (exact vs. scanned) and ties it to the scan limit. It is not fully complete, since the shape of the returned grouped counts and behavior under filters are unstated, but nothing critical to calling it correctly is missing.

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 the baseline is 3, but the description adds real meaning by linking max_records to the non-enum scanning path and framing field as an enum/boolean vs. scalar distinction. It also implies top is only relevant for non-enum fields, consistent with the schema notes.

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 a specific verb (count), resource (records), and a precise grouping semantic ('grouped by a field's value') with concrete examples (orders by financialStatus, products by vendor). It does not, however, distinguish itself from the sibling count_records, leaving the agent to infer the boundary.

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 through the exactness note: enum/boolean fields are exact, other fields are scan-based, which tells the agent which field types to prefer. But there is no explicit when-to-use guidance and no mention of count_records as the alternative for ungrouped totals, so tool selection against the closest sibling is left to inference.

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

introspect_actionsA

List all actions (mutations) available in this Gadget app, including their arguments. Use this to find action names and argument shapes for run_action, create_record, and update_record.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 implies a safe, read-only listing and discloses that arguments are included, but says nothing about auth requirements, rate limits, or whether results are paginated/complete. Adequate but thin for a tool with zero annotation coverage.

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

Conciseness5/5

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

Two sentences, zero waste. The purpose is front-loaded and the consumer tools are named second, so the agent gets the what before the why.

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?

There is no output schema, so the description must convey return content; 'including their arguments' tells the agent it will get action names plus argument shapes, which is the key information for a discovery tool. It does not describe the response structure in any detail, leaving a modest gap.

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 tool takes no input parameters and the schema is a bare empty object, so the baseline is 4. There is no input semantics to clarify; the description's param-adjacent statement about returned arguments belongs to output, not input.

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?

States a specific verb+resource ('List all actions (mutations) available in this Gadget app') and adds the scope 'including their arguments', which separates it from model-listing siblings like list_models and introspect_model. It never names those siblings directly, so differentiation is implied rather than explicit, which keeps it just short of a 5.

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?

Gives clear usage context: 'Use this to find action names and argument shapes for run_action, create_record, and update_record.' It routes the agent toward the write tools that consume this output. It does not state when NOT to use it (e.g., versus introspect_model for field discovery), so it stops at 4.

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

introspect_filtersA

Show all available filter fields and their types for a Gadget model. Use this to construct valid filter arguments for query_records and count_records.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel name in singular camelCase, e.g. shopifyOrder, label

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 accurately describes a read-only introspection tool without side effects, but could be improved by noting any authentication requirements or potential performance impact.

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 filler. Every sentence provides essential information: what it does and how to use it.

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 simple single-parameter input and no output schema, the description adequately covers purpose and usage. It could briefly mention what the output contains (e.g., list of fields with types), but it's still sufficient for an introspection 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 100%, so baseline is 3. The description does not add extra meaning beyond the schema's 'Model name in singular camelCase' example; it simply restates the parameter 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 the tool shows all available filter fields and their types for a Gadget model, using specific verb 'show' and resource. It distinguishes from siblings like query_records and count_records by explicitly linking to filter argument construction.

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 states to use this tool for constructing valid filter arguments for query_records and count_records, providing clear context. However, it does not mention when not to use it or alternatives like introspect_model.

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

introspect_modelA

List all fields and their types for a Gadget model. Run this first when you're unsure what fields exist on a model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel name in camelCase, e.g. shopifyOrder, label, shopifyShop

TDQS

A3.8/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 states listing action with no disclosure of read-only nature, error handling, or performance implications. 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose and usage. No redundant or missing words. Highly efficient.

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?

Simple tool with one parameter and no output schema. Description covers purpose and usage. Could mention return format but not essential. Adequate for the context.

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 clear parameter description. The tool description adds little beyond stating 'for a Gadget model', which is already implicit. 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?

Clearly states 'List all fields and their types for a Gadget model' with a specific verb and resource. Distinct from sibling tools like list_models, introspect_actions, 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?

Explicitly recommends running this tool 'first when you're unsure what fields exist on a model.' Provides a usage context but does not name alternatives or exclusions explicitly.

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

list_modelsA

List all models (types) available in this Gadget app via GraphQL introspection.

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?

The description discloses the method (GraphQL introspection) and implies a read-only operation. With no annotations, it provides sufficient behavioral context for a simple 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?

A single, well-structured sentence that is front-loaded and contains no unnecessary information.

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 zero-parameter tool with no output schema, the description is complete. It explains the purpose and method, and there is no missing context given the tool's simplicity.

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

Parameters4/5

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

No parameters, so baseline is 4. The description does not need to add parameter meaning, and schema coverage is 100% (none).

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 models (types) via GraphQL introspection. It uses a specific verb and resource, distinguishing it from sibling tools like introspect_model which focus on a single model.

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. Usage is implied from the description, but exclusions or comparisons to siblings like introspect_actions are not provided.

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

query_recordsA

Query records from any Gadget model. Supports filtering, sorting, pagination cursors, and field selection (all scalar fields by default). Use introspect_filters to see valid filter shapes.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort value — array of sort objects, e.g. [{ createdAt: { sortOrder: "Descending" } }]
afterNoPagination cursor — pass the endCursor from a previous response to fetch the next page
limitNoMax records to return (default 10, max 50)
modelYesModel name in singular camelCase, e.g. shopifyOrder, label
fieldsNoGraphQL field selection, e.g. "id name email createdAt". Omit or use "*" for every scalar field; mix with relations like "* customer { email }".
filterNoFilter value — use introspect_filters to discover valid filter fields and shapes.

TDQS

A3.5/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 behavioral burden. It discloses two useful defaults (all scalar fields returned when fields is omitted, cursor-based pagination) but says nothing about read-only safety, authorization requirements, result shape, 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?

Two sentences, no filler, and the capability scope is front-loaded before the cross-tool pointer. Every clause 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?

Adequate for a read/query tool: capabilities, default field behavior, and the filter-discovery path are all covered, and the schema is fully documented. But with no output schema and no annotations, the description could have said more about the returned result shape and when not to use this 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 the schema already documents every parameter with examples (sort object shape, endCursor usage, limit default/max, GraphQL field selection syntax). The description only restates the capability list and adds the introspect_filters pointer, so baseline 3 applies.

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?

States a specific verb and resource ("Query records from any Gadget model") and enumerates the supported capabilities: filtering, sorting, pagination cursors, field selection. It does not differentiate itself from siblings like get_record, count_records, or run_graphql, so the agent must infer scope from names alone.

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?

One explicit routing hint is given — "Use introspect_filters to see valid filter shapes" — which is genuinely useful. However, there is no guidance on when to prefer this over get_record (single record), count_records, export_records, or run_graphql, so usage is only partially implied.

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

read_logsA

Read recent logs from the Gadget app (via the ggt CLI) to debug errors, failed actions or webhooks. Defaults to the last 15 minutes at info level. Needs a one-time npx ggt login on this machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoMinimum level (default info); use "error" to find failures
limitNoMax log lines to return, newest last (default 100, max 500)
sinceNoHow far back: "15m", "2h", "1d", or an ISO timestamp (default 15m)
searchNoOnly return log lines containing this text (case-insensitive), e.g. a record ID or action name
my_logsNoOnly logs from the app's own code, hiding platform logs

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does meaningful work: it discloses the CLI dependency, a mandatory one-time `npx ggt login` precondition on the machine, and the default window/level. It does not describe output shape, truncation, or failure modes, but the auth prerequisite and defaults are the operationally important facts an agent needs.

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

Conciseness5/5

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

Two sentences, front-loaded with what the tool does and its scope, followed by the operational prerequisite. No filler; every clause carries 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 parameterless-to-invoke read tool with full schema coverage and a stated auth precondition, the description covers what an agent needs to decide and execute. The one gap is that no output schema exists, so a hint about the returned line format would have added value.

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% and every parameter already has an enum or a detailed description with units/defaults/max ('default 100, max 500', '"15m", "2h", "1d", or an ISO timestamp'). The description only restates the level and window defaults, adding no syntax or semantics beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Read recent logs from the Gadget app'), names the underlying mechanism ('via the ggt CLI'), and gives the intent ('to debug errors, failed actions or webhooks'). This distinguishes it clearly from the record/model/GraphQL siblings in the toolset.

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 supplies a clear context of use (debugging errors, failed actions, webhooks) and the schema reinforces it with 'use "error" to find failures'. It stops short of naming when-not-to-use this tool or pointing to an alternative sibling, so it is clear context rather than explicit routing.

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

report_bugA

Create a pre-filled GitHub bug report link for this MCP server (gadget-mcp itself, not the user's Gadget app). Use when a gadget-mcp tool misbehaves or the user asks to report a bug. Returns a link for the user to review and submit — nothing is posted automatically. Do not include API keys or customer data.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNoSteps to reproduce, including the tool called and its arguments
titleYesShort summary, e.g. "count_records fails with sort on shopifyOrder"
expectedNoWhat should have happened
error_outputNoExact error text or tool output
what_happenedYesWhat went wrong

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 and does well: it discloses the key side-effect fact that 'nothing is posted automatically' and the returned artifact is a link for user review, plus a data-safety caution about API keys and customer data. It does not cover auth/permission requirements, keeping it just short of a 5.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then usage, then the behavioral caveats. Every sentence earns its place and there is no repetition of schema content.

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 link-generating tool with no output schema, the description covers the essential facts an agent needs: what it produces, that submission is not automatic, and how to use it. Nothing material is missing given full schema coverage.

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 all five parameters (title, what_happened, steps, expected, error_output) are already documented in the schema. The description adds no further parameter guidance, so the baseline 3 applies.

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?

States a specific verb and resource ('Create a pre-filled GitHub bug report link') and scopes it to gadget-mcp itself rather than the user's Gadget app. This clearly separates it from every sibling, which are all data/query tools.

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?

Gives explicit trigger conditions: 'Use when a gadget-mcp tool misbehaves or the user asks to report a bug.' It also pre-empts a likely mis-use by clarifying that it is not for the user's own Gadget app, leaving nothing to inference.

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

run_graphqlA

Run an arbitrary read-only GraphQL query against the Gadget app. Use this for complex queries with nested relations or custom filtering that query_records can't express.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesGraphQL query string
variablesNoGraphQL variables

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It clearly declares read-only behavior. While it doesn't detail error handling or rate limits, the key behavioral trait (read-only) is explicitly 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 concise sentences: first defines purpose, second provides usage guidance. No redundant or extraneous 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 no annotations, the description adequately covers purpose, usage, and parameter context. It doesn't detail return format, but GraphQL responses are self-explanatory. Slight gap: no mention of authentication or scope.

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 descriptions. The description adds context beyond schema by explaining the tool is for complex, nested, or custom-filtering queries, which guides parameter use.

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 executes a read-only GraphQL query against the Gadget app. It distinguishes from sibling tool query_records by noting it handles 'complex queries with nested relations or custom filtering that query_records can't express.'

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?

Explicit usage guidance: 'Use this for complex queries...' implies when not to use (simpler queries should use query_records). The description also clarifies it is read-only.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.4.0
    • Addedexport_records
    • Changedget_record2 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"GraphQL field selection, e.g. \"id name email createdAt\""New value: +"GraphQL field selection. Omit or use \"*\" for every scalar field; mix with relations like \"* lineItems { edges { node { title } } }\"."
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "id",
        -  "fields"
        -]New value: +[
        +  "model",
        +  "id"
        +]
    • Addedgroup_count
    • Changedquery_records2 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"GraphQL field selection, e.g. \"id name email createdAt\""New value: +"GraphQL field selection, e.g. \"id name email createdAt\". Omit or use \"*\" for every scalar field; mix with relations like \"* customer { email }\"."
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "fields"
        -]New value: +[
        +  "model"
        +]
    • Addedread_logs
    • Addedreport_bug
  2. 5 tool updatesv1.0.1
    • Addedcount_records
    • Addedget_schema_overview
    • Addedintrospect_actions
    • Addedintrospect_filters
    • Changedquery_records5 fields changed
      • addedInput schema / properties / after
        Added value: +{
        +  "description": "Pagination cursor — pass the endCursor from a previous response to fetch the next page",
        +  "type": "string"
        +}
      • changedInput schema / properties / filter / description
        Previous value: -"Gadget filter object, e.g. { \"name\": { \"equals\": \"#59389\" } }"New value: +"Filter value — use introspect_filters to discover valid filter fields and shapes."
      • removedInput schema / properties / filter / type
        Removed value: -"object"
      • changedInput schema / properties / model / description
        Previous value: -"Model name in camelCase, e.g. shopifyOrder, label"New value: +"Model name in singular camelCase, e.g. shopifyOrder, label"
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Sort value — array of sort objects, e.g. [{ createdAt: { sortOrder: \"Descending\" } }]"
        +}
  3. 5 tool updatesv1.0.6
    • First observedget_record
    • First observedintrospect_model
    • First observedlist_models
    • First observedquery_records
    • First observedrun_graphql

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation4/5

Most tools target distinct operations (query_records vs run_graphql vs export_records vs group_count are clearly differentiated), but there is a cluster of five overlapping introspection tools (list_models, get_schema_overview, introspect_model, introspect_filters, introspect_actions) where get_schema_overview largely subsumes list_models and introspect_model. Descriptions do clarify the layering, so misselection is possible but avoidable.

Naming Consistency5/5

Every tool follows a clean snake_case verb_noun pattern (count_records, introspect_model, list_models, get_record, run_graphql, query_records, export_records, group_count, read_logs, report_bug). No camelCase or style mixing; conventions are fully predictable.

Tool Count5/5

13 tools is well-scoped for a data-access/introspection server, and each tool covers a distinct capability (query, count, group, export, schema introspection, logs, bug reporting). Nothing feels redundant or padded.

Completeness3/5

The surface covers read, count, group, export, and introspection well, but the introspect_actions description explicitly points users toward run_action, create_record, and update_record — none of which exist in the tool set — creating a dead end for mutations. There is also no delete operation, so the lifecycle is notably incomplete for the referenced domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

  • The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.

  • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

  • Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    GraphQL MCP Server that acts as a bridge allowing MCP clients (like Cursor or Claude Desktop) to interact with target GraphQL APIs through standard tools for schema introspection and operation execution.
    2
    6 npm
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A generic MCP (Model Context Protocol) server that bridges any GraphQL API to Claude Code. It introspects your GraphQL schema and exposes each query and mutation as an individual tool, letting Claude interact with your API directly.
    2
    9 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that provides AI coding tools with database schema structure (tables, columns, keys, relationships) without exposing row data.
    3
    26 PyPI
    Apache 2.0