apifable

apifable
Читайте спецификацию. Понимайте API. Интегрируйте с уверенностью.
English | 繁體中文
Обзор
apifable — это MCP-сервер, который помогает AI более плавно интегрировать API в проекты на TypeScript. Он упрощает изучение структуры API, поиск эндпоинтов и генерацию типов TypeScript, предоставляя вашему AI-агенту контекст, необходимый для написания точного кода интеграции.
Related MCP server: openapi-mcp-proxy
✨ Возможности
📦 Контекст API, готовый для AI — предоставьте AI структуру, необходимую для понимания и работы с вашим API
📘 Поддержка OpenAPI 3.0 / 3.1 — работает со стандартными спецификациями как с надежным источником истины
🤖 MCP-сервер для AI-агентов — подключайтесь к Claude, Cursor и Windsurf
🔍 Инструменты исследования API — просматривайте эндпоинты, ищите по ключевым словам и изучайте полные детали запросов/ответов
🏷️ Генерация типов TypeScript — создавайте определения типов TypeScript, готовые к использованию в коде фронтенда
Начало работы
Установка
Запустите apifable init для настройки конфигурации вашего проекта:
npx apifable@latest initЭто создаст файл apifable.config.json в корне вашего проекта. Файл конфигурации следует добавить в систему контроля версий, чтобы путь к спецификации был доступен вашей команде.
После запуска команды вы сможете выбрать между Локальным файлом и Удаленным URL.
1. Локальный файл
Используйте этот режим, если ваша спецификация OpenAPI уже находится в проекте или если вы хотите управлять обновлениями спецификации самостоятельно.
init запросит путь к локальному файлу, например openapi.yaml.
Затем вам нужно будет вручную разместить спецификацию OpenAPI по этому пути. При изменении бэкенд-API вам также нужно будет обновлять этот файл вручную.
2. Удаленный URL
Используйте этот режим, если ваша спецификация OpenAPI доступна по стабильному удаленному URL, например, через эндпоинт спецификации OpenAPI, предоставляемый документацией вашего бэкенд-API.
init сначала запросит удаленный URL, например https://api.example.com/openapi.yaml, а затем запросит путь для локального сохранения, например ./openapi.yaml.
[!NOTE] В этом режиме
initтакже автоматически добавляет путь к загруженной локальной спецификации в.gitignore, так как файл предназначен для обновления из удаленного источника.
Затем вы можете выполнить следующую команду, чтобы загрузить спецификацию OpenAPI с удаленного URL по вашему локальному пути (spec.url → spec.path). Всякий раз, когда спецификация меняется, просто запустите её снова для обновления:
npx apifable@latest fetchЗаголовки
Для неконфиденциальных заголовков, которыми можно поделиться с командой, добавьте spec.headers в apifable.config.json:
{
"spec": {
"path": "openapi.yaml",
"url": "https://example.com/openapi.yaml",
"headers": {
"X-Api-Version": "2"
}
}
}Заголовки авторизации (секретные токены)
Если для загрузки удаленной спецификации OpenAPI требуется аутентификация (приватный API), храните секретные заголовки в .apifable/auth.json. Этот файл не должен добавляться в систему контроля версий:
{
"headers": {
"Authorization": "Bearer YOUR_SECRET_TOKEN"
}
}И apifable.config.json, и .apifable/auth.json поддерживают синтаксис ${ENV_VAR} в значениях заголовков.
{
"headers": {
"Authorization": "Bearer ${MY_API_KEY}"
}
}Приоритет заголовков (от высшего к низшему)
Заголовки из
.apifable/auth.json(переопределяют ключи с тем же именем)spec.headersизapifable.config.json
Claude Code
Добавьте следующее в ваш .mcp.json:
{
"mcpServers": {
"apifable": {
"command": "npx",
"args": ["-y", "apifable@latest", "mcp"]
}
}
}Для других AI-агентов, таких как Cursor и Windsurf, вы можете следовать тому же подходу для настройки apifable в качестве MCP-сервера.
Использование
Вот несколько примеров промптов, которые вы можете использовать для изучения API и создания функций.
Изучение API
List all APIsShow me APIs related to postsList APIs under the Post tagShow me the API details for post commentsShow me the API details for GET /posts/{id}/commentsShow me the API details for postCommentsСоздание функции
Implement the post comments feature
Post page: src/pages/posts/[id].tsx
Related APIs:
- GET /posts/{id}/comments (list post comments)
- POST /posts/{id}/comments (create a post comment)[!TIP] При написании промпта для создания функции включите соответствующий контекст: пути к страницам, расположение компонентов, связанные API, а также любые шаблоны или примеры, которым нужно следовать.
Руководство для AI-агента
Добавьте следующее в файл AGENTS.md вашего проекта, чтобы помочь AI-агентам более эффективно использовать apifable:
## API Integration (apifable)
- Always use `get_endpoint` to verify the exact path, method, and parameters before writing integration code. Never assume.
- When presenting endpoint list data from apifable tools, display exactly these columns in order: `Method` (Uppercase), `Path`, `Summary`. Keep all values verbatim, including summary prefixes like `[ 32 - 001 ]`. Do not omit, rename, paraphrase, or add extra columns.
- When saving generated types, store them under `src/types/` and name files by domain (e.g., `src/types/auth.ts`, `src/types/user.ts`), not by OpenAPI tag names.Вышеприведенное является рекомендуемой отправной точкой. Не стесняйтесь настраивать столбцы списка эндпоинтов и путь к папке с типами в соответствии с вашим проектом.
Справочник инструментов MCP
get_spec_info
Возвращает название API, версию, описание, серверы и все теги с количеством эндпоинтов. Начните отсюда, чтобы понять структуру незнакомой спецификации.
list_endpoints_by_tag
Входные данные:
tag(строка): Имя тега для фильтрацииlimit(число, опционально): Максимальное количество эндпоинтов для возвратаoffset(число, опционально): Количество эндпоинтов для пропуска (по умолчанию: 0)
Возвращает все эндпоинты, принадлежащие заданному тегу. Ответ включает поля total, offset и hasMore для пагинации. Включает предупреждение, если результаты превышают 30 элементов, а limit не указан.
search_endpoints
Входные данные:
query(строка): Ключевое слово для поискаtag(строка, опционально): Ограничить поиск определенным тегомlimit(число, опционально): Максимальное количество результатов для возврата (по умолчанию: 10)
Поиск по ключевым словам в operationId, пути, сводке и описании. Результаты ранжируются по релевантности. Если точных совпадений не найдено, автоматически переключается на нечеткий поиск. Ответ включает поле matchType ("exact" или "fuzzy"); нечеткие результаты также включают поле score для каждого результата.
get_endpoint
Входные данные (выберите одно):
method(строка) +path(строка): HTTP-метод и путь эндпоинта (например,get+/users/{id})operationId(строка): ID операции (например,listUsers)
Возвращает полный объект эндпоинта, включая параметры, requestBody и ответы, с разрешенными внутренними компонентами $ref.
search_schemas
Входные данные:
query(строка): Ключевое слово для поискаlimit(число, опционально): Максимальное количество результатов для возврата (по умолчанию: 10)
Поиск по ключевым словам в имени схемы и описании. Результаты ранжируются по релевантности. Если точных совпадений не найдено, автоматически переключается на нечеткий поиск. Ответ включает поле matchType ("exact" или "fuzzy"); нечеткие результаты также включают поле score для каждого результата. Пустые результаты могут также включать поле message с рекомендациями для следующего шага.
get_schema
Входные данные:
name(строка): Имя схемы изcomponents/schemas
Возвращает полную схему с разрешенными внутренними компонентами $ref.
get_types
Входные данные (выберите один режим):
schemas(строка[]): Массив имен схем изcomponents/schemasmethod(строка) +path(строка): HTTP-метод и путь эндпоинтаoperationId(строка): ID операции (например,listUsers)
Генерирует автономные объявления TypeScript в виде текстового кода. В режиме эндпоинта он следует за поддерживаемыми внутренними компонентами $ref перед сбором зависимостей схемы. Автоматически включает транзитивные зависимости и не включает операторы импорта.
Правила режима:
Используйте ровно один режим для вызова:
schemas,method+pathилиoperationIdНе смешивайте режимы в одном вызове
Ограничения
Внешние
$ref(например, ссылки на другие файлы или URL) не поддерживаются.OpenAPI 2.0 (Swagger) не поддерживается. Поддерживаются только спецификации OpenAPI 3.0 и 3.1.
Спонсорство
Если вы считаете, что этот пакет помог вам, пожалуйста, рассмотрите возможность стать спонсором, чтобы поддержать мою работу~, и ваш аватар будет виден в моих основных проектах.
Авторы
@reapi/mcp-openapi — за первоначальное вдохновение
Лицензия
История звезд
Available Tools
7 toolsget_endpointA
Get full details of a specific endpoint including parameters, request body, responses, and security requirements. Supported internal component $refs are resolved inline. Provide either "method" + "path" or "operationId". Use get_types to get TypeScript type declarations for the endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Endpoint path (e.g. /users/{id}) | |
| method | No | HTTP method (e.g. get, post, put, delete) | |
| operationId | No | Operation ID to look up (e.g. listUsers) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description mentions that internal component $refs are resolved inline, a useful behavioral detail. It does not disclose potential side effects, error handling, or authentication needs, but as a read-only operation, the description 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the purpose, the second provides usage options. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists the returned content (parameters, request body, responses, security) and mentions $ref resolution. It lacks error handling details but is sufficient for an endpoint detail retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, baseline is 3. The description adds meaning by explaining the two identification approaches (method+path vs operationId) and directing to get_types for types, which is helpful beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves full details of a specific endpoint including parameters, request body, responses, and security requirements. It distinguishes from siblings like get_schema (schemas) and get_types (TypeScript declarations) by focusing on endpoint details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides two alternative identification methods (method+path or operationId) and directs users to get_types for TypeScript type declarations. Though it lacks explicit 'when not to use' guidance, the alternative is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schemaA
Get a specific schema from components/schemas by name. Supported internal component $refs are resolved inline. Use get_types to convert schemas to TypeScript type declarations.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Schema name (e.g. User, CreateOrderRequest) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that internal $refs are resolved inline, which is a key behavioral detail for a schema retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence delivers the core purpose, and the second adds valuable detail and cross-reference to a sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the main functionality and resolution behavior. It could optionally hint at output format, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds minimal value beyond the schema's own parameter description, merely restating the parameter's purpose with examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a specific schema by name, includes inline $ref resolution, and explicitly contrasts with sibling get_types for TypeScript conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to use get_types for TypeScript type declarations, but does not address when to use other siblings like search_schemas or get_endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spec_infoA
Get general information about the OpenAPI spec: title, version, description, servers, security schemes, and available tags with endpoint counts. Start here to understand an unfamiliar API. Then use list_endpoints_by_tag or search_endpoints to explore specific areas.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description implies a read-only operation without side effects; no annotations are provided, but the description adequately conveys the tool's behavior. Could potentially mention that it returns summary data, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and contents, second gives usage guidance. Efficient, front-loaded, and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description fully explains what it returns (title, version, description, servers, security schemes, tags with counts) and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds no parameter-specific info, but given no parameters, the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves general information about the OpenAPI spec and lists specific items (title, version, etc.). Distinguishes from siblings by positioning it as the starting point and suggesting exploration tools like list_endpoints_by_tag and search_endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to 'Start here to understand an unfamiliar API' and then use list_endpoints_by_tag or search_endpoints for further exploration, providing clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typesA
Generate self-contained TypeScript type declarations for specified schemas or for all schemas used by a specific endpoint. Endpoint mode follows supported internal component $refs before collecting schema dependencies. Provide exactly one of: "schemas" (array of schema names), "method" + "path" (endpoint), or "operationId". Transitive dependencies are included automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Endpoint path for endpoint mode (e.g. /users/{id}) | |
| method | No | HTTP method for endpoint mode (e.g. get, post) | |
| schemas | No | Array of schema names from components/schemas (e.g. ["User", "Address"]) | |
| operationId | No | Operation ID to generate types for (e.g. listUsers) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the two modes, that endpoint mode follows internal $refs, and that transitive dependencies are included automatically. This is good behavioral transparency for a read-like tool, though it does not mention potential errors or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: first states purpose, second adds endpoint detail, third specifies parameter usage. Front-loaded and efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two modes, four parameters, no output schema), the description covers the key aspects: purpose, mode selection, dependency handling. It does not explain the return type explicitly, but the tool name suggests TypeScript declarations, so it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have schema descriptions (100% coverage). The description adds value by explaining the exclusivity rule and mode semantics, which goes beyond the individual parameter descriptions. It helps the agent understand how to combine parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates TypeScript type declarations for schemas or for schemas used by an endpoint. It uses specific verbs and resources, distinguishing from sibling tools like 'get_schema' or 'get_endpoint' which return different outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to provide exactly one of three parameter combinations: schemas, method+path, or operationId. It explains endpoint mode follows $refs and includes transitive dependencies. However, it does not explicitly contrast with sibling tools or mention when not to use, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_endpoints_by_tagA
List all endpoints belonging to a specific tag. Use get_spec_info first to see available tags. Supports pagination via limit and offset. Then use get_endpoint to inspect a specific endpoint in detail.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | The tag name to filter endpoints by | |
| limit | No | Maximum number of endpoints to return | |
| offset | No | Number of endpoints to skip (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses pagination support and required tag. However, it does not describe the return format (e.g., list of endpoint names or objects), error handling for invalid tags, rate limits, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: stating the action, a prerequisite step, and a subsequent step. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided. The description does not specify the return value format, sorting order, or behavior when the tag does not exist. This is a notable gap for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; all parameters have descriptions in schema. The description adds the concept of pagination and workflow but does not provide additional semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all endpoints belonging to a specific tag,' using a specific verb and resource. It distinguishes itself from siblings like 'get_endpoint' (inspect specific) and 'search_endpoints' (search-based).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using 'get_spec_info first to see available tags' and then 'get_endpoint to inspect a specific endpoint in detail,' providing a clear workflow. Pagination is mentioned. No explicit when-not-to-use, 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.
search_endpointsA
Search endpoints by keyword across operationId, path, summary, and description. Results are ranked by relevance. If no exact matches are found, automatically falls back to fuzzy search. The response includes a matchType field ("exact" or "fuzzy"); fuzzy results also include a score field per result. After finding the target endpoint, use get_endpoint for full details or get_types for TypeScript types.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional tag to filter results | |
| limit | No | Maximum number of results (default: 10) | |
| query | Yes | Search keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It reveals that results are ranked by relevance, automatically falls back to fuzzy search on no exact matches, and includes a matchType and optional score field. This is substantial for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each serving a distinct purpose: purpose, ranking, fallback/response fields, and post-search guidance. It is front-loaded with the core action and contains no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description explains the response structure (matchType, score) and fallback behavior. It also references sibling tools for next steps. It could mention pagination or limit usage, but overall it's fairly comprehensive for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all three parameters have descriptions). The description adds minimal extra meaning beyond the schema, e.g., it implies query searches across specific fields and mentions limit's default, but otherwise provides no new param-level insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Search endpoints by keyword across operationId, path, summary, and description,' which is a specific verb and resource, differentiating it from sibling tools like list_endpoints_by_tag (list) and search_schemas (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description ends with 'After finding the target endpoint, use get_endpoint for full details or get_types for TypeScript types,' providing clear guidance on next steps and differentiation from other tools. However, it 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.
search_schemasA
Search schemas by keyword across schema name and description. Results are ranked by relevance. If no exact matches are found, automatically falls back to fuzzy search. Empty results may include a guidance message suggesting next steps. Use get_schema to inspect a specific schema in detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default: 10) | |
| query | Yes | Search keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses ranking by relevance, automatic fallback to fuzzy search, and empty results guidance, covering behavioral traits thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with main action, no waste. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects for a search tool: scope, ranking, fallback, empty results, and related tool reference. No gaps given lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, but description adds meaning by specifying search scope (name and description) and ranking context, exceeding baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches schemas by keyword across name and description, and distinguishes from sibling tool get_schema by advising to use that for detailed inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (search by keyword), describes fallback behavior and empty results guidance, and recommends get_schema for specific inspection, providing clear alternatives.
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.
7 tool updates
v1.1.1- First observed
get_endpoint - First observed
get_schema - First observed
get_spec_info - First observed
get_types - First observed
list_endpoints_by_tag - First observed
search_endpoints - First observed
search_schemas
TDQS
Each tool has a clearly distinct purpose—getting endpoint details, schema details, spec info, generating types, listing endpoints by tag, searching endpoints, and searching schemas—with no overlap.
All tool names follow a consistent verb_noun pattern (get_, get_, get_, get_, list_, search_, search_), making them predictable.
With 7 tools, the set is well-scoped for exploring an OpenAPI spec—enough to cover browsing, searching, and type generation without being excessive.
The tools cover the full lifecycle of API spec exploration: getting spec info, listing and searching endpoints/schemas, retrieving details, and generating TypeScript types—no obvious gaps.
Maintenance
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
MCP server for AI access to Swagger by SmartBear.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that loads multiple OpenAPI specifications and exposes them to LLM-powered IDE integrations, enabling AI to understand and work with your APIs directly in development tools like Cursor.78390MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides tools for exploring large OpenAPI schemas without loading entire schemas into LLM context. Perfect for discovering and analyzing endpoints, data models, and API structure efficiently.914MIT
- AlicenseBqualityCmaintenanceMCP server that enables AI assistants to explore and generate code for type-safe OpenAPI clients from various cloud APIs like DigitalOcean, Hetzner Cloud, and Ory.71918MIT
- AlicenseAqualityDmaintenanceA TypeScript-based MCP server that integrates with Swagger/OpenAPI specifications to expose API endpoints as tools for Large Language Models (LLMs), enabling natural language interaction with any OpenAPI-compliant API.49MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ycs77/apifable'
If you have feedback or need assistance with the MCP directory API, please join our Discord server