Claude
Settings → Connectors → Add custom connector. Paste the MCP URL and sign in to TOPY when asked.
https://topy.ai/mcpDevelopers
TOPY.AI writes and maintains founders’ business plans and keeps their CEO records. The same 423 tools are available to Claude, ChatGPT, Cursor, your terminal and your own code — one remote MCP server, one set of rules.
https://topy.ai/mcpConnect
Settings → Connectors → Add custom connector. Paste the MCP URL and sign in to TOPY when asked.
https://topy.ai/mcpSettings → Apps & Connectors → Create (developer mode). Use the MCP URL with OAuth.
https://topy.ai/mcpAdd the remote server, then run /mcp to sign in.
claude mcp add --transport http topy https://topy.ai/mcpAdd a remote MCP server with this URL; the client handles the OAuth sign-in.
{ "mcpServers": { "topy": { "url": "https://topy.ai/mcp" } } }The ceo-cli command runs every tool; changes preview first and ask before they run.
npm i -g @topy-ai/ceo-cli
ceo-cli login
ceo-cli plans_listFor clients that only start a command: the same tools over stdio, with your sign-in or TOPY_API_KEY.
npx -y @topy-ai/ceo-mcp login
npx -y @topy-ai/ceo-mcp42 AI CEO skills for Claude Code, Codex, Cursor, Gemini CLI and 16 more agents: plans and revisions, strategy, fundraising, finance, operations, leadership.
npx @topy-ai/ceo-skills installSafety
Every tool runs as you, through the same API as the dashboard: an agent can never do more than you can.
A change first returns a preview. It runs only when the agent calls again with your confirmation — signed, bound to that exact change, valid for 10 minutes.
Writing a plan costs 50 credits; the preview shows your balance before and after. Nothing is spent until you confirm.
Connect with read access only and the agent never sees a tool that changes anything.
Every confirmed change is logged (agent_actions_list). Connected apps are listed under API keys and can be disconnected at once.
Workflows
Offered as MCP prompts and as ceo-cli prompt <name>.
idea-to-business-planrevise-planinvestor-ready-checkinvestor-updateweekly-ceo-reviewTools
R0 reads · W1 changes something you can change back · W2 spends credits · W4 deletes for good. Most tools act on one project (project_id). The full catalogue with input schemas: /api/v1/agent/tools.
account_get | R0 reads | Who is signed in to TOPY. |
credits_get | R0 reads | TOPY credit balance (paid and free), optionally with recent transactions. |
entitlements_get | R0 reads | The user's plan and which features it includes (AI editing, project and template limits). |
dashboard_link | R0 reads | A link to a page of the TOPY web app, when the founder asks to see it there. Everything can be done in the chat (credits_buy, integration_connect_link, delegation_set …); only managing API keys needs the web app. |
agent_actions_list | R0 reads | The changes agents made for this user over MCP or the CLI (newest first), each after the user confirmed it. |
standing_permissions_list | R0 reads | Standing permissions: which of the user's keys (a scheduled agent's) may add which records to which project without a preview, each tool's daily cap and today's use. Granted with standing_permission_grant and revoked with standing_permission_revoke (the founder's decision). |
routine_list | R0 reads | The project's routines, whatever runs them: TOPY-AI-Routines template instances (runner oneman, claude_ai), OneMan's built-in workflows and Maggie's Ops Autopilot. Each with its owner, status, schedule, daily write limits and last run. Filter by runner, status or kind (template, builtin, autopilot). |
routine_get | R0 reads | One routine of the project, by id or key (e.g. 'yian.uk/cro-weekly-forecast'). |
routine_propose | W1 changes | Propose a routine for the project from a TOPY-AI-Routines template: it is saved as proposed and nothing runs until the founder (or the CEO within the delegation) approves it. Say why, with the evidence. |
routine_decide | W2 spends credits | Decide on a routine: approve or resume switches it on, pause stops it, retire ends it, decline drops a request waiting on the founder. The founder's decision runs at once. A scheduled CEO's runs only within the project's delegation (delegation_get) and goes into the decision log; outside it, it waits on the routine as a request for the founder. Give the reason with the evidence. |
delegation_get | R0 reads | The founder's delegation on this project: what the scheduled CEO may decide about routines on their behalf (approve or resume, pause, which runners, owners and templates, how many active, how often a day). Set with delegation_set, revoked with delegation_revoke (the founder's decision). |
task_progress | W1 changes | Move a cofounder's task on — todo, in_progress or done — with a dated note (what happened, the evidence: an issue closed, a pull request merged). Only tasks a cofounder owns (details.owner_role); the founder's tasks are theirs. |
routine_update | W2 spends credits | Change a routine: approve, activate, pause or retire it, move its time, lower its limits. The person's decision: an agent's key can't. |
delegation_set | W2 spends credits | Set the founder's delegation on this project: what the scheduled CEO may decide about routines on their behalf (approve or resume, pause, which runners, owners and templates, how many active, how often a day) and its authority over Maggie (all, internal or ask). The founder's decision. |
delegation_revoke | W2 spends credits | Revoke the founder's delegation on this project: every routine decision waits on the founder again. |
standing_permission_grant | W2 spends credits | Let an agent key add records on this project without a preview, up to a daily cap per tool (standing_permissions_list shows which tools are eligible). Default: the key making the call. The founder's decision. |
standing_permission_revoke | W2 spends credits | Revoke a standing permission (standing_permissions_list): that key asks again. |
founder_preferences_get | R0 reads | The founder's timetable: time zone, place, working hours and days, out-and-about days, how many items a day, when the day plan comes and where (slack or dashboard), and notes. |
founder_preferences_set | W1 changes | Change the founder's timetable (only the fields given change). The founder's decision. |
google_calendars_choose | W1 changes | Which of the founder's Google calendars count as busy time (ids from google_calendar_status). |
google_connect_link | R0 reads | The Google sign-in link for the founder: Google Calendar, plus the ONEMAN service agents given in apps (gmail, drive, sheets, forms, tasks, contacts, analytics). Give the founder the link; signing in is theirs. |
calendar_feed_connect | W2 spends credits | Connect a calendar by its private feed (an iCal URL), read only, for the day plan. |
calendar_feed_disconnect | W2 spends credits | Remove a connected calendar feed. |
integration_disconnect | W3 public | Disconnect a data source from this project (stripe, quickbooks, quickfile, cmo_admin): its KPIs stop syncing. The founder's decision. |
company_domain_set | W2 spends credits | Bind the project's company domain: the cofounders' company context is built from that website. |
company_context_edit | W2 spends credits | Edit the company context every cofounder works from: company fields, or what one cofounder should know (roles: {role: text}). |
company_context_regenerate | W2 spends credits | Rebuild the company context from the website (replace_edited: also overwrite edits). |
founder_memory_edit | W1 changes | Edit a note about the founder (text, practice, kind, roles, guidance) or archive it (status archived). The founder's decision. |
integration_key_connect | W2 spends credits | Connect a data source with the key the founder pasted in this chat: stripe (a restricted key with read access to subscriptions, invoices and customers), quickfile (a personal API token) or cmo_admin (a cmo.so admin key). Its KPIs then fill themselves. Never repeat the key back. |
service_keys_list | R0 reads | Which outside services have the founder's keys on topy.ai (for ONEMAN's service agents: devto, datafast, sentry, posthog, notion, cloudflare …) and the key names. Never the values. |
service_key_set | W2 spends credits | Keep the founder's key for an outside service, which they gave in this chat, for ONEMAN's service agents (devto: DEVTO_API_KEY; datafast: DATAFAST_API_KEY or DATAFAST_SITE_KEYS; sentry: SENTRY_TOKEN, SENTRY_ORG; posthog: POSTHOG_PERSONAL_API_KEY, POSTHOG_PROJECT_ID; notion: NOTION_TOKEN; cloudflare: CF_API_TOKEN, CF_ACCOUNT_ID, CF_SITE_TAG). Saved encrypted; never repeat the value back. |
service_key_remove | W2 spends credits | Forget the founder's keys for an outside service. |
plan_export_word | R0 reads | A link to the business plan as a Word file (15 minutes, no sign-in): give it to the founder. |
seis_export_word | R0 reads | A link to the SEIS Advance Assurance application as a Word file, from the text plan_seis_assurance returned (15 minutes, no sign-in): give it to the founder. |
deck_export_pptx | R0 reads | A link to the pitch deck as a PowerPoint file (15 minutes, no sign-in): give it to the founder. |
project_section_suggest | R0 reads | AI rewrite of one section of the project profile with an instruction (as the profile page does): returns the edited section and a note; nothing is saved until project_update. |
media_upload | W1 changes | Upload a picture the founder gave in the chat (JPEG, PNG, GIF or WebP, at most 10 MB) to their TOPY media; returns its media id and URL. |
project_create_from_document | W2 spends credits | Create a project from a document the founder gave in the chat (PDF, Word or text): TOPY reads it and fills the profile (a job: project_job_get). |
data_room_document_add | W1 changes | Put a document the founder gave in the chat (PDF, Word, text or Markdown) into a data room folder, as its text. |
credits_buy | W1 changes | A Stripe checkout page to buy a TOPY credit pack (entitlements_get lists them). Give the founder the link: paying happens on Stripe. |
plan_subscribe | W1 changes | A Stripe checkout page to subscribe to a TOPY plan. Give the founder the link: paying happens on Stripe. |
billing_portal | W1 changes | The Stripe billing portal for the founder's subscription (change, cancel, invoices, card). |
site_status | R0 reads | The founder's personal site: claimed subdomain and custom domains with their status (claims and hostnames), and LinkedIn verification. |
site_hostnames | R0 reads | The site's hostnames (subdomain and custom domains) with ids and DNS / certificate status. |
site_subdomain_available | R0 reads | Whether a subdomain label is free. |
site_subdomain_claim | W2 spends credits | Claim a subdomain for the founder's site. |
site_custom_domain_add | W2 spends credits | Connect the founder's own domain to their site (gives the DNS records to add). |
site_custom_domain_status | R0 reads | A custom domain's DNS and certificate status. |
site_hostname_remove | W3 public | Remove a hostname from the founder's site. |
site_context | R0 reads | What the site builder knows (profile, sections, presets) to plan a site. |
site_generate | W2 spends credits | Generate the founder's site with AI from their profile and a brief (a draft to preview). |
site_preview | W1 changes | Render a preview of the site with the given content (nothing is published). |
site_publish | W2 spends credits | Publish the reviewed site to the founder's hostnames. |
site_templates | R0 reads | Community site templates to start from. |
site_template_publish | W2 spends credits | Publish the site from a community template. |
site_bio_edit | W1 changes | Edit the site's bio with an instruction (AI). |
site_element_edit | W2 spends credits | Change one element of the live site with an instruction (AI). |
site_homepage_get | R0 reads | The site's homepage content. |
site_homepage_set | W1 changes | Change the homepage content (a draft until published). |
site_homepage_publish | W2 spends credits | Publish the homepage. |
site_posts_list | R0 reads | The posts on the founder's site (drafts and published). |
site_post_generate | W1 changes | Draft a post with AI (a preview: nothing is saved). |
site_post_save | W1 changes | Save a post on the site as a draft. |
site_post_update | W1 changes | Change a post. |
site_post_delete | W3 public | Delete a post. |
site_post_publish | W2 spends credits | Publish a post on the site. |
site_post_unpublish | W2 spends credits | Take a post off the site. |
linkedin_connect_link | R0 reads | The LinkedIn sign-in link to verify the founder (claim) or to let the site publish to LinkedIn (publishing). Signing in is theirs. |
projects_list | R0 reads | The user's projects (the companies or ideas TOPY works on). Most tools take one as project_id. |
project_get | R0 reads | A project's details: what it does, market, industry, keywords and website. |
project_update | W1 changes | Change a project's details. Changes the project given as project_id. |
project_create_from_idea | W1 changes | Create a project from an idea: a title and a description of the business. (runs an AI generation.) |
project_create_from_website | W1 changes | Create a project by reading an existing website (runs as a job; follow it with project_job_get). (runs an AI generation.) |
project_job_get | R0 reads | Progress of a project job (created from a website or upload). |
project_delete | W1 changes | Archive a project (restorable with project_restore). |
project_restore | W1 changes | Restore an archived project. |
ideas_generate | W1 changes | Generate startup ideas around a topic or market. (runs an AI generation.) |
idea_get | R0 reads | One idea with its details. |
idea_brainstorm | W1 changes | Brainstorm an idea in depth (by idea_id, or a free-text term): market, competitors, angles. (runs an AI generation.) |
idea_to_project | W1 changes | Turn a saved idea into a project. |
plan_options_get | R0 reads | Business plan templates, purposes, audiences and writing styles for a project, with the recommended template. Use these ids exactly. |
plans_list | R0 reads | List a project's business plans (summaries with status, words and section list). |
plan_get | R0 reads | A business plan: summary and section list; set full for the whole Markdown or section for one section's Markdown. |
plan_status | R0 reads | Generation progress of a plan (or of a job: a generation, revision, Markdown fix or impact analysis). |
plan_estimate | R0 reads | What a business plan generation costs in TOPY credits against the current balance (no charge). |
plan_generate | W2 spends credits | Start writing a new business plan for a project with a template, purpose, audience and style from plan_options_get (about 7 minutes). Costs 50 TOPY credits. (spends TOPY credits; runs an AI generation.) |
plan_job_cancel | W1 changes | Cancel a queued or running business plan job. |
plan_job_retry | W2 spends credits | Retry a failed business plan generation. Costs 50 TOPY credits again (a failed job was refunded). (spends TOPY credits; runs an AI generation.) |
plan_update | W1 changes | Replace a plan's Markdown: one section (with section) or the whole plan. Use for edits the user wrote or accepted. |
plan_rename | W1 changes | Rename a business plan or star it. |
plan_delete | W1 changes | Archive a business plan (restorable with plan_restore). |
plan_restore | W1 changes | Restore an archived business plan. |
plan_section_suggest | R0 reads | Ask the AI to rewrite one section from an instruction. Returns a suggestion only; nothing changes until plan_update. (runs an AI generation; needs a plan with the AI features.) |
plan_section_regenerate | W1 changes | Rewrite one section from scratch with the plan's writer (replaces that section). (runs an AI generation; needs a plan with the AI features.) |
plan_fix_markdown | W1 changes | Fix the Markdown of every section (diagrams to tables, no code blocks or HTML) without changing the content. Runs as a job; follow it with plan_status. (runs an AI generation; needs a plan with the AI features.) |
plan_revise_analyze | R0 reads | Work out what a change (a figure, milestone, KPI or the team) means for the whole plan: old -> new facts, derived figures and the impact on each section. Changes nothing and costs no credits; follow the job with plan_status, then show the result to the user. (runs an AI generation; needs a plan with the AI features.) |
plan_revise_apply | W1 changes | Write a change into a NEW version of the plan, updating the affected sections in order with a final consistency check (the source plan is kept, no credits). Needs a finished plan_revise_analyze. (runs an AI generation; needs a plan with the AI features.) |
plan_export | R0 reads | A business plan as Markdown (plan_export_word gives the Word file as a link). |
plan_seis_assurance | R0 reads | Draft the answers for a UK SEIS Advance Assurance application from a finished plan. (runs an AI generation; needs a plan with the AI features.) |
plan_defaults_set | W1 changes | Set the project's default template, purpose, audience and style for new plans. |
templates_list | R0 reads | The official business plan templates and the user's own templates for a project. |
template_create | W1 changes | Create a custom template: clone an official or custom one, have the AI build one from a requirement (ai_prompt), or from a document's text (upload_file). (runs an AI generation.) |
template_update | W1 changes | Change a custom template: name, description, industry or its structure (template_json). |
template_delete | W1 changes | Archive a custom template (restorable). |
template_restore | W1 changes | Restore an archived custom template. |
template_star | W1 changes | Star or unstar a template (official or custom). |
template_assistant | R0 reads | Ask the AI to change a custom template's structure from an instruction. Returns a suggestion only; keep it with template_update. (runs an AI generation; needs a plan with the AI features.) |
research_sources_list | R0 reads | List the project's records of a research source (market data, article, interview) behind the project's claims. |
research_source_get | R0 reads | One record of a research source (market data, article, interview) behind the project's claims. |
research_source_create | W1 changes | Add a research source (market data, article, interview) behind the project's claims. |
research_source_update | W1 changes | Change a research source (market data, article, interview) behind the project's claims. |
research_source_delete | W4 deletes for good | Delete a research source (market data, article, interview) behind the project's claims permanently. |
decisions_list | R0 reads | List the project's records of a decision the founder made, with its context and reasoning. |
decision_get | R0 reads | One record of a decision the founder made, with its context and reasoning. |
decision_create | W1 changes | Add a decision the founder made, with its context and reasoning. |
decision_update | W1 changes | Change a decision the founder made, with its context and reasoning. |
decision_delete | W4 deletes for good | Delete a decision the founder made, with its context and reasoning permanently. |
journal_entries_list | R0 reads | List the project's records of a founder journal entry. |
journal_entry_get | R0 reads | One record of a founder journal entry. |
journal_entry_create | W1 changes | Add a founder journal entry. |
journal_entry_update | W1 changes | Change a founder journal entry. |
journal_entry_delete | W4 deletes for good | Delete a founder journal entry permanently. |
gtm_plans_list | R0 reads | List the project's records of a go-to-market plan. |
gtm_plan_get | R0 reads | One record of a go-to-market plan. |
gtm_plan_create | W1 changes | Add a go-to-market plan. |
gtm_plan_update | W1 changes | Change a go-to-market plan. |
gtm_plan_delete | W4 deletes for good | Delete a go-to-market plan permanently. |
memories_list | R0 reads | List the project's records of a fact or preference to remember about the project. |
memory_get | R0 reads | One record of a fact or preference to remember about the project. |
memory_create | W1 changes | Add a fact or preference to remember about the project. |
memory_update | W1 changes | Change a fact or preference to remember about the project. |
memory_delete | W4 deletes for good | Delete a fact or preference to remember about the project permanently. |
risks_list | R0 reads | List the project's records of a risk with its likelihood, impact and mitigation. |
risk_get | R0 reads | One record of a risk with its likelihood, impact and mitigation. |
risk_create | W1 changes | Add a risk with its likelihood, impact and mitigation. |
risk_update | W1 changes | Change a risk with its likelihood, impact and mitigation. |
risk_delete | W4 deletes for good | Delete a risk with its likelihood, impact and mitigation permanently. |
investor_contacts_list | R0 reads | List the project's records of an investor contact in the fundraising pipeline. |
investor_contact_get | R0 reads | One record of an investor contact in the fundraising pipeline. |
investor_contact_create | W1 changes | Add an investor contact in the fundraising pipeline. |
investor_contact_update | W1 changes | Change an investor contact in the fundraising pipeline. |
investor_contact_delete | W4 deletes for good | Delete an investor contact in the fundraising pipeline permanently. |
investor_updates_list | R0 reads | List the project's records of an investor update (a periodic letter to investors). |
investor_update_get | R0 reads | One record of an investor update (a periodic letter to investors). |
investor_update_create | W1 changes | Add an investor update (a periodic letter to investors). |
investor_update_update | W1 changes | Change an investor update (a periodic letter to investors). |
investor_update_delete | W4 deletes for good | Delete an investor update (a periodic letter to investors) permanently. |
growth_experiments_list | R0 reads | List the project's records of a growth experiment with its hypothesis, metric and result. |
growth_experiment_get | R0 reads | One record of a growth experiment with its hypothesis, metric and result. |
growth_experiment_create | W1 changes | Add a growth experiment with its hypothesis, metric and result. |
growth_experiment_update | W1 changes | Change a growth experiment with its hypothesis, metric and result. |
growth_experiment_delete | W4 deletes for good | Delete a growth experiment with its hypothesis, metric and result permanently. |
memory_context | R0 reads | What the AI cofounders remember about this project (topy-memory): the founder's preferences, the project's conventions, lessons from fixed mistakes and recent errors — active and unexpired only, the most relevant first. Read it at the start of work on a project and follow it; `markdown` gives the repo's .topy/memory.md. `founder` is who the founder is as a person, as the CEO keeps it for you (with role): fit your work to it, and for_you says what a note means for your work. |
memory_remember | W1 changes | Remember something about this project for every cofounder: a preference of the founder, a convention of the project, or a lesson from a fixed mistake (with the problem, the solution and the evidence). It is a candidate until the founder confirms it — status active only when they said so. Never a key, token or password. |
memory_review | W1 changes | Confirm a candidate (active), or retire an item (superseded, archived) — history is kept, never deleted. |
memory_record_error | W1 changes | Record a failure in the project's error history (the same fingerprint counts again instead of repeating). A fixed error needs its resolution and how the fix was validated; it never becomes a lesson by itself. |
media_list | R0 reads | The user's media library: images uploaded to TOPY or registered by URL (newest first, up to 200). |
media_add_url | W1 changes | Add an image to the media library by its URL (stored as a link; nothing is downloaded). |
media_delete | W4 deletes for good | Delete an item from the media library permanently. |
API
Everything the tools do is also plain HTTP under https://topy.ai/api/v1, with a bearer token: an API key from Dashboard → API keys (read-only or read-write) or an OAuth access token. Responses are { code, message, data }.
curl -H "Authorization: Bearer $TOPY_API_KEY" https://topy.ai/api/v1/projects/my