Kordi MCP Server
Track, analyze, and act on your streaming & SaaS subscriptions — from any AI agent.
Kordi is a subscription intelligence platform. This Model Context Protocol server lets any MCP-speaking AI client — Claude Desktop, Cursor, Raycast, or your own agent — read a user's tracked subscriptions, score their billing health, surface savings, generate cancel/pause links, and push newly discovered subscriptions in.
It's a hosted, remote MCP server. There's nothing to install or run locally — you connect to a URL with a token.
- Endpoint:
https://kordiapp.com/mcp - Transport: Streamable HTTP
- Auth:
Authorization: Bearer <token> - Registry:
com.kordiapp/kordi-mcp-serveron the official MCP Registry - Docs: kordiapp.com/developers
Quick start
1. Get a token
Sign in at kordiapp.com and generate an API token at kordiapp.com/token. Tokens are valid for 90 days and grant read/write access to your own subscriptions only.
2. Connect your client
Claude Desktop — add this to your claude_desktop_config.json (see examples/):
{
"mcpServers": {
"kordi": {
"type": "streamable-http",
"url": "https://kordiapp.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}
Any client / raw HTTP — pass the token as a Bearer header (preferred — it never lands in logs, Referer, or history):
# List the available tools
curl -X POST "https://kordiapp.com/mcp" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
A legacy
?token=<token>query-string form is also accepted for back-compat, but prefer the header.
3. Ask away
"What am I paying for each month?" "Which subscriptions could I pause to save money?" "Do I have any price hikes or trials ending soon?" "I just signed up for Apple TV+ at $9.99/mo — track it."
Tools
| Tool | What it does |
|---|---|
kordi_list_subscriptions | List the user's tracked subscriptions. Paginated (offset/limit), optional include_paused. Sensitive card fields are never returned. |
kordi_analyze_billing_health | Score billing health 0–100: price hikes vs. market, dormant services, savings potential, billing-date clustering. |
kordi_get_cancellation_route | Generate a deep link to cancel or pause a service, and record the intent. Call only on explicit user request. |
kordi_ingest_subscription | Push a discovered subscription into Kordi (used by discovery sources like email/on-screen agents). Dedupes by name; returns a signed pause link. |
kordi_get_top_shows | Most-swiped / most-liked shows across all Kordi users. Aggregate only, no PII. |
Plus a resource:
| Resource | URI | What it is |
|---|---|---|
subscription-pulse | kordi://subscription-pulse | A proactive billing-health snapshot (expiring trials, next bill, monthly spend, savings, price alerts) for ambient feeds. |
A platform-analytics tool (
kordi_get_analytics) also exists but is restricted to administrators.
Tool detail
kordi_list_subscriptions — read
Args
include_paused(boolean, defaultfalse) — include paused subscriptionsoffset(number, default0) — pagination startlimit(number, 1–100, default50) — page size
Returns
{
"subscriptions": [ { "id": "netflix", "name": "Netflix", "price": 15.99, "billingDate": 12, "state": "ACTIVE" } ],
"count": 1,
"total_count": 1,
"offset": 0,
"limit": 50,
"has_more": false,
"total_monthly": 15.99
}
kordi_analyze_billing_health — read
Takes no arguments. Returns total monthly spend, active/paused counts, price_hikes, unused_services, savings_potential, top_savings_candidate, billing_clusters, and a health_score (0–100, higher is healthier).
kordi_get_cancellation_route — action
Args
service_id(string, required) — the exactidfromkordi_list_subscriptionsreason(too_expensive|not_using|switching_service|finished_content, optional)
Returns { "success": true, "service": "Netflix", "cancellation_url": "https://…" }. Call only when the user explicitly asks to cancel or pause.
kordi_ingest_subscription — write
Args
name(string, required) — e.g."Disney+"amount(number, required) — monthly amount in USDbill_date(number 1–31, or ISO date string) — billing day or datesource(qira|screenpipe|manual, optional) — discovery-source attribution
Dedupes by name (re-calling updates amount/bill date). Returns { status, subscription, pause_link, dashboard_url }.
kordi_get_top_shows — read
Args
limit(number, 1–50, default10)sort_by(swipes|likes|like_rate, defaultswipes)
Returns a cross-user popularity leaderboard. Aggregate only — no per-user data.
Auth & identity model
- Your token resolves server-side to your Kordi account. Every tool call is scoped to your account — you can only ever see and act on your own subscriptions.
- Identity is bound once per session at the edge; a session cannot be re-bound to a different user mid-stream.
- Sensitive card fields (PAN, CVV, expiry, raw token) are stripped from every response — they never leave the server.
- Tokens are short-to-medium-lived (90 days). Treat them as secrets. You can rotate at kordiapp.com/token at any time.
Limits
- Rate limit: 20 tool calls per 60 seconds per session. Over the limit, tools return a back-off message instead of hitting the database — your agent should wait, not retry-loop.
- Response size: large list responses are capped (~25k chars); page with
offset/limitfor big accounts. - Pause/cancel links are signed and expire after 7 days.
For integration partners
Discovery sources (email-intelligence agents, on-screen detection pipes, etc.) can push subscriptions into a user's Kordi account via kordi_ingest_subscription, or provision brand-new users via the public POST /api/guest-ingest endpoint. See kordiapp.com/developers for the partner provisioning flow, source attribution, and the x-partner-key model.
Links
- Web app: kordiapp.com
- Developer docs: kordiapp.com/developers
- Get a token: kordiapp.com/token
- MCP Registry listing:
com.kordiapp/kordi-mcp-server - Model Context Protocol: modelcontextprotocol.io
License
Documentation and the registry manifest in this repository are released under the MIT License. The Kordi server, brand, and backend are proprietary; this repo does not contain server source code.
サーバー設定
{
"mcpServers": {
"kordi": {
"type": "streamable-http",
"url": "https://kordiapp.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}