# Cakto (remote · api.mcp.ai)

Read your Cakto sales: orders, revenue analytics, subscriptions, churn, customers and products.

- Trust score: 74/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-26

## Components

- remote · `api.mcp.ai`: 74/100 (this document), [markdown](https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto.md), [page](https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto)

## Channel facts

- Endpoint: `https://api.mcp.ai/p_cakto`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-26.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4147 tokens (~153/item across 27 items; 27 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 27 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Cakto MCP server?

Cakto is a hosted endpoint at https://api.mcp.ai/p_cakto, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http mcp-dir-cakto-mcp 'https://api.mcp.ai/p_cakto'
```

### Cursor

```json
{
  "mcpServers": {
    "mcp-dir-cakto-mcp": {
      "url": "https://api.mcp.ai/p_cakto"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "mcp-dir-cakto-mcp": {
      "type": "http",
      "url": "https://api.mcp.ai/p_cakto"
    }
  }
}
```

### Codex

```toml
[mcp_servers.mcp-dir-cakto-mcp]
url = "https://api.mcp.ai/p_cakto"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp-dir-cakto-mcp": {
      "type": "remote",
      "url": "https://api.mcp.ai/p_cakto",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mcp-dir-cakto-mcp --url 'https://api.mcp.ai/p_cakto' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  mcp-dir-cakto-mcp:
    url: "https://api.mcp.ai/p_cakto"
```

### Netclaw

```json
{
  "McpServers": {
    "mcp-dir-cakto-mcp": {
      "Transport": "http",
      "Url": "https://api.mcp.ai/p_cakto"
    }
  }
}
```

### Vellum

```bash
assistant mcp add mcp-dir-cakto-mcp -t streamable-http -u 'https://api.mcp.ai/p_cakto'
```

### Other

```json
{
  "mcpServers": {
    "mcp-dir-cakto-mcp": {
      "type": "http",
      "url": "https://api.mcp.ai/p_cakto"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-26 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-25 (score 73, −3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-23 (score 76, +1)

- [security] Stability: 0.97 → pass

### 2026-09-21 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 72, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 0.9.346 → 0.9.351

### 2026-09-12 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (27)

### `cakto_list_accounts` (~40 tokens)

Lista contas Cakto (apps do painel) vinculadas a este install — id, label e apelido.

Input parameters:

- `account` (string)

### `cakto_orders_list` (~225 tokens)

Leitura de pedidos na Cakto.
Ações:
\- list: lista pedidos (filtros: status csv ex "paid,refunded", type unique|subscription, offer_type main|upsell|downsell|orderbump, payment_method, customer, product, paid_at_gte/paid_at_lt (YYYY-MM-DD), page).
\- get: detalhe de UM pedido (requer order_id).
Retorna os dados crus da Cakto (paginação count/next/previous/results).

[Flattened action: list]

Bulk support: accepts order_ids for batched execution.

Input parameters:

- `account` (string)
- `customer` (string)
- `offer_type` (string)
- `order_id` (string)
- `order_ids` (array)
- `page` (number)
- `paid_at_gte` (string)
- `paid_at_lt` (string)
- `payment_method` (string)
- `product` (string)
- `status` (string)
- `type` (string)

### `cakto_orders_get` (~225 tokens)

Leitura de pedidos na Cakto.
Ações:
\- list: lista pedidos (filtros: status csv ex "paid,refunded", type unique|subscription, offer_type main|upsell|downsell|orderbump, payment_method, customer, product, paid_at_gte/paid_at_lt (YYYY-MM-DD), page).
\- get: detalhe de UM pedido (requer order_id).
Retorna os dados crus da Cakto (paginação count/next/previous/results).

[Flattened action: get]

Bulk support: accepts order_ids for batched execution.

Input parameters:

- `account` (string)
- `customer` (string)
- `offer_type` (string)
- `order_id` (string)
- `order_ids` (array)
- `page` (number)
- `paid_at_gte` (string)
- `paid_at_lt` (string)
- `payment_method` (string)
- `product` (string)
- `status` (string)
- `type` (string)

### `cakto_orders_analytics` (~147 tokens)

Analytics de vendas na Cakto: métricas financeiras agregadas por canal/campanha.
Agrupe por group_by (utm_source|utm_medium|utm_campaign) e filtre por período
(start_date/end_date no formato DD-MM-YYYY neste endpoint). Retorna gross_volume,
net_value, total_fees, total_discount e order_count (valores como string, precisão
decimal). Vendas sem UTM aparecem como "(unclassified)".

Input parameters:

- `account` (string)
- `end_date` (string)
- `group_by` (string)
- `offer` (string)
- `product` (string)
- `start_date` (string)

### `cakto_subscriptions_list` (~162 tokens)

Leitura de assinaturas na Cakto.
Ações:
\- list: lista assinaturas (filtros: status, payment_method, current_situation new|renewed, search, ordering, limit, page).
\- get: detalhe de UMA assinatura (requer subscription_id).

[Flattened action: list]

Bulk support: accepts subscription_ids for batched execution.

Input parameters:

- `account` (string)
- `current_situation` (string)
- `limit` (number)
- `ordering` (string)
- `page` (number)
- `payment_method` (string)
- `search` (string)
- `status` (string)
- `subscription_id` (string)
- `subscription_ids` (array)

### `cakto_subscriptions_get` (~162 tokens)

Leitura de assinaturas na Cakto.
Ações:
\- list: lista assinaturas (filtros: status, payment_method, current_situation new|renewed, search, ordering, limit, page).
\- get: detalhe de UMA assinatura (requer subscription_id).

[Flattened action: get]

Bulk support: accepts subscription_ids for batched execution.

Input parameters:

- `account` (string)
- `current_situation` (string)
- `limit` (number)
- `ordering` (string)
- `page` (number)
- `payment_method` (string)
- `search` (string)
- `status` (string)
- `subscription_id` (string)
- `subscription_ids` (array)

### `cakto_subscription_churn` (~78 tokens)

Assinaturas perdidas: lista canceladas/inativas do negócio + métricas agregadas (valor em risco, nº de clientes afetados). Filtros de período opcionais.

Input parameters:

- `account` (string)
- `end_date` (string)
- `page` (number)
- `start_date` (string)

### `cakto_customers_list` (~114 tokens)

Leitura de clientes na Cakto (para análise/CRM).
Ações:
\- list: lista clientes (filtros: search, page).
\- get: perfil de UM cliente + histórico de compras (requer customer_id).

[Flattened action: list]

Bulk support: accepts customer_ids for batched execution.

Input parameters:

- `account` (string)
- `customer_id` (string)
- `customer_ids` (array)
- `page` (number)
- `search` (string)

### `cakto_customers_get` (~114 tokens)

Leitura de clientes na Cakto (para análise/CRM).
Ações:
\- list: lista clientes (filtros: search, page).
\- get: perfil de UM cliente + histórico de compras (requer customer_id).

[Flattened action: get]

Bulk support: accepts customer_ids for batched execution.

Input parameters:

- `account` (string)
- `customer_id` (string)
- `customer_ids` (array)
- `page` (number)
- `search` (string)

### `cakto_products` (~145 tokens)

Lista produtos da conta na Cakto (paginado: count/next/previous/results).
Filtros opcionais: search, product_id (um id ou vários separados por vírgula — é
assim que se lê UM produto específico), status, type, ordering, limit, page.

Bulk support: accepts product_ids for batched execution.

Input parameters:

- `account` (string)
- `limit` (number)
- `ordering` (string)
- `page` (number)
- `product_id` (string)
- `product_ids` (array)
- `search` (string)
- `status` (string)
- `type` (string)

### `cakto_products_create` (~119 tokens)

Cria um produto na Cakto. A criação já gera automaticamente a oferta
padrão e o checkout do produto (não existe endpoint separado de criar checkout).
Requer o escopo "write products" no app do Painel Cakto.

Input parameters:

- `account` (string)
- `category` (string)
- `description` (string, required)
- `guarantee` (number)
- `name` (string, required)
- `price` (string)
- `sales_page` (string)
- `type` (string)

### `cakto_products_update` (~236 tokens)

Atualiza um produto existente na Cakto. A atualização é PARCIAL: envie
só os campos que quer alterar. Use status="blocked" para tirar o produto de
circulação sem apagá-lo. Requer o escopo "write products".

Bulk support: accepts product_ids for batched execution.

Input parameters:

- `account` (string)
- `affiliate` (boolean)
- `affiliate_commission` (number)
- `category` (string)
- `default_payment_method` (string)
- `description` (string)
- `guarantee` (number)
- `image` (string)
- `installments` (number)
- `invoice_description` (string)
- `name` (string)
- `payment_methods` (array)
- `price` (string)
- `producer_name` (string)
- `product_id` (string, required)
- `product_ids` (array)
- `sales_page` (string)
- `status` (string)
- `support_email` (string)
- `support_whatsapp` (string)
- `type` (string)

### `cakto_offers_list` (~196 tokens)

Leitura de ofertas na Cakto. A oferta é a unidade de PREÇO de um produto
(cada produto nasce com uma oferta padrão) e é o alvo de um order bump — um bump
aponta para uma OFERTA, nunca para o produto direto.
Ações:
\- list: lista ofertas (filtros: product, status, type, search, ordering, limit, page).
\- get: detalhe de UMA oferta (requer offer_id).

[Flattened action: list]

Bulk support: accepts offer_ids for batched execution.

Input parameters:

- `account` (string)
- `limit` (number)
- `offer_id` (string)
- `offer_ids` (array)
- `ordering` (string)
- `page` (number)
- `product` (string)
- `search` (string)
- `status` (string)
- `type` (string)

### `cakto_offers_get` (~196 tokens)

Leitura de ofertas na Cakto. A oferta é a unidade de PREÇO de um produto
(cada produto nasce com uma oferta padrão) e é o alvo de um order bump — um bump
aponta para uma OFERTA, nunca para o produto direto.
Ações:
\- list: lista ofertas (filtros: product, status, type, search, ordering, limit, page).
\- get: detalhe de UMA oferta (requer offer_id).

[Flattened action: get]

Bulk support: accepts offer_ids for batched execution.

Input parameters:

- `account` (string)
- `limit` (number)
- `offer_id` (string)
- `offer_ids` (array)
- `ordering` (string)
- `page` (number)
- `product` (string)
- `search` (string)
- `status` (string)
- `type` (string)

### `cakto_offers_create` (~172 tokens)

Cria uma oferta (preço alternativo) para um produto existente na Cakto.
É o passo necessário para ter o que oferecer num order bump com preço diferente
do principal. Requer o escopo "write offers".

Input parameters:

- `account` (string)
- `image` (string)
- `interval` (number)
- `interval_type` (string)
- `max_retries` (number)
- `name` (string, required)
- `price` (number, required)
- `product` (string, required)
- `quantity_recurrences` (number)
- `recurrence_period` (number)
- `retry_interval` (number)
- `status` (string)
- `trial_days` (number)
- `type` (string)
- `units` (number)

### `cakto_offers_update` (~190 tokens)

Atualiza uma oferta existente na Cakto (parcial: envie só o que muda).
Use status="disabled" para desativar uma oferta sem apagá-la. Requer o escopo
"write offers".

Bulk support: accepts offer_ids for batched execution.

Input parameters:

- `account` (string)
- `image` (string)
- `interval` (number)
- `interval_type` (string)
- `max_retries` (number)
- `name` (string)
- `offer_id` (string, required)
- `offer_ids` (array)
- `price` (number)
- `quantity_recurrences` (number)
- `recurrence_period` (number)
- `retry_interval` (number)
- `status` (string)
- `trial_days` (number)
- `type` (string)
- `units` (number)

### `cakto_order_bumps_list` (~128 tokens)

Leitura de order bumps (ofertas complementares exibidas no checkout).
Ações:
\- list: lista os order bumps de UM produto (requer product_id).
\- get: detalhe de UM order bump (requer order_bump_id).

[Flattened action: list]

Bulk support: accepts product_ids, order_bump_ids for batched execution.

Input parameters:

- `account` (string)
- `order_bump_id` (string)
- `order_bump_ids` (array)
- `product_id` (string)
- `product_ids` (array)

### `cakto_order_bumps_get` (~128 tokens)

Leitura de order bumps (ofertas complementares exibidas no checkout).
Ações:
\- list: lista os order bumps de UM produto (requer product_id).
\- get: detalhe de UM order bump (requer order_bump_id).

[Flattened action: get]

Bulk support: accepts product_ids, order_bump_ids for batched execution.

Input parameters:

- `account` (string)
- `order_bump_id` (string)
- `order_bump_ids` (array)
- `product_id` (string)
- `product_ids` (array)

### `cakto_order_bumps_create` (~190 tokens)

Cria um order bump: pendura uma OFERTA como oferta complementar no
checkout de um produto. O produto (product_id) é o checkout onde o bump aparece;
a oferta (offer_id) é o que está sendo oferecido — normalmente de OUTRO produto.
Use cakto_offers (action=list) para descobrir o offer_id. Requer o escopo
"write products".

Bulk support: accepts product_ids, offer_ids for batched execution.

Input parameters:

- `account` (string)
- `cta` (string)
- `description` (string)
- `offer_id` (string, required)
- `offer_ids` (array)
- `position` (number)
- `product_id` (string, required)
- `product_ids` (array)
- `reference_price` (number)
- `show_image` (boolean)
- `title` (string)

### `cakto_order_bumps_update` (~162 tokens)

Atualiza um order bump existente (parcial: envie só o que muda) — troca
a oferta, o preço de referência, a copy ou a exibição da imagem. Requer o escopo
"write products".

Bulk support: accepts order_bump_ids, offer_ids for batched execution.

Input parameters:

- `account` (string)
- `cta` (string)
- `description` (string)
- `offer_id` (string)
- `offer_ids` (array)
- `order_bump_id` (string, required)
- `order_bump_ids` (array)
- `position` (number)
- `reference_price` (number)
- `show_image` (boolean)
- `title` (string)

### `cakto_order_bumps_reorder` (~116 tokens)

Reordena os order bumps de um produto numa chamada só: passe a lista
completa de {order_bump_id, position}. Posição 1 aparece primeiro. Ids que não
pertencem ao produto são ignorados pela Cakto. Requer o escopo "write products".

Bulk support: accepts product_ids for batched execution.

Input parameters:

- `account` (string)
- `items` (array, required)
- `product_id` (string, required)
- `product_ids` (array)

### `show_version` (~17 tokens)

Show the current MCP platform and adapter versions.

### `report_bug` (~50 tokens)

Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.

Input parameters:

- `context` (string)
- `conversation` (string)
- `message` (string, required)

### `connect` (~42 tokens)

Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.

### `toolkit_info` (~37 tokens)

Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.

### `marketplace` (~532 tokens)

The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.

Input parameters:

- `action` (string)
- `arguments` (string)
- `cancel_comment` (string)
- `cancel_reason` (string)
- `conversation` (string)
- `immediate` (boolean)
- `limit` (number)
- `mcp_id` (string)
- `message` (string)
- `prompt_body` (string)
- `prompt_category` (string)
- `prompt_description` (string)
- `prompt_slug` (string)
- `prompt_targets` (array)
- `prompt_title` (string)
- `prompt_tool` (string)
- `prompt_vars` (string)
- `query` (string)
- `report_context` (string)
- `request_details` (string)
- `request_name` (string)
- `tier_slug` (string)
- `tool_id` (string)

### `authenticate` (~99 tokens)

MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.

Input parameters:

- `token` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto#diagnostics

## Score history

- 2026-09-26: 74
- 2026-09-25: 73
- 2026-09-24: 76
- 2026-09-23: 76
- 2026-09-22: 75
- 2026-09-21: 75
- 2026-09-20: 74
- 2026-09-19: 74
- 2026-09-18: 73
- 2026-09-17: 73
- 2026-09-16: 73
- 2026-09-15: 72
- 2026-09-14: 72
- 2026-09-13: 71
- 2026-09-12: 71
- 2026-09-11: 70
- 2026-09-10: 70
- 2026-09-09: 69
- 2026-09-08: 69
- 2026-09-07: 68
- 2026-09-06: 68
- 2026-09-05: 67
- 2026-09-04: 67
- 2026-09-03: 66
- 2026-09-02: 66
- 2026-09-01: 50
- 2026-08-31: 65
- 2026-08-30: 49
- 2026-08-29: 48
- 2026-08-28: 48

## Common questions

### What is the Cakto MCP server?

Cakto is an MCP server listed in the public MCP registry as io.github.mcp-dir/cakto-mcp. Read your Cakto sales: orders, revenue analytics, subscriptions, churn, customers and products. This page covers its hosted endpoint (https://api.mcp.ai/p_cakto).

### Is the Cakto MCP server safe to use?

Cakto scores 74 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Cakto MCP server expose?

Cakto exposes 27 tools: cakto_list_accounts, cakto_orders_list, cakto_orders_get, cakto_orders_analytics, cakto_subscriptions_list, and 22 more. Their descriptions and schemas cost roughly 4,022 tokens of context every time the server is loaded.

### Does the Cakto MCP server require authentication?

No. We connected to Cakto without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Cakto MCP server still maintained?

Cakto is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.mcp.ai/p_cakto
- Repository: https://github.com/mcp-dir/cakto-mcp
- Changelog RSS feed: https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto.xml
- Changelog JSON feed: https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto.json
- HTML version of this page: https://verifymcp.io/servers/mcp-dir-cakto-mcp/p-cakto
