OpenAPI REST MCP Server
Provides integration with Jira, allowing the MCP server to interact with Jira REST APIs using the configured credentials.
Provides integration with Salesforce, enabling interaction with Salesforce REST APIs using OAuth client credentials.
Provides integration with Zoho CRM, enabling interaction with Zoho CRM REST APIs using OAuth refresh token authentication.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenAPI REST MCP ServerCreate a new Jira issue in the PROJ project with title 'Fix login bug'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenAPI REST MCP Server
This MCP server allows Claude Desktop to interact with REST APIs described by an OpenAPI/Swagger specification.
Supported integrations include:
Jira
Zoho CRM
Salesforce
Microsoft SharePoint
Procore
HxGN EAM
Oracle Primavera P6
Authentication methods vary by integration.
Jira, Zoho CRM, Salesforce, SharePoint, and Procore were configured and tested during development.
HxGN EAM and Primavera P6 use Basic Authentication and require credentials from the system administrator before they can be tested.
Requirements
Node.js 18+
Claude Desktop
API credentials for the target system
Setup
Move to directory.
cd openapi-rest-mcpInstall dependencies.
npm installConfiguration
Copy
config.example.jsonto
config.jsonEdit the values as required.
Example:
{
"activeEnvironment": "jira"
}Supported environments
jira
zoho
salesforce
sharepoint
procore
eam
primavera
Claude Desktop Configuration
Add the MCP server to your Claude Desktop configuration.
Example:
{
"mcpServers": {
"openapi-rest": {
"command": "node",
"args": [
"/path/to/src/index.js",
"--config",
"/path/to/config.json"
],
"env": {
"API_USER":"",
"API_TOKEN":"",
"ZOHO_CLIENT_ID":"",
"ZOHO_CLIENT_SECRET":"",
"ZOHO_REFRESH_TOKEN":"",
"SALESFORCE_CLIENT_ID":"",
"SALESFORCE_CLIENT_SECRET":"",
"SALESFORCE_TOKEN_URL":"https://your-instance.my.salesforce.com/services/oauth2/token",
"CLIENT_ID":"",
"CLIENT_SECRET":"",
"TENANT_ID":"",
"PROCORE_CLIENT_ID":"",
"PROCORE_CLIENT_SECRET":"",
"PROCORE_REFRESH_TOKEN":"",
"PROCORE_TOKEN_URL":"https://login-sandbox.procore.com/oauth/token/",
"CLAUDE_CONFIG_PATH":"/Users/<username>/Library/Application Support/Claude/claude_desktop_config.json",
"MCP_SERVER_NAME":"openapi-rest",
"EAM_USER":"",
"EAM_PASSWORD":"",
"PRIMAVERA_USER":"",
"PRIMAVERA_PASSWORD":""
}
}
}
}Replace all placeholder values with your own credentials.
Authentication
Jira
Basic Authentication
Required
API_USER
API_TOKEN
Related MCP server: MCP REST Server
Zoho CRM
OAuth Refresh Token
Required
ZOHO_CLIENT_ID
ZOHO_CLIENT_SECRET
ZOHO_REFRESH_TOKEN
The server automatically refreshes access tokens.
Salesforce
OAuth Client Credentials
Required
SALESFORCE_CLIENT_ID
SALESFORCE_CLIENT_SECRET
SALESFORCE_TOKEN_URL
The server automatically retrieves access tokens.
SharePoint
Microsoft Graph Client Credentials
Required
CLIENT_ID
CLIENT_SECRET
TENANT_ID
The server automatically retrieves access tokens.
Procore
OAuth Refresh Token
Required
PROCORE_CLIENT_ID
PROCORE_CLIENT_SECRET
PROCORE_REFRESH_TOKEN
The server automatically refreshes access tokens.
The latest refresh token is automatically written back to the Claude Desktop configuration file.
HxGN EAM
Basic Authentication
Required
EAM_USER
EAM_PASSWORD
Credentials must be provided by the HxGN EAM administrator.
Primavera
Basic Authentication
Required
PRIMAVERA_USER
PRIMAVERA_PASSWORD
Credentials must be provided by the Primavera administrator.
Running
Start Claude Desktop.
The MCP server will start automatically.
No additional commands are required.
Notes
OAuth access tokens are refreshed automatically where supported.
Procore refresh tokens are automatically persisted.
The active environment is selected in
config.json.
Attribution
This project is based on openapi-rest-mcp by Samet Birer.
The project has been modified and extended as part of an internship project, including additional integrations, authentication workflows, token refresh handling, and configuration support.
Available Tools
12 toolsapi_deleteC
DELETE request to an API endpoint
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | API URL — absolute (https://host/path) or relative to the environment baseUrl (e.g. /users) | |
| data | No | Request body data | |
| params | No | Query parameters | |
| headers | No | Custom headers (merged on top of config + auth headers) | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| includeHeaders | No | Include sanitized response headers in the result (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates that a DELETE request is made and does not disclose that this is likely a destructive operation, how responses are returned, whether authentication is required, or how errors are handled.
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 a single, front-loaded sentence with no filler. It efficiently states the method and target without redundancy, which is appropriate for the apparent simplicity of the 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?
The tool has seven parameters, no annotations, and no output schema, yet the description provides almost no behavioral context. It omits response format, auth expectations, destructive side effects, and typical usage context, leaving the agent to infer too much from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all seven parameters with clear explanations, so the description itself does not need to compensate for missing parameter information. With 100% schema description coverage, the baseline of 3 is appropriate; the description adds no extra param meaning but does not need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the HTTP method (DELETE) and the target (API endpoint), which distinguishes it from sibling tools like api_get, api_post, api_put, and api_patch. However, it does not go beyond the method name to explain the tool's role or behavior, so it is clear but minimal.
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?
There is no guidance about when to use this tool instead of the other HTTP method tools, nor any mention of prerequisites such as authentication, environment setup, or when DELETE is appropriate. The intended usage is only implied by the tool name and the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_getC
GET request to an API endpoint
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | API URL — absolute (https://host/path) or relative to the environment baseUrl (e.g. /users) | |
| params | No | Query parameters | |
| headers | No | Custom headers (merged on top of config + auth headers) | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| includeHeaders | No | Include sanitized response headers in the result (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It only says 'GET request,' offering little beyond the method itself; it does not disclose response handling, header merging, URL resolution behavior, authentication needs, or error behavior. The schema adds some detail, but the description itself is behaviorally thin.
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 a single short sentence with no filler, but it is under-specified rather than appropriately concise. For a tool with six parameters and no annotation context, this level of brevity forces the agent to rely entirely on the schema and sibling names.
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 lack of annotations, absence of an output schema, and the presence of six parameters, the description is not complete enough. It omits return behavior, auth expectations, and when it should be selected over siblings, leaving material gaps for an agent selecting and invoking the 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 description coverage is 100%, so the parameters are already well documented in the input schema. The description adds no parameter-level meaning, but the baseline of 3 is appropriate because the schema handles the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the HTTP verb (GET) and the resource (an API endpoint), which is enough to distinguish it from sibling tools like api_post and api_delete. It is minimal, however, and does not mention what is returned or how the response is handled.
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?
There is no guidance on when to use this tool versus alternatives such as api_post, swagger_fetch, or config_status. The GET verb implicitly suggests read operations, but no explicit context or exclusion is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_patchB
PATCH request to an API endpoint
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | API URL — absolute (https://host/path) or relative to the environment baseUrl (e.g. /users) | |
| data | Yes | Request body data | |
| params | No | Query parameters | |
| headers | No | Custom headers (merged on top of config + auth headers) | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| includeHeaders | No | Include sanitized response headers in the result (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden, but it only names the HTTP method. It does not mention authentication, side effects, response format, error behavior, or how the request body is handled, leaving important behavioral traits undisclosed.
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 a single terse sentence with no filler or redundant information. It front-loads the HTTP method and is appropriately compact for a simple API client 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?
The tool has seven parameters, no output schema, and no annotations, yet the description only states the HTTP method. It omits return value behavior, error cases, authentication context, and any operational guidance, making the description incomplete for reliable tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all seven parameters documented in the input schema. The description adds no parameter-level meaning, but because the schema already covers semantics, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific HTTP verb and resource: it performs a PATCH request to an API endpoint. This clearly distinguishes it from sibling tools like api_get, api_post, api_put, and api_delete by the HTTP method.
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?
No guidance is given about when to use this tool versus alternatives such as api_post or api_put. It does not mention PATCH semantics like partial updates, nor does it describe any conditions or prerequisites for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_postC
POST request to an API endpoint
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | API URL — absolute (https://host/path) or relative to the environment baseUrl (e.g. /users) | |
| data | Yes | Request body data | |
| params | No | Query parameters | |
| headers | No | Custom headers (merged on top of config + auth headers) | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| includeHeaders | No | Include sanitized response headers in the result (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says the operation is a POST request. It does not mention side effects, response format, error behavior, auth requirements, or the sanitization/filtering behavior hinted at by params like includeHeaders and maxChars.
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 a single, efficient sentence with no filler or repetition. It is front-loaded with the key verb and object, though it is too sparse for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no output schema, and no annotations, yet the description provides almost no operational context. An agent is left without information about response handling, payload conventions, or the practical consequences of a POST call, so the description alone is not enough to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented in the input schema. The description adds no additional meaning beyond what the schema provides, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific HTTP verb (POST) and a resource (API endpoint), making the core operation immediately understandable. It is not a full tautology, but it is generic and does not explicitly distinguish itself from siblings like api_put or api_patch beyond the verb.
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?
No guidance is provided about when to use api_post versus api_get, api_put, api_patch, or swagger_fetch. The description merely states what it does, leaving the agent to infer selection criteria from the HTTP method alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_putC
PUT request to an API endpoint
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | API URL — absolute (https://host/path) or relative to the environment baseUrl (e.g. /users) | |
| data | Yes | Request body data | |
| params | No | Query parameters | |
| headers | No | Custom headers (merged on top of config + auth headers) | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| includeHeaders | No | Include sanitized response headers in the result (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'PUT request' faintly implies a side-effecting write operation, but the description does not mention authentication requirements, response shape, error behavior, or the impact of the request on the target resource.
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 a single, front-loaded sentence with no filler or repetition. It is appropriately short for a simple tool definition, even though it sacrifices helpful context for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, no annotations, and no output schema, the description is far too thin to fully orient an agent. It omits return behavior, response truncation semantics, environment handling, and how this tool relates to the other api_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema clearly documents url, data, params, headers, maxChars, environment, and includeHeaders. The prose description adds no parameter-level meaning, but the schema already carries that weight, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('PUT request') and the target ('API endpoint'), so an agent knows the tool performs HTTP PUT calls. However, it is very generic and does not explain what PUT is used for (e.g., replacing/updating a resource), and unlike richer sibling descriptions it offers little beyond the tool name.
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?
There is no guidance on when to use api_put versus api_post, api_patch, or api_delete, nor any mention of typical update/replace scenarios. The agent must infer usage entirely from the HTTP method name and sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_initA
Write a starter config.json (from config.example.json) so the user can fill it in. Writes to the resolved config path by default; will not overwrite unless force is true.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Where to write the config (default: the resolved config path). | |
| force | No | Overwrite an existing file (default: false). | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and it delivers: it discloses the default write location ('resolved config path') and the overwrite guard ('will not overwrite unless force is true'). It does not cover edge-case behavior such as what happens if the file already exists without force, but the core safety semantics are clear.
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, no filler, with the core action and default behavior front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-parameter tool, the description is largely complete: it explains what, why, where, and the no-overwrite guard. Minor gaps remain around return/output behavior and the no-force file-exists case, but these are partly covered by the schema's maxChars parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the meaning of path ('resolved config path') and force ('will not overwrite unless force is true') but adds little beyond what the schema already states.
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 names a specific verb ('Write'), resource ('starter config.json'), and source ('from config.example.json'), with the user-facing purpose 'so the user can fill it in'. This clearly sets it apart from sibling tools like config_status or the API call tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so the user can fill it in' implies the intended use case, but there is no explicit when-to-use or when-not-to-use guidance, and no alternative is named (e.g., config_status for checking an existing config). Usage context must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_statusA
Report where the config is looked for, whether it was found/loaded, the active environment, and the available environments. Use this to diagnose setup issues.
| Name | Required | Description | Default |
|---|---|---|---|
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly describes what the tool reports and implies a read-only diagnostic operation through the verb 'Report'. It does not explicitly state 'does not modify anything' or mention side effects, but for a status-reporting tool, the described behavior is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The core behavior is front-loaded, followed by a single clear usage directive. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one optional parameter and no output schema, the description is complete: it states what the tool reports and why to use it. The maxChars schema description also clarifies that output is text, covering the return format. Nothing essential is missing for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the only parameter maxChars fully documented in the schema. The tool description adds nothing about parameters, which is acceptable because the schema already explains the parameter's meaning and default behavior. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Report') and a clear resource: config lookup status. It enumerates the exact output components (where config is looked for, found/loaded, active environment, available environments), leaving no ambiguity about what the tool does. It also distinguishes itself from siblings like config_init and inspect_login by framing itself as a diagnostic status report.
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 states when to use this tool: 'Use this to diagnose setup issues.' This gives clear usage context. However, it does not name alternatives or exclusion conditions, so agents are not told when not to use it in favor of siblings like config_init.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_loginA
POST credentials to the login endpoint and return the raw response plus suggested token paths. Use this to discover the right auth.tokenPath (and verify auto-discovered loginUrl) without committing config.
| Name | Required | Description | Default |
|---|---|---|---|
| loginUrl | No | Login endpoint (defaults to auth.loginUrl, or auto-discovered from Swagger). | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| credentials | No | Credentials body to post (defaults to auth.credentials). | |
| environment | No | Environment name (defaults to the active environment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It discloses that the tool performs a live POST, returns raw response and token paths, and does not commit config, which is important safety-relevant behavior. It does not mention potential side effects of hitting a live login endpoint, but the core non-committing behavior is clearly stated.
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 two sentences with no filler. The first sentence front-loads the action and output; the second adds the use case and the key 'without committing config' caveat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given all parameters are documented in the schema and the description explains purpose, output, and non-committing behavior, this is reasonably complete. The absence of an output schema is mitigated by saying 'raw response plus suggested token paths,' though a bit more detail on failure behavior would make it stronger.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'POST credentials to the login endpoint' and clearly states the output ('raw response plus suggested token paths'). It also differentiates itself from generic API siblings by framing the tool as an auth-discovery helper for finding auth.tokenPath and verifying loginUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this to discover the right auth.tokenPath (and verify auto-discovered loginUrl) without committing config.' It implies this should be used during auth configuration discovery rather than as a general API call, though it does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swagger_fetchC
Fetch and summarize Swagger/OpenAPI documentation for an environment
| Name | Required | Description | Default |
|---|---|---|---|
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It doesn't disclose what 'summarize' entails (e.g., whether it returns a brief overview, includes endpoint lists, or truncates content), whether authentication is required, or any side effects. The lack of detail about output format and operational behavior is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it's also under-specified. It's not front-loaded with key information; the most distinctive aspect ('summarize') is buried in the middle. While brevity is good, the lack of structure and detail makes it less effective than it could be.
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 that there are no annotations, no output schema, and only a short description, the definition is incomplete. An agent cannot determine the return format, the difference between 'fetch' and 'summarize', or how this relates to the other swagger_* tools. The description fails to provide enough context for correct invocation and interpretation.
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%, with both parameters having descriptions (maxChars and environment). The description adds no additional meaning beyond what the schema provides, so it meets the baseline of 3. It doesn't clarify how maxChars interacts with 'summarize' or how the environment default works, but the schema already covers the basics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('Fetch') and a resource ('Swagger/OpenAPI documentation for an environment'), so it's not a tautology. However, it's generic and doesn't distinguish from sibling tools like swagger_list_endpoints or swagger_get_schema, which also deal with Swagger docs. The word 'summarize' adds some specificity but leaves ambiguity about the exact scope.
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?
No guidance is provided on when to use this tool versus the other swagger_* siblings. There's no mention of use cases, prerequisites, or conditions that would favor this over alternatives. The agent is left to infer from the name alone, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swagger_get_endpointC
Get detailed information about a specific endpoint from Swagger
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | API endpoint path (e.g., /api/users/{id}) | |
| method | Yes | HTTP method | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) | |
| resolveRefs | No | Inline $ref schema pointers (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. 'Get' implies a read-only operation, but the description does not explain output shape, auth or configuration needs, side effects, or how resolveRefs/maxChars affect returned data. The schema describes parameter effects but not the broader behavior.
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 a single sentence with no filler, and the core purpose is front-loaded. It is concise and easy to parse, though slightly under-specified for a tool with five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and a five-parameter input schema. The description does not clarify what 'detailed information' includes, how responses are structured, or what setup may be required. An agent could infer basic invocation from the schema but lacks important behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-level meaning; it relies on the detailed schema for path, method, maxChars, environment, and resolveRefs semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and resource ('detailed information about a specific endpoint from Swagger'). The word 'specific' hints at differentiation from list-type siblings, but no explicit distinction from related tools like swagger_fetch or swagger_list_endpoints is made.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as swagger_list_endpoints, swagger_get_schema, or api_get. It does not state preconditions, exclusions, or which sibling should be chosen in other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swagger_get_schemaC
Get a schema/model definition from Swagger documentation
| Name | Required | Description | Default |
|---|---|---|---|
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| schemaName | Yes | Name of the schema/model (e.g., UserDto, CreateUserRequest) | |
| environment | No | Environment name (defaults to the active environment) | |
| resolveRefs | No | Inline nested $ref pointers (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read-only 'Get' operation but omits any detail about response format, truncation, $ref resolution, or environment handling. It adds little behavioral context beyond the tool name.
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 a single, direct sentence with no filler or repetition. It front-loads the action and object, though it is terse enough that it sacrifices some useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does not explain what the tool returns, how errors or missing schemas are handled, or when it should be preferred over sibling tools. The parameter schema carries most of the operational burden, but the overall definition is not complete for deciding and invoking correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema documents all four parameters with descriptions, giving 100% schema coverage, so the description does not need to repeat them. The description adds no extra parameter meaning beyond identifying the target as a schema/model, which maps to schemaName.
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 uses a specific verb ('Get') and names a specific resource: a schema/model definition from Swagger documentation. This distinguishes it from sibling tools focused on endpoints or API requests, though it does not explicitly contrast itself with swagger_get_endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like swagger_list_endpoints or swagger_get_endpoint. There are no prerequisites, exclusions, or workflow hints—only the tool name and noun phrase imply its purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swagger_list_endpointsB
List API endpoints from Swagger. Optionally fuzzy-search by keyword and/or filter by tag and method.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter endpoints by tag/controller name | |
| limit | No | Max number of endpoints to return | |
| method | No | Filter by HTTP method | |
| search | No | Fuzzy keyword(s) matched across path, summary, description, tags and operationId (space-separated terms, ranked by matches). | |
| maxChars | No | Max characters in the returned text (0 = unlimited; defaults to config.maxResponseChars). | |
| environment | No | Environment name (defaults to the active environment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It clearly implies a read-only listing operation and mentions optional fuzzy search and tag/method filtering, but it does not say anything about output format, ordering, ranking, or result size. It is not misleading, but it is thin on behavioral detail.
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 a single front-loaded sentence that states the core action first and then the optional narrowing dimensions. There is no filler, parenthetical clutter, or repetition of schema content.
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 listing/search tool with a fully documented 6-parameter schema, the description plus schema covers the main invocation choices well. It does not describe the response format or default result limits, but 'List API endpoints' and the maxChars parameter make the return kind sufficiently clear for an agent to proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The tool description only re-identifies 'keyword', 'tag', and 'method' filtering, which adds minimal meaning beyond the structured parameter descriptions. 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 names a specific verb ('List') and resource ('API endpoints from Swagger'), and adds that results can be narrowed by keyword, tag, and method. It is clear on its own, but it does not explicitly contrast itself with sibling tools such as swagger_get_endpoint or swagger_fetch, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what filters are available, but it gives no guidance on when to choose this tool over alternatives like swagger_get_endpoint, api_get, or swagger_get_schema. There are no exclusions, prerequisites, or 'use X instead' hints, so an agent must infer the appropriate context from the tool name alone.
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.
12 tool updates
v2.3.1- First observed
api_delete - First observed
api_get - First observed
api_patch - First observed
api_post - First observed
api_put - First observed
config_init - First observed
config_status - First observed
inspect_login - First observed
swagger_fetch - First observed
swagger_get_endpoint - First observed
swagger_get_schema - First observed
swagger_list_endpoints
TDQS
Scored across 12 tools
Tools are mostly distinct: HTTP methods are separate, Swagger exploration tools have clear purposes (summary vs list vs detail vs schema). Minor ambiguity exists between swagger_fetch (summarize docs) and swagger_list_endpoints (list endpoints), but descriptions resolve it.
Most tools follow a resource_action pattern (api_get, swagger_fetch, config_status). inspect_login breaks the pattern by putting the verb first, but the overall convention is still readable and predictable.
12 tools is well within the ideal range for a REST/OpenAPI server, with no redundancy. Each tool serves a distinct need from documentation exploration to HTTP requests and configuration.
The tool surface covers the full workflow: fetching OpenAPI docs, discovering endpoints and schemas, performing all standard HTTP methods, handling login/token discovery, and managing configuration. No obvious dead ends.
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
- ElaichiOAuthai.elaichi
Governed AI agents for the software your company already runs. 400+ connectors, one endpoint.
Related MCP Servers
- AlicenseAqualityDmaintenanceA service that dynamically generates MCP tools from Swagger/OpenAPI documentation, allowing Claude Desktop to directly invoke REST APIs through natural language.518 npmMIT
- AlicenseAqualityCmaintenanceEnables interaction with any REST API through token or login authentication, with automatic Swagger/OpenAPI documentation integration for endpoint discovery and comprehensive HTTP request support.7MIT
- AlicenseNot gradedqualityDmaintenanceDynamically generates MCP tools from OpenAPI specifications, enabling AI assistants to interact with any REST API through natural language. Supports multiple APIs with authentication, parameter validation, and integration with Claude Desktop and LangChain.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop and other MCP clients to interact with any OAuth2-authenticated OpenAPI-based API through automatic tool generation from OpenAPI specifications, with built-in token management and authentication handling.5 npm3MIT