MCP server
One remote MCP server. Your agent reads your brand, writes hooks, makes posts and schedules them.
Endpoints
| URL | Auth | Use for |
|---|---|---|
| https://app.hookbird.ai/api/mcp-oauth-dynamic | OAuth 2.1 + PKCE, dynamic registration | Claude, ChatGPT, Cursor, OpenClaw, Hermes |
| https://app.hookbird.ai/api/mcp | Header Authorization: Bearer <key> | Claude Code, scripts, Grok |
| https://app.hookbird.ai/api/mcp/<key> | Key in the path | Clients that cannot send headers |
Transport: Streamable HTTP. Your API key is in the app under Agents (copy, reveal, regenerate, test connection).
Claude Code
bash
claude mcp add --transport http hookbird https://app.hookbird.ai/api/mcp-oauth-dynamicThen type /mcp, pick hookbird and sign in. With a key instead:
bash
claude mcp add --transport http hookbird https://app.hookbird.ai/api/mcp \
--header "Authorization: Bearer $HOOKBIRD_API_KEY"Claude desktop & web
- 1Settings → Connectors → Add custom connector
- 2Name it Hookbird and paste the URL
- 3Click Connect and approve access
url
https://app.hookbird.ai/api/mcp-oauth-dynamicChatGPT
- 1Settings → Apps & Connectors → Advanced → Developer mode
- 2Create connector, paste the URL, authentication: OAuth
- 3Enable it in a chat from the + menu
url
https://app.hookbird.ai/api/mcp-oauth-dynamicCursor
Add to .cursor/mcp.json (or ~/.cursor/mcp.json), then Settings → MCP → Connect.
json
{
"mcpServers": {
"hookbird": {
"url": "https://app.hookbird.ai/api/mcp-oauth-dynamic"
}
}
}OpenClaw
bash
openclaw mcp add hookbird --url https://app.hookbird.ai/api/mcp-oauth-dynamic --transport streamable-http --auth oauth
openclaw mcp login hookbirdAsk: “write 5 hooks for my brand and score them”.
Hermes Agent
yaml
# ~/.hermes/config.yaml
mcp_servers:
hookbird:
url: "https://app.hookbird.ai/api/mcp-oauth-dynamic"
auth: oauthRun hermes mcp login hookbird, then /reload-mcp. Install with pip install "hermes-agent[mcp]".
Grok (xAI API)
Pass Hookbird as a remote MCP tool in a Responses API request. xAI calls it server-side.
json
{
"model": "grok-4.7",
"input": "Score this hook: POV: 11pm, your accountant wants 43 receipts",
"tools": [
{
"type": "mcp",
"server_label": "hookbird",
"server_url": "https://app.hookbird.ai/api/mcp",
"headers": {
"Authorization": "Bearer $HOOKBIRD_API_KEY"
}
}
]
}Tools
Brand & hooks
| Tool | Does |
|---|---|
| brand_profile | Read the brand: voice, products, audiences, competitors |
| brand_read | Build the brand profile from a URL |
| hooks_generate | Write scored hooks, best first |
| hooks_score | Score a hook 0–100 with fixes and a rewrite |
| strategy_plan | Plan weeks of posts as calendar drafts |
Studio
| Tool | Does |
|---|---|
| studio_formats | Formats and their credit prices |
| studio_generate | Start a generation (spends credits) |
| studio_status | Poll a generation, get its outputs |
| credits_balance | Credits left |
| generateImageTool | Quick image |
| generateVideoOptions · generateVideoTool · videoStatusTool · videoFunctionTool | Video helpers |
Research
| Tool | Does |
|---|---|
| radar_ads | Competitor ads and days live |
| radar_trends | Hashtags, sounds, creators by niche and region |
| benchmarks | Your 30 days vs niche median and top 10% |
Channels & posts
| Tool | Does |
|---|---|
| integrationList | Connected channels |
| integrationSchema | Rules and settings for a channel |
| integrationSchedulePostTool | Schedule or draft a post, after you confirm |
| postsListTool · postSettingsTool · deletePostTool | Read, edit, delete posts |
| groupList · triggerTool | Customers, channel actions |
Media
| Tool | Does |
|---|---|
| uploadFromUrlTool | Import a public file URL |
| mediaListTool | Media library |
| uploadWidgetTool · uploadWidgetTicketTool · uploadWidgetStatusTool | Upload widget (MCP Apps clients) |
| clippingTool · clippingStatusTool · clippingWidgetTicketTool | Clip long videos |
i
Hooks, brand, plans and research are free (daily caps apply). Only Studio spends credits, and the agent quotes the price first. Every post needs your confirmation.
Security
- Each key or token is scoped to one workspace. Nothing crosses workspaces.
- Regenerate the key in Agents to revoke every client using it.
- Missing or wrong key: the server refuses the call.