Skip to main content
Glama
tzenderman

Cin7 Core Meta MCP Server

by tzenderman

Cin7 Core Meta MCP Server

This is a Model Context Protocol (MCP) server for the Cin7 Core (DEAR) API. Instead of exposing one tool per Cin7 endpoint, this server exposes three generic API-walking tools plus a structured bug-report tool. The model finds what it needs at runtime: list endpoints → read an endpoint's schema → invoke it.

It's a sibling to mcp-cin7-core — that server ships hand-curated tools (cin7_products, cin7_create_purchase_order, …) for common operations. This one covers the full Cin7 Core API surface (Brands, Categories, Carriers, Chart of Accounts, Disassembly, Finished Goods, anything Cin7 ships) with a tiny tool list that doesn't grow as the API grows. Both servers can be installed in the same client; they're complementary.

Features

  • Four MCP tools that cover the full Cin7 Core REST API surface

  • API-walking pattern (list → describe → invoke) keeps the tool list tiny

  • Request validation against a vendored API Blueprint spec — unknown endpoints, wrong methods, missing required params, and type mismatches are caught before any network call

  • Rate-limit passthrough — Cin7's X-RateLimit-Remaining header is surfaced so the model can self-throttle

  • Structured bug-report tool — appends ISSUE_REPORT <json> to both a controlled file and stderr

  • ScaleKit OAuth 2.0 / Streamable HTTP transport for remote deployments

  • Stdio transport for local Claude Desktop integration

  • MCP protocol compliance

Related MCP server: Swagger/Postman MCP Server

Prerequisites

  • Python 3.10+

  • uv package manager

  • A Cin7 Core (DEAR) account with API access — get your AccountID and Application Key from Integrations → API

Setup

Get Cin7 Core API credentials

  1. Log in to Cin7 Core (DEAR)

  2. Navigate to Integrations → API

  3. Copy the AccountID and create/copy the Application Key

Authentication

There are 2 modes of running the Cin7 Core Meta MCP server:

This mode runs the server as a web service with OAuth 2.0 authentication via ScaleKit. This is the recommended approach for shared or remote deployments, including connecting via Claude Desktop's remote MCP connector.

Required environment variables:

  • CIN7_ACCOUNT_ID - Your Cin7 AccountID

  • CIN7_API_KEY - Your Cin7 Application Key

  • SCALEKIT_ENVIRONMENT_URL - ScaleKit environment URL (e.g., https://yourapp.scalekit.com)

  • SCALEKIT_CLIENT_ID - ScaleKit application client ID

  • SCALEKIT_CLIENT_SECRET - ScaleKit application client secret

  • SCALEKIT_RESOURCE_ID - ScaleKit resource identifier (e.g., res_xxx)

  • SCALEKIT_INTERCEPTOR_SECRET - Secret for verifying interceptor payloads

  • SERVER_URL - Your MCP server's public URL (e.g., https://your-server.example.com)

Optional:

  • ALLOWED_EMAILS - Comma-separated list of allowed email addresses (leave empty to allow all authenticated users)

  • CIN7_BASE_URL - Override the Cin7 base URL (default https://inventory.dearsystems.com/ExternalApi/v2/)

  • CIN7_READ_ONLY - Set to 1 to execute GET requests only; every other verb is refused before the network. See Read-only mode.

  • ISSUE_REPORT_PATH - Where report_issue appends its ISSUE_REPORT <json> lines (default ./data/issue_reports.log)

  • MCP_LOG_LEVEL - Logging level (default INFO)

  • MCP_LOG_FILE - Enable file logging with rotation

Running the server:

uv run python -m cin7_meta.server_http

Endpoints:

  • GET /health - Health check (no auth required)

  • GET /.well-known/oauth-protected-resource - OAuth discovery (no auth required)

  • POST /mcp - MCP endpoint (requires OAuth 2.0 Bearer token)

Connecting from Claude Desktop (remote):

  1. Deploy your server (e.g., to Render — see render.yaml)

  2. Open Claude Desktop > Settings > Connectors

  3. Click "Add Connector" and enter your server URL: https://your-server.com/mcp

  4. Claude will auto-discover OAuth configuration

  5. Click "Authorize" and log in

See CLAUDE.md for detailed ScaleKit setup and interceptor configuration.

2. Stdio Transport (Local development)

This mode runs the server locally using stdio transport for direct integration with Claude Desktop. No OAuth configuration needed — Cin7 credentials are used directly.

Required environment variables:

  • CIN7_ACCOUNT_ID

  • CIN7_API_KEY

Optional: CIN7_BASE_URL, CIN7_READ_ONLY, ISSUE_REPORT_PATH, MCP_LOG_LEVEL, MCP_LOG_FILE.

Claude Desktop configuration:

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "cin7-meta": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mcp-cin7-meta",
        "run",
        "python",
        "-m",
        "cin7_meta.server_stdio"
      ],
      "env": {
        "CIN7_ACCOUNT_ID": "your-account-id",
        "CIN7_API_KEY": "your-application-key"
      }
    }
  }
}

Replace /absolute/path/to/mcp-cin7-meta with the actual path to your clone of this repository.

If you're running both servers together, give them distinct names (e.g. cin7-core for the curated server and cin7-meta for this one) so Claude lists their tools separately.

Installation

# Create virtual environment and install dependencies
uv venv
uv pip install -e .

# Quick import check
uv run python -c "import cin7_meta.server; print('OK')"

Vendor the API Blueprint spec (one-time)

This server validates requests against a vendored API Blueprint that ships at cin7_meta/spec/cin7_v2.apib, plus a derived normalized JSON catalog at cin7_meta/spec/cin7_v2.json. A fresh clone won't have these — generate them:

uv run python scripts/refresh_spec.py

Re-run any time the Cin7 API changes or you want to pick up new endpoints. See docs/spec_refresh.md for the full workflow.

Testing with MCP Inspector

# Start the HTTP server
uv run python -m cin7_meta.server_http

# In another terminal, open MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3000/mcp

Available MCP Tools

API walking:

  • list_api_endpoints(keyword, methods, limit) — Ranked keyword search across endpoint paths, summaries, groups, and parameter names. Returns {"results": [...], "total": int, "truncated": bool}.

  • get_api_endpoint_schema(method, path) — Return the full schema for one endpoint: query params (with types and defaults), request body schema, response schema, and JSON examples.

Execution:

  • invoke_api_endpoint(method, path, query_params, body) — Validate, then execute, an arbitrary Cin7 Core API call. Validation errors (unknown endpoint, wrong method, missing required param, type mismatch) are returned without a network call. Returns {"status", "data", "rate_limit_remaining"} — use rate_limit_remaining for self-throttling. Under CIN7_READ_ONLY=1 any non-GET call is refused without a network call.

Issue reporting:

  • report_issue(summary, tool_name, tool_arguments, observed_behavior, expected_behavior, ...) — File a structured bug report when a tool doesn't behave as expected. Each report is appended as one ISSUE_REPORT <json> line to data/issue_reports.log and emitted on stderr in the same format, so reports survive even on hosts with ephemeral filesystems (Render's log stream captures the stderr line). Returns a report_id the model can quote in follow-ups.

For detailed signatures, examples, and return shapes, see docs/tools.md.

For the underlying Cin7 Core API documentation, refer to the Cin7 Core API Reference.

For Developers

Running Tests

# Full test suite
uv run pytest -v

# Quick pass/fail check
uv run pytest --tb=short

# Specific test file
uv run pytest tests/test_invoke_api_endpoint.py -v

Contributing — Test-Driven Development

This project follows a strict test-driven development (TDD) workflow. Every utility and tool was implemented test-first:

  1. Add fixtures to tests/fixtures/ — either using the small hand-rolled mini_spec.py (fast, deterministic) or the vendored cin7_v2.json for contract tests

  2. Write failing tests — unit tests against the mini spec, contract tests against the real vendored spec where relevant

  3. Implement to make the tests pass

No new code should be merged without corresponding test coverage. See CLAUDE.md for detailed test patterns, the mock_cin7 fixture, and the EXPECTED_TOOLS registration assertion.

Architecture

  • cin7_client.py - Async REST client for the Cin7 Core API with retry and error handling (ported from mcp-cin7-core)

  • spec_loader.py - Loads the vendored normalized JSON catalog at startup, builds the in-memory endpoint and search indexes

  • spec_parser.py - Parses API Blueprint markdown into the normalized JSON catalog (used by scripts/refresh_spec.py)

  • spec_search.py - Ranked substring search over the spec index (exact path > prefix > substring > summary/param-name match)

  • validator.py - Validates query params (unknowns, required, types) and body (required fields) against the loaded spec; returns structured error responses instead of raising

  • issue_reporter.py - Single-function entry point for report_issue storage — appends one ISSUE_REPORT <json> line to a controlled file and to stderr

  • session_store.py - In-memory session storage with TTL (ported)

  • server.py - FastMCP server with the four tool registrations

  • server_http.py - Starlette wrapper with MCP Streamable HTTP transport and ScaleKit OAuth (ported)

  • server_stdio.py - Stdio transport for local Claude Desktop integration

  • resources/ - Tool implementations (endpoints.py, invoke.py, issues.py)

  • utils/ - Shared utilities

See CLAUDE.md for comprehensive development documentation, test patterns, and architecture details.

Read-only mode

This server exposes exactly one data tool, invoke_api_endpoint, and it walks the entire Cin7 REST spec — so the same tool that fetches a sale order can also create or void one. There is no read-only subset to grant instead. That makes the tool ungrantable to an agent whose read-only boundary is absolute, no matter how the consuming host's tool allowlist is written.

Setting CIN7_READ_ONLY=1 fixes that at the server:

"env": {
  "CIN7_ACCOUNT_ID": "...",
  "CIN7_API_KEY": "...",
  "CIN7_READ_ONLY": "1"
}

Accepted truthy values: 1, true, yes, on (case-insensitive, surrounding whitespace ignored). Anything else — including unset — leaves the server in normal read-write mode, so existing deployments are unaffected.

What it does. Only GET is executed. POST, PUT, PATCH and DELETE are refused before any request is built, so no write can reach Cin7. Enforcement sits in two independent places, neither load-bearing alone:

  1. invoke_api_endpoint checks first and returns a structured error on the same shape as a validation failure, so the model reads a clear refusal;

  2. Cin7Client.invoke() raises Cin7ReadOnlyError — the chokepoint every request passes through, including any future caller that skips layer 1.

The server's MCP instructions also announce the mode, so the model is told up front rather than discovering it by failing.

What it does not do. list_api_endpoints still returns write endpoints: it describes the Cin7 API, not your permissions. Discovery is harmless; execution is what is blocked.

This is a second layer, not the only one. The consuming host should still grant the tool deliberately. The point is that the guarantee no longer depends on the host's allowlist or on the model's restraint — it holds inside this process.

Security

Do not commit your .env file or any Cin7 API credentials to version control (it is included in .gitignore as a safe default).

Issue reports written by report_issue may contain raw request bodies, query parameters, and response excerpts — review data/issue_reports.log before sharing it with anyone outside the project.

License

MIT

Available Tools

4 tools
get_api_endpoint_schemaA

Return the full schema for one Cin7 API endpoint.

Args: method: HTTP verb. Case-insensitive. path: Endpoint path. Leading slashes are stripped; the lookup is case-sensitive on the path itself.

Returns: {"method","path","group","summary","description", "query_params","request_body_schema","request_body_example", "response_schema","response_example"}. On unknown endpoint, returns {"error": "..."} with a did_you_mean hint if a close match exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided; description details case-insensitivity for method, leading slash stripping for path, case-sensitive lookup, and the return object structure with error handling including did_you_mean hint. Lacks discussion of auth or rate limits, but core behavior is well covered.

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

Conciseness5/5

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

The description is concise, front-loaded with purpose, and well-structured with Args and Returns sections. Every sentence provides value without waste.

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

Completeness5/5

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

Given the tool's complexity (retrieving a schema), an output schema exists (so return values are documented separately). The description covers input behavior, error handling, and hints at the output structure, making it complete for an agent to use correctly.

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?

With 0% schema description coverage, the description adds essential meaning: case-insensitivity for method, and path processing details (leading slash stripped, case-sensitive lookup). This goes beyond the simple type info in the schema.

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

Purpose5/5

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

The description clearly states 'Return the full schema for one Cin7 API endpoint' with a specific verb and resource. It distinguishes from sibling tools like invoke, list, and report.

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

Usage Guidelines3/5

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

The description implies when to use (when schema is needed) but does not explicitly provide when-not-to-use or compare with alternatives like invoke_api_endpoint or list_api_endpoints.

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

invoke_api_endpointA

Validate, then execute, a Cin7 Core REST API call.

Args: method: HTTP verb (GET, POST, PUT, PATCH, DELETE). Case-insensitive. path: Endpoint path, e.g. "Product", "advanced-purchase", "sale/order". Leading slashes are stripped. query_params: Query-string parameters. Validated against the endpoint's declared params. body: JSON request body. Validated against the endpoint's required body fields (extras are permitted).

Returns: Success: {"status": 200, "data": <json>, "rate_limit_remaining": "59"}. Cin7 4xx response: {"status": 4xx, "data": <body or null>, "errors": [...]}. Validation failure: {"status": null, "data": null, "errors": [...]}.

Raises: Cin7AuthError | Cin7NotFoundError | Cin7RateLimitError | Cin7APIError: Transport-level failures the model cannot fix.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
pathYes
query_paramsNo
bodyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: validation then execution, specific return structures for success, 4xx errors, and validation failures, plus a list of transport-level exceptions. It also mentions case-insensitivity and leading-slash stripping.

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

Conciseness4/5

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

The description is somewhat lengthy but well-structured with bullet points. It front-loads the purpose, then details args, returns, and exceptions. Every sentence is informative, though slight trimming could be done while maintaining clarity.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, validation, multiple return types, exceptions) and the presence of an output schema (not shown), the description provides comprehensive coverage: parameter semantics, return value formats, error handling, and exceptions. No gaps remain.

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

Parameters5/5

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

Schema coverage is 0%, but the description thoroughly explains all four parameters: method (case-insensitive, allowed verbs), path (example, leading slashes stripped), query_params (validated against endpoint schema), and body (validated, extras permitted). It compensates fully for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states the tool validates then executes a Cin7 Core REST API call. It lists the HTTP method and endpoint path, distinguishing it from sibling tools that retrieve schemas or list endpoints.

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

Usage Guidelines4/5

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

The description provides detailed parameter explanations, validation steps, and expected return formats. It does not explicitly contrast with alternatives like get_api_endpoint_schema, but it gives sufficient context for when to invoke this tool.

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

list_api_endpointsA

Search Cin7 Core's REST endpoints by keyword.

Args: keyword: Substring to match against path, summary, group, and parameter names. Case-insensitive. methods: Optional list of HTTP methods to restrict results to. Valid values: GET, POST, PUT, PATCH, DELETE. limit: Maximum number of results to return. Default 25.

Returns: {"results": [{"method","path","summary","group"}, ...], "total": int, "truncated": bool}. On empty keyword, returns the same shape with an additional error key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
methodsNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description discloses the return format ('Returns: ...'), including handling of empty keyword (extra 'error' key). It describes search behavior (case-insensitive substring match). No side effects are mentioned, but it's a read operation. The description is transparent about what the tool does and returns.

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

Conciseness5/5

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

The description is well-structured with 'Args:' and 'Returns:' sections. Each sentence adds value without redundancy. It is concise yet thorough.

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

Completeness4/5

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

The description covers purpose, parameters, and return format comprehensively. It lacks mention of authentication requirements or potential errors (beyond empty keyword), but given the output schema exists and the tool is straightforward, it is mostly complete.

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

Parameters5/5

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

The description fully explains each parameter beyond the schema: keyword (substring match, case-insensitive), methods (optional, valid HTTP methods), limit (max results, default 25). Schema has 0% coverage, so the description compensates completely.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Search Cin7 Core's REST endpoints by keyword.' It specifies the action (search), the resource (endpoints), and distinguishes from siblings like get_api_endpoint_schema (get schema) and invoke_api_endpoint (invoke).

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

Usage Guidelines3/5

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

The description implies usage (search endpoints) but does not explicitly state when to use this tool vs alternatives (e.g., get_api_endpoint_schema for details on a specific endpoint). No when-not-to-use guidance is provided.

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

report_issueA

File a structured bug report for later developer review.

Args: summary: One-line headline of what went wrong. tool_name: Which MCP tool was being used when the issue occurred. One of list_api_endpoints, get_api_endpoint_schema, invoke_api_endpoint. tool_arguments: The exact kwargs you passed to the tool. Include enough information for someone else to reproduce the call. observed_behavior: What actually happened. Be specific. expected_behavior: What you expected to happen instead. severity: low, medium, or high. Default medium. error_message: Exception class + message, if one was raised. response_excerpt: Truncated snippet of the response body. Capped at 2000 chars. client_context: Optional notes — model name, conversation topic, any context that would help the developer reproduce.

Returns: {"report_id", "stored_in_file", "stored_in_log", "thanks"} on success, or {"error": "..."} if a required field is invalid.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYes
tool_nameYes
tool_argumentsYes
observed_behaviorYes
expected_behaviorYes
severityNomedium
error_messageNo
response_excerptNo
client_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Without annotations, the description carries full burden. It explains parameters and return values but does not disclose behavioral traits like idempotency, safety, side effects (e.g., whether it mutates state or requires permissions). The return includes 'stored_in_file' and 'stored_in_log,' suggesting storage, but this is not explicitly stated.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections. It is front-loaded with the purpose. However, some details (like default values) are repeated from the schema, and the description could be slightly shortened without losing clarity.

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

Completeness5/5

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

Given the complexity (9 parameters, output schema), the description covers all aspects: purpose, parameters, return values, and error case. It provides sufficient context for an agent to correctly invoke the tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It provides detailed explanations for all 9 parameters, including enum values, defaults, and constraints (e.g., 'Capped at 2000 chars'), adding significant 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 starts with 'File a structured bug report for later developer review,' which clearly states the verb and resource. The tool is distinct from its siblings (get_api_endpoint_schema, invoke_api_endpoint, list_api_endpoints), as it is for reporting issues, not exploring APIs.

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

Usage Guidelines4/5

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

The description implies usage for bug reporting but does not explicitly state when to use this tool versus alternatives. The context and siblings make it clear, but there is no explicit guidance on exclusions or conditions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedget_api_endpoint_schema
    • First observedinvoke_api_endpoint
    • First observedlist_api_endpoints
    • First observedreport_issue

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a unique, clearly defined purpose: listing endpoints, getting schemas, invoking endpoints, and reporting issues. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., get_api_endpoint_schema, invoke_api_endpoint, list_api_endpoints, report_issue).

Tool Count5/5

With 4 tools, the server is well-scoped for managing API interactions (discovery, schema inspection, execution, and issue reporting). Neither too sparse nor excessive.

Completeness4/5

The set covers core workflows: discover endpoints, fetch schemas, make API calls, and report issues. A minor gap is the lack of explicit rate limit querying, but rate limit info is included in invocation responses.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Server that ingests Swagger/OpenAPI specifications and Postman collections, providing just 4 strategic tools that allow AI agents to dynamically discover and interact with APIs instead of generating hundreds of individual tools.
    3
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to dynamically discover and interact with APIs through Swagger/OpenAPI specifications and Postman collections using a strategic four-tool approach. It streamlines API integration by providing universal tools for endpoint discovery, detailed request information, and authenticated execution.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes the full Chatwoot API as 129 tools for AI assistants, enabling account, contact, conversation, message, inbox, team, report, help center, automation, and custom attribute management, plus exclusive Kanban and scheduled message features.
    27
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Exposes all 379 Invoice Ninja v5 REST API endpoints through three consolidated tools (list, describe, call), enabling full invoice management and business operations via natural language.
    3
    27
    AGPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tzenderman/mcp-cin7-meta'

If you have feedback or need assistance with the MCP directory API, please join our Discord server