Skip to main content
Glama
gatefareio

gatefareio/mcp-server

Official
by gatefareio

@gatefare/mcp

npm version npm downloads bundle size License: MIT CI MCP Registry Base

为你的 AI 智能体配备钱包和市场。

@gatefare/mcp 是一个模型上下文协议 (MCP) 服务器,它将 Claude Desktop、Cursor 或任何兼容 MCP 的智能体连接到 Gatefare 付费 HTTP API 目录。支付通过开放的 x402 标准在 Base 上以 USDC 进行结算 — 无需 SaaS 密钥、无需订阅、无需托管。非托管:签名在本地完成;私钥永远不会离开你的机器。

Demo: install, list tools, real call against gatefare.io

┌─────────────┐                ┌──────────────┐                ┌─────────────────┐
│ Claude /    │   MCP stdio    │ @gatefare/mcp│  HTTP + x402   │ gatefare.io     │
│ Cursor /    │ ─────────────► │   (this repo)│ ─────────────► │ proxy +         │
│ your agent  │                │              │                │ catalog         │
└─────────────┘                └──────┬───────┘                └─────────────────┘
                                      │
                                      │ EIP-3009 sign
                                      ▼
                                ┌─────────────┐
                                │  Base USDC  │
                                └─────────────┘

快速开始

1. 放入你的客户端

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"]
    }
  }
}

Cursor — ~/.cursor/mcp.json 或项目级别的 .cursor/mcp.json:

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"]
    }
  }
}

重启客户端。智能体现在拥有 5 个只读工具 — 用于发现和安全。尝试:

“在 Gatefare 中搜索天气 API。”

2. 添加钱包以进行付费调用

在相同的配置中添加 env:

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"],
      "env": {
        "WALLET_PRIVATE_KEY": "0xYOUR_KEY",
        "WALLET_BUDGET_USD": "5.00"
      }
    }
  }
}

买家工具(call_api、get_wallet_balance、estimate_cost)将变为可用。WALLET_BUDGET_USD 上限是一个运行时安全网 — 若要设置硬上限,请仅向钱包充入你愿意花费的金额。

“伦敦现在天气如何?花费不超过 $0.001。”

3. (可选) 发布你自己的 API

在 gatefare.io/dashboard/tokens 获取 PAT 并添加:

"env": {
  "GATEFARE_PAT": "gfpat_..."
}

发布者工具(register_api、list_my_apis、update_api、get_revenue、distribute)将会出现。

“发布我的 API 到 https://api.example.com/sentiment,价格为每次调用 $0.001。”

Related MCP server: oom-x402-mcp

工具

涵盖 4 个领域的 13 个工具。工具会根据设置的环境变量自动注册 — 智能体永远不会看到它无法使用的工具。

发现 — 始终可用

工具

描述

gatefare.search_apis

使用过滤器(价格、类别、排序)对目录进行全文搜索

gatefare.get_api

通过 slug 或 handle/urlName 获取单个 API 的详细信息

gatefare.list_categories

包含 API 数量的所有类别

gatefare.suggest

查询字符串的自动补全建议

买家 — 需要 WALLET_PRIVATE_KEY

工具

描述

gatefare.call_api

进行付费调用。自动处理 402 → 签名 → 重试流程

gatefare.get_wallet_balance

Base 上的 USDC + ETH,以及剩余的运行时预算

gatefare.estimate_cost

预估 N 次计划调用的总成本

发布者 — 需要 GATEFARE_PAT

工具

描述

gatefare.register_api

发布一个新的付费 API

gatefare.list_my_apis

你已发布的 API 及其统计数据

gatefare.update_api

编辑元数据、价格、目标 URL

gatefare.get_revenue

收入时间序列 + 总计

gatefare.distribute

触发链上 distribute() 支付(破坏性操作)

安全 — 始终可用

工具

描述

gatefare.report_abuse

举报恶意/被盗 API(DMCA、欺诈、恶意软件等)

配置

变量

默认值

所需条件

GATEFARE_BASE_URL

https://gatefare.io

— (自托管时覆盖)

WALLET_PRIVATE_KEY

—

任何买家工具

WALLET_BUDGET_USD

无限制

可选支出上限

WALLET_NETWORK

eip155:8453

Sepolia 测试网使用 eip155:84532

GATEFARE_PAT

—

任何发布者工具

LOG_LEVEL

info

详细 stderr 使用 debug

示例

一次性完成发现与购买 (Claude Desktop)

你: 帮我找一个低于 $0.001 的天气 API 并调用它查询“东京”。

Claude: 正在调用 gatefare.search_apis,参数 max_price: 0.001… 找到 @alice 提供的 demo-weather,价格为 $0.001/次调用。 正在调用 gatefare.call_api,参数 slug: "demo-weather", query: {city: "Tokyo"}… 东京目前 22°C,多云。已支付 0.001 USDC。收据:settled-tx-0x9a…

编程方式 — Python 智能体

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

server = StdioServerParameters(
    command="npx",
    args=["-y", "@gatefare/mcp"],
    env={"WALLET_PRIVATE_KEY": "0x...", "WALLET_BUDGET_USD": "1.00"},
)

async with stdio_client(server) as (r, w):
    async with ClientSession(r, w) as s:
        await s.initialize()
        result = await s.call_tool(
            "gatefare.call_api",
            arguments={"slug": "demo-weather", "query": {"city": "Tokyo"}},
        )
        print(result.content[0].text)

查看 examples/ 获取可运行的变体:Claude Desktop、Cursor、Python、TypeScript 以及纯发现演练。

不构建 AI 智能体?选择正确的工具

如果你想从后端为 x402 API 付费(无智能体),请使用 Coinbase 官方的 x402 SDK — x402-python (PyPI)、coinbase/x402/go、…/java 或 @x402/fetch。它们处理支付流程;你不需要这个 MCP 服务器。

如果你想从任何语言浏览 Gatefare 目录,请直接访问 REST API:gatefare.io/api/catalog (OpenAPI 3.1 规范)。

关于哪个工具适合哪种用例的完整细分,请参阅 docs/integrations.md。

直接 CLI (用于调试)

# Run the server in foreground; talks JSON-RPC over stdio.
npx -y @gatefare/mcp

# In another terminal, send a frame:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
  npx -y @gatefare/mcp

错误

工具结果包含 isError: true 和结构化主体 { error: <code>, message: <human>, details?: <any> }。代码是稳定的 — 智能体可以根据这些代码进行重试或显示逻辑。

代码

含义

INVALID_INPUT

输入未通过 zod 验证

WALLET_NOT_CONFIGURED

买家工具需设置 WALLET_PRIVATE_KEY

PAT_NOT_CONFIGURED

发布者工具需设置 GATEFARE_PAT

BUDGET_EXHAUSTED

达到运行时预算上限

INSUFFICIENT_BALANCE

钱包 USDC 不足

PRICE_TOO_HIGH

服务器价格超过你的 max_price

API_NOT_FOUND

Slug 不存在或已暂停

UPSTREAM_ERROR

付费 API 返回非 2xx,或其 402 格式错误

RATE_LIMITED

Gatefare 对请求进行了限流

NETWORK_ERROR

无法连接到 Gatefare

GATEFARE_API_ERROR

Gatefare 返回了 4xx / 5xx

工作原理 (30 秒版本)

  1. 智能体调用 gatefare.call_api { slug: "demo-weather", … }。

  2. 我们执行 GET https://gatefare.io/p/demo-weather(此时尚未支付)。

  3. Gatefare 代理返回 402 Payment Required,包含 accepts: [{network, payTo, maxAmountRequired, …}]。

  4. 我们针对配置网络上的该金额和接收方签署 EIP-3009 transferWithAuthorization。

  5. 我们使用签名的 X-Payment 标头(base64 编码的 JSON,x402 v2)重试请求。

  6. Gatefare 验证签名,结算 USDC 转账,并将调用代理到上游 API。

  7. 我们将上游响应(以及支付收据)交还给智能体。

签名是一次性的、有时限的,且除了针对此特定 payTo 的此特定转账外,绝不会出于任何目的离开你的机器。私钥永远不会被记录。

安全性

  • 非托管。 私钥存在于你的环境变量中,签名在本地完成,Gatefare 服务永远无法看到它们。

  • 抗网络混淆。 拒绝恶意网关向主网用户返回仅限 Sepolia 的要求 — 我们绝不会为用户未配置的链进行签名。

  • 加密随机 Nonce。 没有基于 Date.now() 的冲突。

  • 有效期限制为 1 小时,即使服务器请求更长时间。

  • 严格的输入验证。 Slugs 为 ^[a-z0-9_-]+$ 且经过 URL 编码;无路径遍历。targetUrl 在注册时会阻止 file://、localhost、云元数据 IP、.local 和 .internal 主机。

  • 密钥卫生。 测试断言私钥和 PAT 永远不会出现在 stderr / stdout 中。

开发

git clone https://github.com/gatefareio/mcp-server.git
cd mcp-server
npm install
npm run typecheck
npm test                  # 138 unit tests
npm run test:e2e          # 10 e2e tests against live gatefare.io (set GATEFARE_E2E=1)
npm run build

要在客户端配置中使用本地检出:

npm link
# in claude_desktop_config.json:
#   "command": "gatefare-mcp"

架构

src/
├── index.ts        # entry — wires stdio transport
├── server.ts       # McpServer instance + tool registration
├── config.ts       # env parsing, capability detection
├── client.ts       # REST client (wraps fetch)
├── x402.ts         # 402 parsing + EIP-3009 signing
├── types.ts        # shared types + GatefareError
└── tools/
    ├── discovery.ts   # search_apis, get_api, list_categories, suggest
    ├── buyer.ts       # call_api, get_wallet_balance, estimate_cost
    ├── publisher.ts   # register_api, list_my_apis, update_api, get_revenue, distribute
    └── safety.ts      # report_abuse

测试布局

tests/
├── config.test.ts         # env parsing edges
├── client.test.ts         # HTTP client error mapping
├── x402.test.ts           # signing + parsing primitives
├── x402-flow.test.ts      # full 402 → sign → retry handshake (mocked fetch)
├── server.test.ts         # capability-driven tool registration
├── init.test.ts           # subprocess: bootstrap, env crashes, secret leakage
├── stdio-protocol.test.ts # stdout pollution + recovery from tool errors
├── stability.test.ts      # 100 concurrent calls, memory baseline, ReDoS
├── tools/
│   ├── discovery.test.ts
│   ├── buyer.test.ts
│   ├── buyer-flow.test.ts
│   ├── publisher.test.ts
│   └── safety.test.ts
└── integration/
    └── e2e.test.ts        # real gatefare.io, gated by GATEFARE_E2E=1

贡献

欢迎提交 Issue 和 PR。请参阅 CONTRIBUTING.md 了解工作流程、风格指南以及如何添加新工具。

许可证

MIT © Gatefare

链接

Available Tools

7 tools
gatefare.get_apiA
Read-onlyIdempotent

Get full details for a specific API by slug, or by handle + urlName pair. Returns pricing, stats, uptime, and publisher info.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoAPI slug, e.g. 'demo-weather'
handleNoPublisher handle
urlNameNoAPI URL name

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the description adds limited behavioral context. It usefully states what is returned, but it does not disclose behavior for edge cases such as no identifier provided or both slug and handle+urlName supplied.

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 short sentences, no filler, with the primary action and identifier modes front-loaded. Every phrase contributes meaning.

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 lists return fields, which helps since there is no output schema. However, the schema marks all parameters optional while the description implies at least one identifier is required, and it does not clarify exclusivity or what happens with conflicting lookup modes. This is a meaningful gap for correct invocation.

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. The description adds value beyond the schema by explicitly pairing handle with urlName as a combined lookup mode, which is not conveyed by the individual parameter descriptions or the lack of required 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 uses a specific verb ('Get') and resource ('specific API'), and clearly identifies the two lookup modes: by slug or by handle + urlName pair. It also lists the returned content (pricing, stats, uptime, publisher info), which distinguishes it from sibling search/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?

The intended use is implied: when you need full details for a known API. However, it does not explicitly contrast with sibling tools like search_apis or suggest, nor does it state when one lookup mode should be preferred over the other.

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

gatefare.list_categoriesA
Read-onlyIdempotent

List all available API categories in the Gatefare catalog with API counts.

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?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds value by stating the result includes API counts per category and that the operation covers all categories. It does not discuss pagination or return shape, but for a zero-parameter catalog list this is a minor gap.

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, front-loaded sentence states exactly what the tool returns without filler. Every word earns its place, and the key scope ('all available') and the useful detail ('with API counts') are included.

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, zero-parameter, read-only list operation with no output schema, the description is complete enough for an agent to call and interpret the result. It clearly says what is returned (categories with API counts) and implies an unfiltered catalog-wide response.

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 has no parameters, so the schema covers all possible inputs at 100%. The description adds no parameter-specific detail needed to invoke the tool correctly, and the baseline for a zero-parameter tool 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 uses a specific verb ('List') and a specific resource ('all available API categories in the Gatefare catalog'), adding the detail that API counts are included. This clearly distinguishes it from sibling tools like search_apis or get_api without needing to open the schema.

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 for broad catalog enumeration, making it a reasonable precursor to searching or retrieving specific APIs. However, it does not explicitly state when to choose this over siblings or mention any exclusions, leaving usage context somewhat implicit.

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

gatefare.publisher_reputationA
Read-onlyIdempotent

Look up the publisher of an API and return their positive-only trust badges: Established (>=3 months tenure), Top contributor (>=1M lifetime successful calls), Highly rated (>=4.5 avg across >=10 reviews). New publishers come back unmarked — absence of badges is NOT a warning, just a lack of accumulated signal. Use this BEFORE calling an unfamiliar API to gauge counterparty risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoAPI slug, e.g. 'demo-weather'
handleNoPublisher handle
urlNameNoAPI URL name

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description adds crucial interpretive context: badges are positive-only, and absence of badges is 'NOT a warning, just a lack of accumulated signal.' This prevents the agent from misreading an unmarked result as a negative signal, which is highly valuable behavior disclosure.

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, each earning its place: the purpose, the badge criteria, the important absence-is-not-warning caveat, and when to use it. The most actionable guidance is front-loaded, with no filler or repetition of annotation fields.

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 tool's safety profile via annotations, the badge semantics, the new-publisher case, and the recommended usage moment. With no output schema, the description does not specify the exact return shape, and the relationship between the three optional parameters remains ambiguous, but the core decision-making context 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 coverage is 100%, so the baseline is 3. The schema describes each parameter individually, but the description does not clarify how slug, handle, and urlName relate—whether they are aliases, which takes precedence if multiple are supplied, or whether any one is sufficient. The description adds no 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 a specific verb and resource: 'Look up the publisher of an API' and return their trust badges. It also differentiates itself from sibling tools like get_api and search_apis by focusing on publisher reputation rather than API details or discovery.

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 gives explicit usage context: 'Use this BEFORE calling an unfamiliar API to gauge counterparty risk.' It does not explicitly name alternatives or exclusion conditions, but the 'before calling an unfamiliar API' guidance is clear enough for an agent to select this tool appropriately.

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

gatefare.report_abuseA

Report an API for abuse — CSAM, fraud, malware, copyright, trademark, etc. Returns a reference ID for tracking. Submitting a report does not guarantee removal; trust & safety reviews each report.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiSlugYes
detailsYes
categoryYes
reporterEmailNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate this is a mutating, non-idempotent action. The description adds valuable context beyond the annotations: reports are reviewed by trust & safety, removal is not guaranteed, and a tracking reference ID is returned. It does not disclose every side effect, but it sets expectations appropriately.

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 short sentences, each earning its place: what the tool does, what it returns, and an important caveat about outcomes. The content is front-loaded and free of 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?

For a moderate-complexity tool with four parameters and no output schema, the description covers the key operational context: purpose, return value, and non-guarantee of removal. Parameter semantics are weak, but the schema itself documents field constraints, and annotations cover side-effect hints.

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 carries the burden of explaining parameters and fails to do so. The description does not explain apiSlug, category, details, or optional reporterEmail beyond what the schema already provides. It only echoes abuse categories already visible in the enum.

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 a specific action ('Report an API for abuse'), lists relevant abuse categories, and notes the return value (reference ID). It is distinct from siblings by nature, but it does not explicitly name or contrast any sibling tool, so it stops short of full 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 intended use is clear: submit an abuse report for an API with categories like CSAM, fraud, malware, and copyright. There are no explicit when-not-to-use instructions or alternative tool references, but the scope is specific enough that an agent would not confuse it with search, get, or suggest.

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

gatefare.sample_responseA
Read-onlyIdempotent

Fetch the publisher-pasted representative response for an API. This is what the publisher claims their API returns on a typical successful call. Compare against gatefare.get_api's captured example (what we actually got from probing) to spot inconsistencies BEFORE you pay. Capped at 4 KiB UTF-8 by the platform. Returns null when the publisher has not provided a sample (older listings).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoAPI slug, e.g. 'demo-weather'
handleNoPublisher handle
urlNameNoAPI URL name

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description discloses a 4 KiB UTF-8 size cap and the null-return behavior for older listings. These are operational constraints an agent needs to know and are not present in the annotations.

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

Conciseness5/5

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

Three sentences with zero fluff: purpose, usage/comparison, and constraints are each front-loaded. Every sentence earns its place and no redundant information is present.

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 read-only tool with 3 schema-covered parameters and no output schema, the description covers the essential behavioral details (size cap, null case) and gives a clear comparison workflow. Nothing an agent needs to invoke it correctly is missing.

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 each parameter (slug, handle, urlName) already has a clear description. The tool description adds no extra parameter semantics, which is acceptable given the high schema coverage; the baseline of 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?

The description uses a specific verb+resource ('Fetch the publisher-pasted representative response for an API') and immediately differentiates it from the sibling gatefare.get_api by contrasting the publisher-pasted sample with the captured example from probing. This makes the tool's unique role unmistakable.

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?

It explicitly instructs when to use this tool: compare the sample against gatefare.get_api's captured example to spot inconsistencies BEFORE paying. It also implicitly advises on fallback behavior by noting it returns null when no sample exists, giving the agent clear decision guidance.

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

gatefare.search_apisB
Read-onlyIdempotent

Search the Gatefare catalog for paid APIs by text, price, category, or sort order. Returns paginated results with publisher info.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
sortNoSort order
queryNoFull-text search query
categoryNoCategory slug
max_priceNoMaximum price in USD
include_testnetNoInclude testnet APIs

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly and idempotent behavior, so no safety disclosure is needed. The description adds that results are paginated and include publisher info, but does not describe pagination shape or other runtime behavior.

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 tightly written sentences front-load the action and filters and add a useful one-line result summary. No filler or 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?

For a read-only search tool with 6 optional parameters fully described by the schema, the description is largely sufficient. It covers paid-only scope and result content, though there is no output schema to detail pagination fields.

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 description mirrors the filters (text, price, category, sort), but adds no semantic 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 names a specific verb and resource ('Search the Gatefare catalog for paid APIs') and enumerates filter dimensions. It is clear, though it does not explicitly differentiate itself from siblings like get_api or suggest.

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 implies use for catalog discovery but gives no guidance on when to choose this over get_api for detail retrieval or suggest for query completion. No alternatives or exclusion conditions are mentioned.

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

gatefare.suggestB
Read-onlyIdempotent

Autocomplete search suggestions for API discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for autocomplete

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds only that it provides autocomplete suggestions, which is useful but does not disclose additional behavior such as result limits, ordering, or whether the suggestions reflect previously seen queries.

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, front-loaded sentence with no filler or redundant content. Every word adds useful context, and it remains appropriately concise for a tool with one parameter.

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, read-only autocomplete tool with one parameter and rich annotations, the description is largely complete. It could be improved by noting what the suggestions are based on or expected response shape, but an agent can correctly invoke the tool with just `query`.

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 the single `query` parameter is already described as 'Search query for autocomplete'. The description adds no further parameter-level meaning, so the baseline of 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?

The description clearly states the tool provides autocomplete search suggestions for API discovery, using a specific resource and intent. It is distinguishable from siblings like gatefare.search_apis and gatefare.get_api, though it does not explicitly name or contrast 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?

The description implies the tool is for autocomplete-style suggestion queries but gives no explicit guidance on when to use it versus siblings such as gatefare.search_apis. There is no mention of exclusions, prerequisites, or alternative tool selection criteria.

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. 7 tool updatesv1.1.1
    • First observedgatefare.get_api
    • First observedgatefare.list_categories
    • First observedgatefare.publisher_reputation
    • First observedgatefare.report_abuse
    • First observedgatefare.sample_response
    • First observedgatefare.search_apis
    • First observedgatefare.suggest

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search, details, categories, suggestions, reporting, reputation, and sample responses. Even get_api and sample_response are well-separated by their descriptions.

Naming Consistency4/5

Most tools follow the verb_noun pattern (search_apis, get_api, list_categories, report_abuse), but suggest and publisher_reputation deviate (bare verb, noun_noun). Overall snake_case and gatefare prefix maintain readability.

Tool Count5/5

Seven tools is ideal for this domain, covering discovery, inspection, reputation, and feedback without bloat or redundancy.

Completeness5/5

The surface fully covers the API catalog workflow: search, suggest, categories, detailed lookups, publisher trust evaluation, sample response verification, and abuse reporting—no obvious dead ends or missing critical operations.

Maintenance

ActivityInactive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Eight crypto and DeFi data tools for AI agents: prices, gas, one ParaSwap route quote, GoPlus token security and top-holder samples, DefiLlama yields, Hyperliquid/dYdX funding, and observed wallet balances. Inspect prices free; pay 0.001–0.008 USDC per call on Base through x402. No API key or subscription.
    8
    109 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server exposing 1,000+ pay-per-call API endpoints across agent infrastructure (memory, coordination, secrets, verification), data, compute, finance, weather, geography, and reference categories — payments via x402 protocol in USDC on Base.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Pay-per-call MCP server for WebberSites x402 Data API, offering 45 tools for AI agents: web scraping, document extraction, SEO audits, linting, crypto data, and more, with payment via USDC on Base.
    47 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides access to 70 paid APIs as MCP tools with per-call and session budgets, paying via x402/USDC on Base without requiring an account or login. Includes a built-in allowlist of hosts and safe defaults to prevent unintended payments.
    14
    63 npm
    MIT