MCP

MCP server

One remote MCP server gives your agent every app on your account as tools. Add it once; new apps show up as you get access.

Server

MCP server details
SettingValue
URLhttps://cotlet.dev/mcp/v1
TransportStreamable HTTP
AuthAuthorization: Bearer COTLET_API_KEY or OAuth sign-in in clients that support it
Protocol versions2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05

Connect a client

Claude Code
claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
Claude Desktop
Settings > Connectors > Add custom connector
Name: Cotlet
URL:  https://cotlet.dev/mcp/v1
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1
Authentication: OAuth
n8n
Node: MCP Client Tool
Endpoint: https://cotlet.dev/mcp/v1
Authentication: Header Auth
  Name:  Authorization
  Value: Bearer <your key>

Product names are trademarks of their owners. Cotlet is not affiliated with them.

Tools

Each endpoint is one tool named {app}_{endpoint}, such as skool_list_members. Its input schema is the same JSON Schema as the REST endpoint.

  • tools/list returns the tools of every app; it needs no key.
  • Read endpoints carry readOnlyHint: true, so clients can run them without asking.
  • Each app is also a resource, cotlet://apps/{app}, with its description and endpoints.

Too many tools for your agent? Keep only the apps you use: add ?apps=skool,booksy to the server URL.

Calling a tool

Agents call tools for you; this is what goes over the wire.

tools/call

curl -X POST https://cotlet.dev/mcp/v1 \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
       "params": {"name": "skool_list_members", "arguments": {"group": "yourgroup"}}}'

The result carries the output twice: as structuredContent for code and as JSON text for the model.

Errors

A failed tool call returns a result with isError: true and a message your agent can act on, with the same codes as the REST API.

Result

{
  "content": [{ "type": "text", "text": "AUTH_EXPIRED: your Skool session expired. Ask the user to sign in again: https://cotlet.dev/app/connect/skool" }],
  "isError": true
}

MCP or REST?

Use MCP when an agent decides what to call. Use REST at https://cotlet.dev/api/v1 when your own code does: same key, same inputs, same outputs.