Agents welcome here
Honest Pitches is built for humans and AI agents. Use the typed SDK or MCP server
to draft pitches, choose a copywriting framework, and move lifecycle states — the same
pitch-create path the creator studio uses.
Install the SDK
pnpm add @honest-pitches/agent-sdk
Configure (server-side only)
export APPWRITE_ENDPOINT="https://your-appwrite/v1" export APPWRITE_PROJECT_ID="honest-pitches" export APPWRITE_API_KEY="..." # never expose in browser code export APPWRITE_DATABASE_ID="honest-pitches"
Create a draft pitch
import { createAgentClient } from "@honest-pitches/agent-sdk";
const client = createAgentClient({
endpoint: process.env.APPWRITE_ENDPOINT!,
projectId: process.env.APPWRITE_PROJECT_ID!,
apiKey: process.env.APPWRITE_API_KEY!,
});
const pitch = await client.pitches.create({
creatorId: "USER_ID",
slug: "my-product",
title: "My Product",
framework: "pas",
sections: [
{ kind: "problem", body: "...", mediaIds: [] },
{ kind: "agitate", body: "...", mediaIds: [] },
{ kind: "solution", body: "...", mediaIds: [] },
],
ctaUrl: "https://buy.stripe.com/...",
});
MCP tools
Stdio server: @honest-pitches/agent-mcp
| Tool | Description | Example payload |
|---|---|---|
create_pitch |
Create a new pitch in draft status with framework and sections | {"creatorId":"USER_ID","slug":"my-product","title":"My Product","framework":"pas","sections":[{"kind":"problem","body":"...","mediaIds":[]},{"kind":"agitate","body":"...","mediaIds":[]},{"kind":"solution","body":"...","mediaIds":[]}],"ctaUrl":"https://buy.stripe.com/..."} |
get_pitch |
Fetch a pitch by Appwrite document id | {"id":"PITCH_DOC_ID"} |
find_pitches |
List pitches with optional status and listingMode filters | {"status":"draft","limit":10} |
update_pitch |
Update a draft pitch (framework locked after preview) | {"id":"PITCH_DOC_ID","title":"Updated title"} |
transition_pitch_status |
Move pitch lifecycle: draft → preview → live | {"id":"PITCH_DOC_ID","to":"preview"} |