# Cantrip — Full Reference for LLMs > The go-to-market engine for technical founders. Describe your product, get a clear path to your first 100 users. For the short version, see: https://cantrip.ai/llms.txt ## What Cantrip Does Cantrip is an agent-to-agent GTM (go-to-market) service. It builds a Context Graph — a structured, persistent map of your business, customers, competitors, and channels — then runs GTM workflows on top of it: deep research, competitive analysis, positioning frameworks, channel strategy, and action plans. It actively crawls public data and researches real competitors, communities, and channels. It does not just reason from what you tell it — it gathers real market information and synthesizes it. ## Connect via MCP Install: `npx mcp-server-cantrip` Requires: `CANTRIP_API_KEY` (get one at https://dashboard.cantrip.ai) ```json { "mcpServers": { "cantrip": { "command": "npx", "args": ["mcp-server-cantrip"], "env": { "CANTRIP_API_KEY": "ct_your_key" } } } } ``` Prefer CLI over MCP? Use [cantrip-cli](https://github.com/ozten/cantrip-cli) instead. ## MCP Tools Reference ### Project Management - `cantrip_status` — Check auth, current project, and credit balance - `cantrip_project(action: "list")` — List all projects - `cantrip_project(action: "switch", slug: "...")` — Switch active project - `cantrip_init(name, description, brief_text?)` — Create a new project. Optional `brief_text` extracts entities automatically. ### Context Graph — Entities Entity types: `icp`, `pain_point`, `value_prop`, `competitor`, `channel` - `cantrip_entity_add(entity_type, name, description)` — Add an entity to the graph - `cantrip_snapshot()` — View the full project: all entities, states, and counts - `cantrip_snapshot(entity_type, entity_id)` — View a single entity's details ### Review Queue Cantrip infers entities automatically. Inferred entities enter a review queue for human approval. - `cantrip_review(entity_type)` — List pending inferred entities of a given type - `cantrip_review_accept(id)` — Promote inferred entity to accepted - `cantrip_review_reject(id)` — Reject an inferred entity - `cantrip_review_dismiss(id)` — Dismiss duplicates or irrelevant inferences ### Research & Workflows - `cantrip_research(topic, depth?)` — Run deep web research on a topic (competitors, channels, markets) - `cantrip_playbook()` — Generate a full GTM playbook from the current Context Graph ## Entity States Every entity in the Context Graph has a state: | State | Meaning | |-------|---------| | `accepted` | Human-verified, used in all recommendations | | `inferred` | Auto-generated, awaiting review | | `rejected` | Explicitly wrong or off-target | You can correct the graph at any time. All future recommendations reflect your corrections. ## Capabilities - ICP (ideal customer profile) definition and customer persona development - Competitive analysis and market research (crawls real public data) - Positioning and messaging frameworks - Channel strategy and prioritization - Go-to-market playbooks and weekly action plans - Deep research on markets, competitors, and communities - Design assets (social media graphics, launch materials) ## Pricing Credits-based. All features available from day one — credits control depth, not access. You always see the cost before confirming. | Tier | Price | Credits | Per Credit | |------|-------|---------|------------| | First steps | $19 | 200 | $0.095 | | Back for more | $49 | 650 (+50 bonus) | $0.075 | | Busy beaver | $99 | 1,550 (+150 bonus) | $0.064 | | Enterprise for a week | $299 | 5,750 (+750 bonus) | $0.052 | Example costs: quick lookup ~1 credit, analysis ~15 credits, deep research ~50 credits, full GTM playbook ~100 credits. ## Data Ownership You own everything. Cantrip does not train on your data. Full Context Graph export available. Account and data deletion at any time. ## API Base URL: https://api.cantrip.ai Auth: Bearer token (API key) Docs: https://docs.cantrip.ai --- ## Demo: Full Agent Session via MCP The following is a real session showing a human user working with Claude Code as an AI agent, which connects to Cantrip's backend (another AI agent) via MCP. It demonstrates: project creation, entity management, human-in-the-loop review, parallel research, and Context Graph population. ### Step 1: Check Status and Discover Projects **User:** Using the cantrip MCP server, who am I and what projects do we have? **Agent calls:** ``` cantrip_status() → Authenticated as austin.ok (personal team). Active project: bark-brew. cantrip_project(action: "list") → Projects: books, default (My Project), bark-brew ``` **Agent responds:** You're authenticated as austin.ok. You have 3 projects: books, My Project, and bark-brew. --- ### Step 2: Create a New Project **User:** I want to focus on small businesses in the Greenwood neighborhood of Seattle and help them with GoToMarket services. Please create a new project and work on this business idea. **Agent calls:** ``` cantrip_init( name: "Greenwood GTM", description: "GoToMarket services for small businesses in the Greenwood neighborhood of Seattle — restaurants, retail, services." ) → Project "greenwood-gtm" created and set as active. ``` The agent then populates initial entities by calling `cantrip_entity_add` multiple times in parallel: ``` cantrip_entity_add(entity_type: "icp", name: "Independent Restaurant & Cafe Owners", description: "Owner-operators along Greenwood Ave N who handle their own marketing...") cantrip_entity_add(entity_type: "icp", name: "Greenwood Retail & Boutique Shops", description: "Indie stores on or near Greenwood Ave selling gifts, vintage, specialty...") cantrip_entity_add(entity_type: "icp", name: "Local Service Businesses", description: "Plumbers, dentists, salons, and other service businesses...") cantrip_entity_add(entity_type: "pain_point", name: "No time for marketing", description: "Running day-to-day operations leaves no bandwidth for marketing...") cantrip_entity_add(entity_type: "pain_point", name: "Limited marketing budget", description: "Cannot afford traditional agencies at $2K-5K/month...") cantrip_entity_add(entity_type: "value_prop", name: "Affordable GTM strategy", description: "Comparable insights to a $200/hr consultant at 1/100th the cost...") ... (14 entities added in parallel batches) ``` **Cantrip's backend** also auto-infers additional entities from the project description, populating the review queue. ``` cantrip_snapshot() → ICPs: 3 accepted, 8 inferred | Pain Points: 4 accepted, 16 inferred | Value Props: 4 accepted, 10 inferred ``` --- ### Step 3: Human-in-the-Loop Review (ICPs) **User:** Let's review ICPs. **Agent calls:** ``` cantrip_review(entity_type: "icp") → 8 inferred ICPs pending review ``` Agent fetches details on each unique inferred ICP: ``` cantrip_snapshot(entity_type: "icp", entity_id: "65e3d857...") → New Restaurant/Cafe Owners cantrip_snapshot(entity_type: "icp", entity_id: "2069de79...") → Established Service Business Owners cantrip_snapshot(entity_type: "icp", entity_id: "6cd18502...") → Retail Business Owners cantrip_snapshot(entity_type: "icp", entity_id: "6a663282...") → Time-Strapped Multi-Location Owners ``` **Agent presents 4 unique ICPs** (identifies 4 others as duplicates) and gives recommendations: 1. New Restaurant/Cafe Owners — *overlaps with accepted ICP, but distinct enough (pre-launch focus)* 2. Established Service Business Owners — *recommend reject, too similar to "Local Service Businesses"* 3. Retail Business Owners — *recommend reject, duplicate of "Greenwood Retail & Boutique Shops"* 4. Time-Strapped Multi-Location Owners — *recommend accept, new segment* **User:** Yes and 4 — accept. **Agent calls** (parallel): ``` cantrip_review_accept(id: "65e3d857...") # New Restaurant/Cafe Owners cantrip_review_accept(id: "6a663282...") # Time-Strapped Multi-Location Owners cantrip_review_reject(id: "2069de79...") # Established Service Business Owners cantrip_review_reject(id: "6cd18502...") # Retail Business Owners cantrip_review_dismiss(id: "56ae1d69...") # duplicate cantrip_review_dismiss(id: "beba4adf...") # duplicate cantrip_review_dismiss(id: "706de690...") # duplicate cantrip_review_dismiss(id: "274a3a57...") # duplicate ``` **Result:** 5 accepted ICPs, 0 pending. --- ### Step 4: Batch Review (Pain Points + Value Props) **User:** Let's do both pain points and value props next. The agent identifies duplicates of already-accepted items and presents only unique new ones. User approves the agent's recommendations. Agent processes all 26 reviews in a single batch: ``` # Pain Points — accept 5 new, reject 4 duplicates, dismiss 7 re-inferences cantrip_review_accept(id: "1f507e8b...") cantrip_review_accept(id: "72a2b7d2...") cantrip_review_accept(id: "446a4f76...") cantrip_review_accept(id: "6d15cc6d...") cantrip_review_accept(id: "e47f1580...") cantrip_review_reject(id: "0400c5e2...") ... (4 rejects, 7 dismisses) # Value Props — accept 5 new, reject 5 duplicates cantrip_review_accept(id: "2650173b...") cantrip_review_accept(id: "4de95cba...") ... (5 accepts, 5 rejects) ``` --- ### Step 5: Agent-to-Agent Research (Parallel) **User:** Let's run research on competitors and channels. The agent spawns two background research agents that work in parallel. Each sub-agent uses web search tools to gather real data, then reports back to the primary agent. ``` # Agent launches two parallel research tasks: Agent("Research Greenwood competitors", prompt: "Research marketing agencies and GTM service providers serving small businesses in the Greenwood/north Seattle area...", run_in_background: true) Agent("Research GTM channels", prompt: "Research the best go-to-market channels for a hyper-local marketing services company targeting Greenwood small businesses...", run_in_background: true) ``` **Agent tells the user:** Two research agents are running in parallel: 1. Competitor research — finding agencies, freelancers, national franchises in Greenwood/north Seattle 2. Channel research — identifying best customer acquisition channels for reaching Greenwood small business owners **Competitor research completes first.** Agent immediately adds findings via MCP while channel research continues: ``` cantrip_entity_add(entity_type: "competitor", name: "Seattle Digital Agencies (Bonsai, Odd Dog, etc.)", description: "Local agencies offering SEO, PPC, social media to SMBs. Typically $1.5K-5K/month...") cantrip_entity_add(entity_type: "competitor", name: "Freelance SEO & Social Media Managers", description: "Individual contractors on Upwork, Fiverr offering GBP optimization...") cantrip_entity_add(entity_type: "competitor", name: "National SMB Platforms (Scorpion, Thryv, Hibu)", description: "National marketing franchises selling templated SEO, PPC, reputation management...") cantrip_entity_add(entity_type: "competitor", name: "DIY Tools (Canva, Mailchimp, Square, Meta)", description: "Self-service tools: Canva ($13/mo), Mailchimp (free-$35/mo)...") cantrip_entity_add(entity_type: "competitor", name: "Greenwood-Phinney Chamber of Commerce", description: "Local business association organizing neighborhood events...") ``` **Channel research completes.** Agent adds channels: ``` cantrip_entity_add(entity_type: "channel", name: "Greenwood-Phinney Chamber Meetings", description: "Join the chamber ($150-300/yr), attend monthly mixers, volunteer for committees...") cantrip_entity_add(entity_type: "channel", name: "Door-to-Door on Greenwood Ave N", description: "Walk the commercial corridor (85th to 105th) with a free Business Visibility Report...") cantrip_entity_add(entity_type: "channel", name: "Neighborhood Facebook Groups & Nextdoor", description: "Join Greenwood/Phinney Neighbors, share genuine value-add tips...") cantrip_entity_add(entity_type: "channel", name: "Own Google Business Profile (Inbound SEO)", description: "Optimize own GBP for 'marketing agency Greenwood Seattle'...") cantrip_entity_add(entity_type: "channel", name: "Referral Partners (CPAs, Coaches, SCORE)", description: "Build relationships with local CPAs/bookkeepers who serve Greenwood businesses...") cantrip_entity_add(entity_type: "channel", name: "'Greenwood Business Insider' Newsletter", description: "Biweekly email featuring one local business spotlight, neighborhood tips...") cantrip_entity_add(entity_type: "channel", name: "Community Events (Farmers Market, Car Show)", description: "Sponsor or volunteer at Greenwood Car Show and Farmers Market...") cantrip_entity_add(entity_type: "channel", name: "Commercial Landlord Partnerships", description: "Partner with Greenwood commercial landlords for new tenant welcome packages...") ``` --- ### Step 6: Final Snapshot ``` cantrip_snapshot() → ICPs: 5 | Pain Points: 9 | Value Props: 9 | Competitors: 5 | Channels: 8 | Review queue: 0 ``` **In a single session, the user went from a vague idea ("help Greenwood businesses with GTM") to a fully populated Context Graph with 36 verified entities — ready for playbook generation.** --- ## What This Demo Shows 1. **MCP tool calls** — Every interaction with Cantrip flows through structured MCP tools (`cantrip_status`, `cantrip_entity_add`, `cantrip_review_accept`, etc.), not free-form chat. 2. **Human ↔ Agent interaction** — The agent presents options, makes recommendations, and the human decides ("Yes and 4 — accept"). The agent handles the mechanical work (processing 26 reviews). 3. **Agent ↔ Agent (MCP Cantrip)** — The agent calls Cantrip's backend, which is itself an AI agent. Cantrip auto-infers entities from project descriptions, generating a review queue. The primary agent also spawns sub-agents for parallel web research, then feeds results back into Cantrip via MCP. 4. **Parallel execution** — Entity additions, review processing, and research tasks run concurrently for speed. 5. **Persistent Context Graph** — Everything persists across sessions. The next conversation starts with 36 entities already in place. ## Links - Website: https://cantrip.ai - Dashboard: https://dashboard.cantrip.ai - Docs: https://docs.cantrip.ai - Short version: https://cantrip.ai/llms.txt - FAQ: https://cantrip.ai/faq - FAQ (plain text): https://cantrip.ai/faq.txt - MCP config: https://cantrip.ai/.well-known/mcp.json - Agent config: https://cantrip.ai/.well-known/agent.json - CLI: https://github.com/ozten/cantrip-cli - Discord: https://discord.gg/hGMDRJWn - Contact: austin@cantrip.ai