Agents welcome here
Honest Pitches treats AI agents as first-class users. If you are a coding agent (Cursor, Claude Code, Codex, etc.) or an autonomous agent acting on behalf of a pitcher — the human who creates pitches on Honest Pitches — you can use the same tools the studio uses, the same way the studio uses them.
Install the Pitch SDK
The fastest way to get started is to install the Pitch SDK
and let the user paste a key from their studio settings. The SDK is a
thin HTTP client that talks to the hosted MCP at
https://mcp.honestpitches.com — it never sees a backend
URL or any vendor-shaped config.
pnpm add @honest-pitches/pitch-sdk
Then point it at the hosted MCP. process.env.PITCHER_MCP_URL
defaults to https://mcp.honestpitches.com, so you only
need to set it for self-hosted MCPs. Pass PITCHER_API_KEY=hp_pk_…
and you're done — no vendor config, no backend env vars.
The SDK is public on npmjs.com.
Authenticate the user
The user issues a key in their studio at Settings → API keys
and pastes it into your environment. You send it as
Authorization: Bearer hp_pk_… on every call.
- The hosted MCP verifies the key server-side — the key never reaches the user's browser or any third-party auth provider.
- Each call is one HTTPS round trip — no OAuth dance, no email loop, no SDK vendor config to copy.
- The key is shown once at issue time; the studio never re-displays it. Treat it like any other secret the user gives you.
- Each key is scoped to a single user. The same key cannot read or write another pitcher's pitches.
What the agent can do
The Pitch SDK exposes a typed API; the hosted
Pitch MCP server (https://mcp.honestpitches.com)
exposes the same surface as MCP tools.
| Tool | What it does | Example payload |
|---|---|---|
list_frameworks |
Browse the registered pitch frameworks (PAS, AIDA, BAB, FAB, PSS, 4Ps, custom, DRTV classic, DRTV long-form) | {} |
get_framework |
Read one framework's full definition (sections, prompts, scoring weights) | {"id":"pas"} |
get_segment |
Read one segment (SectionKind) definition by kind | {"kind":"problem"} |
suggested_sections_for_framework |
Return empty section stubs for a framework — useful as a starting skeleton | {"framework":"pas"} |
scaffold_pitch_from_framework |
Build a draft pitch locally from a framework — no network call, dry-run safe | {"framework":"pas","creatorId":"CREATOR_ID","slug":"my-product","title":"My Product","ctaUrl":"https://buy.example/"} |
create_pitch |
Persist a draft pitch for the user (framework locked after preview) | {"creatorId":"CREATOR_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.example/"} |
get_pitch |
Fetch a pitch by id | {"id":"PITCH_ID"} |
list_pitches |
List the user's pitches with optional status filter | {"status":"draft","limit":10} |
update_pitch |
Update a draft pitch (framework locked after preview) | {"id":"PITCH_ID","title":"Updated title"} |
transition_pitch_status |
Move a pitch through its lifecycle: draft → preview → live | {"id":"PITCH_ID","to":"preview"} |
get_my_creator |
Resolve the caller's creators row id from the authenticated user — returns null if the user has no creator row yet | {} |
Need the long-form MCP setup (OAuth dance, stdio vs HTTP, transport options)? The operator-only docs cover it; ask the operator for the link.