kordi

Track, analyze, and act on your streaming and SaaS subscriptions from any AI agent.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Kordi List Subscriptions: List the authenticated user's tracked streaming and SaaS subscriptions. Paginated. Returns active services by default; set include_paused=true for paused ones too. Includes t
  • Kordi Analyze Billing Health: Analyze the user's subscription billing health. Returns a 0-100 health score, price hikes vs. market rates, dormant/unused services, savings potential, and billing-date c
  • Kordi Get Server Info: Return the live kordi MCP server's build metadata — version, git commit, and build time. Read-only, no arguments. Use it to self-diagnose a stale connection: this handler runs s

What data it sees

Do you need an account

No: the server works without sign-in

Track, analyze, and act on your streaming and SaaS subscriptions from any AI agent. List what you pay for, score billing health, detect price hikes, find savings, and pause or cancel services — all via natural language.

Server tool list (31)

Raw names from tools/list. Only developers need these.

kordi_list_subscriptionsList the authenticated user's tracked streaming and SaaS subscriptions. Paginated. Returns active services by default; set include_paused=true for paused ones too. Includes total monthly spend.
kordi_analyze_billing_healthAnalyze the user's subscription billing health. Returns a 0-100 health score, price hikes vs. market rates, dormant/unused services, savings potential, and billing-date clusters. Takes no arguments.
kordi_get_server_infoReturn the live kordi MCP server's build metadata — version, git commit, and build time. Read-only, no arguments. Use it to self-diagnose a stale connection: this handler runs server-side (always the live deploy), so if its version is newer than what your cached tool schemas reflect, reconnect the connector to refetch the tool list.
kordi_list_proactive_tasksList time-sensitive subscription actions to take now — upcoming billing renewals, free trials about to convert to paid charges, and elapsed pauses ready to resume. Most-urgent first. PRIMARY tool for scheduled/autonomous check-ins: call this at the start of any proactive session.
kordi_get_cancellation_routeGet the execution runbook for cancelling or pausing a subscription at the provider — a structured agent payload: deep link, ordered steps, known provider traps, on-page success indicator, and the exact write-back tool call (agent_playbook). Curated playbooks for every major streaming service plus common SaaS/AI/lifestyle subscriptions (Adobe, Audible, ChatGPT, Claude, iCloud+, gyms — including their contract-fee and credit-forfeiture traps); for unknown services kordi researches the provider's current cancel flow live on the web and saves it to a permanent library (last_verified included; force_refresh re-researches after UI drift), falling back to a generic runbook. A browser-capable agent can pass agent_can_browse=true to skip kordi's paid research step for a non-curated/non-library service and research it live instead, then report the result back with kordi_contribute_playbook. agent_playbook.retention_intel.potential_offer is present whenever D1 has observed an offer for this service: it is unconfirmed and requires asking whether the user wants to check for it or continue cancelling before opening the provider flow; known fixed-dollar history can be phrased as up to $X. intent='pause' surfaces native provider pause features and wires the write-back to kordi_pause_subscription; intent='cancel' wires it to kordi_mark_cancelled.
kordi_contribute_playbookReport back a cancellation/pause runbook you researched and successfully executed yourself for a service kordi had no pre-built playbook for (agent_playbook.source was 'generic'). Call ONLY after confirming the outcome on-page. Saves permanently to kordi's shared library — a curated or existing library entry always wins, so this never overwrites audited content; it only fills genuine gaps, so the next request for that service (anyone's) is served free instead of researched again.
kordi_get_resubscribe_routeGet the execution runbook for RESTARTING (resubscribing to) a service the user previously paused or cancelled — the mirror image of kordi_get_cancellation_route. Structured agent payload: deep link, ordered steps, restart-specific traps (lost promo pricing, reactivate-don't-recreate the account, app-store billing), on-page success indicator, and the write-back call (kordi_resume_subscription). Curated restart playbooks for major streaming services and common SaaS subscriptions; generic runbook otherwise.
kordi_ingest_subscriptionPush a discovered subscription into kordi. Used by discovery sources (email agents, on-screen detection). Deduplicates by name — re-calling updates amount/bill date. For email-scan finds, pass evidence_type + evidence_date (the most recent billing-relevant email) — kordi reconciles 'started' vs 'still active' server-side and returns status 'needs_confirmation' (with hold_reason, nothing written) for dead trials, stale signups, cancellations, failed payments, or marketing-only finds; re-call with user_confirmed: true after the user verifies. Supports billing_cycle annual/custom for yearly or every-N-days receipts. Returns a signed pause link valid 7 days.
kordi_import_subscriptionsBulk-import many subscriptions in one call — the onboarding tool. Use this (not repeated single adds) for a LIST, e.g. after scanning the user's email inbox (Gmail/Superhuman/Outlook). For email scans, pass evidence_type + evidence_date per item and submit ALL candidates — kordi reconciles 'started' vs 'still active' server-side: fresh charges/renewals import; dead trials, stale signups, cancellations, and marketing-only finds come back in 'needs_confirmation' (with per-item reasons, nothing written) for the user to confirm, then re-submit those with user_confirmed: true. Supports billing_cycle annual/custom per item (yearly receipts import at the full yearly price, normalized in totals). Dedupes by name; validates each item independently (bad rows reported in 'failed', never block the rest); logs a 'discover' event per service tagged with the source.
kordi_get_top_showsReturn the most-swiped or most-liked shows across all kordi users. Aggregate only — no PII. Useful for trending content discovery.
kordi_add_to_watchlistAdd shows/movies to the user's watchlist so kordi tracks new seasons, air dates, and streaming availability. Call proactively when the user mentions what they watch.
kordi_list_watchlistList the shows on the user's watchlist (what kordi is monitoring for them).
kordi_remove_from_watchlistRemove shows from the user's watchlist (stop tracking them). Call only on explicit user request.
kordi_pause_subscriptionMark a subscription paused in kordi's tracking, optionally arming a resume reminder. A plain pause does NOT stop provider billing (the response includes a billing note + cancellation link to relay); pass billing_stopped=true only after a confirmed provider-side cancel/native pause. resume_date arms kordi's reactivation nudge for when the user's shows return.
kordi_resume_subscriptionResume a paused (or previously cancelled) subscription — marks it active again in kordi's tracking. Call when the user asks to resume/restart a service, or as the after_success write-back for kordi_get_resubscribe_route. service_id from kordi_list_subscriptions with include_paused: true.
kordi_add_subscriptionAdd a subscription the user explicitly mentions. Deduplicates by name. Supports monthly (default), annual, and custom cadence (weekly / every N weeks via billing_interval_days + billing_anchor_date). Use kordi_ingest_subscription instead for discovery sources (email scan, on-screen detection).
kordi_delete_subscriptionPermanently remove a subscription from kordi tracking. Cannot be undone — use kordi_pause_subscription for temporary stops.
kordi_mark_cancelledRecord a CONFIRMED cancellation outcome (user cancelled with the provider, or the agent completed it via browser). Marks the subscription CLOSED and logs the cancel event. Only on confirmed outcomes, never on intent.
kordi_log_retention_offerRecord a retention offer a provider made when the user tried to cancel/pause (the save-desk 'wait, here's 50% off' pitch), whether accepted or declined. kordi aggregates these across users and feeds them back into kordi_get_cancellation_route to coach future cancellations.
kordi_update_subscriptionUpdate details on an existing tracked subscription — price changed, billing date moved, trial end date discovered, or billing cadence changed (monthly / annual / custom). Only provided fields are changed.
kordi_search_showsSearch for TV shows and movies by name. Checks kordi's database first, falls back to TVMaze for broader coverage.
kordi_rate_showRecord that the user likes or dislikes a show — trains their kordi taste profile for personalized recommendations. Call whenever the user mentions what they watch. Re-recording the same opinion is a safe no-op; a changed opinion is recorded.
kordi_rate_showsRecord a whole LIST of the user's show opinions in one call — the fast way to seed a taste profile. Ask for their all-time favorites and pass everything they name (each defaults to liked). Use instead of repeated kordi_rate_show for more than one title.
kordi_recommendAnswer 'what should I watch?' with kordi's personalized recommendations — the same ranked picks that power kordi's Vibe/Discover feed, driven by the user's taste profile. Falls back to trending when the user has little/no taste yet (seed it first with kordi_rate_shows).
kordi_privacy_optoutRecord the user's request to opt out of kordi's AI-driven taste profiling and automated processing (Privacy Policy §11). Call only on a clear request. After opting out, kordi stops building the taste profile and recommendations fall back to trending. Permanent; reversible via hello@kordiapp.com.
kordi_find_retention_offersSearch the user's active paid subscriptions against Kordi's D1 retention-offer history and return only services with a previously observed offer. Every result is unconfirmed: present it as a possible offer, let the user choose one service to check, then use kordi_get_cancellation_route one at a time. Known fixed-dollar history may be phrased as up to $X, never guaranteed or summed.
kordi_get_rotation_planCross the user's subscriptions with their watchlist and real show air dates: which streaming services to keep, pause (and until when), or cancel — with dollar savings. The answer to 'what should I cancel?'. (Advice engine — distinct from the user's saved rotation schedule, whose monthly actions surface as rotation_due tasks in kordi_list_proactive_tasks.)
kordi_get_savings_summaryWhat kordi has saved the user: vault credits, pending credits, current monthly savings from paused services, and a lifetime pause-history estimate.
kordi_compare_plansCheck each subscription against current market plan tiers — flags when the user is on an expensive tier and a cheaper one exists (e.g. ad-supported).
kordi_log_agent_telemetryRecord UI drift, broken flows, or unexpected blockers encountered during execution. Call this when you get stuck navigating a provider's site so kordi can flag the playbook for engineering.
kordi_request_human_handoffRequest human assistance for blockers you cannot solve, like 2FA codes, CAPTCHAs, or login walls. This alerts the user to step in and solve the blocker — kordi also emails them, so the handoff reaches them even if they're away from this chat (essential when running as a background/ambient agent).
kordi: connect to Claude, ChatGPT, Cursor · Connectors.fun