Four doors. One gateway.
The gateway lives at https://app.jinn.works/api/mcp and speaks standard MCP over HTTP: JSON-RPC 2.0, bearer-authed, three methods (initialize, tools/list, tools/call). Mint a token from your account panel (shown exactly once), or take the free 60-minute demo token from the product page, no login.
Skills
MIT-licensed marketing skills, installed into your agent's skills directory and run locally. Featured today: Launch Positioning · Campaign Brief · Brand Guardrails Review · Brand Voice Content · Ad Copy Variants · Email Sequence · Brand Messaging Audit · Competitor Positioning Map · Product Launch Playbook · Know Your Brand DNA. The catalog grows as skills ship.
npx skills add jinn/brand-voice-contentEach skill names its deliverable (a positioning brief, a launch playbook, a red-line review) and sharpens when the gateway is connected: grounded skills read your record instead of guessing.
Agents
25 marketing personas across Marketing, Brand, Content, Design: 7 marketing · 6 brand · 6 content · 6 design. A persona is a working brief for your agent, not a separate install: connect over MCP, name the persona, and point it at the record.
"As the Jinn Copywriter: read the brand with get_brand_dna_public, then write the launch line."The full roster, by name: Brand Strategist · Go-To-Market Strategist · Positioning Consultant · Lifecycle Marketing Lead · Campaign Strategist · Audience Insights Analyst · Launch Manager · Brand Guardian · Brand Voice Steward · Naming Strategist · Brand Architect · Rebrand Consultant · Brand Storyteller · Content Strategist · Copywriter · Editor · Social Media Manager · Email Copywriter · SEO Content Strategist · Art Director · Brand Designer · Design Systems Lead · Packaging Designer · Web Designer · Motion Designer.
MCP
Claude Code, one command. Keep the token in your environment as JINN_MCP_TOKEN, never in the command itself.
claude mcp add --transport http jinn https://app.jinn.works/api/mcp --header "Authorization: Bearer $JINN_MCP_TOKEN"Claude Desktop or any generic client: the raw config block. Swap the placeholder for your minted token where the file lives on your machine.
{
"mcpServers": {
"jinn": {
"url": "https://app.jinn.works/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_JINN_MCP_TOKEN"
}
}
}
}Cursor: one-click install. The deeplink carries a placeholder; paste your real token into Cursor after it installs.
API
No client at all: POST JSON-RPC 2.0 to the endpoint with Authorization: Bearer YOUR_JINN_MCP_TOKEN. The three supported methods, as wire bodies:
{ "jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": { "protocolVersion": "2025-03-26", "capabilities": {} } }{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }{ "jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": { "name": "get_brand_dna_public", "arguments": { "slug": "paleo-pro" } } }The 16 tools.
Registry names, verbatim. Your token's own tools/list returns exactly the set its audience, scopes, and tier grant: a public-audience token (demo, self-serve) lists the 5 public tools; internal-audience tokens (owner-bound and operator-issued) list all 16. A tool above your audience does not read as forbidden; it reads as an unknown method, deliberately.
Brand DNA & access
The verified record an agent writes from, plus the tools that read the wire itself.
pingpublicThe smoke tool. Verifies gateway wiring end to end.get_token_contextpublicWhat this token can reach: brands, scopes, tier, expiry.get_brand_dnainternalThe canonical typed record: identity, positioning, voice, pillars.get_brand_dna_publicpublicA bounded public projection. Competitive intel is never included.get_verified_facts_statusinternalThe review-queue state: active, proposed, gaps.get_marketing_truthinternalThe always-current product and strategy truth feed.
Design system
The same design contracts the Jinn products render from, read-only.
get_brand_design_mdpublicThe agent-readable DESIGN.md for an opted-in brand.get_brand_design_tokenspublicDesign tokens as DTCG JSON: color, type, spacing, motion.get_brand_kitinternalThe render-ready kit: colors, fonts, logo, name, spacing.
Agencies work
Discover, activate, and read the deliverables an owned engagement produces.
list_brandsinternalThe brands this token can act on, each { slug, name }.list_engagementsinternalYour engagements and their per-deliverable status.activate_agency_packinternal · writeThe one write tool. Queues work or hands back a human-action URL.get_engagement_statusinternalPoll an engagement until each deliverable is ready.get_deliverableinternalRead one rendered deliverable when it is ready.
Voice
Rewrite copy in a brand voice through the real Ghost voice-transform service.
list_voice_profilesinternalThe voice profiles your allowlisted brands are mapped to.voice_transforminternalRewrite copy in a brand voice, with a verification report.
Tokens, entitlement, limits, errors.
Token lifecycle
- Mint from /account/tokens. The secret (jmcp_...) is shown exactly once and stored only as a hash.
- Rotate with a 24-hour overlap by default (48h maximum): the old secret keeps working while you swap in the new one. A revoked token cannot be rotated back to life.
- Revoke immediately from the same panel.
- Demo tokens: 60 minutes, read-only, the showcase brands only, 3 concurrently active per IP (fail-closed) and 5 mints an hour.
Entitlement is live, not baked in
A token carries no frozen tier. Its effective access resolves from the live subscription on every request, fail-closed on a read error, so trial-to-paid, upgrades, and lapses all take effect on the next call. Nothing to re-mint.
Rate limits
120 requests a minute per token. Over it, a 429-shaped JSON-RPC error with a Retry-After you can respect programmatically.
Error shapes
- TIER_REQUIRED (-32004) · A tier-gated tool called below its tier. A DISCLOSED upgrade path: data carries { required_tier, upgrade_url }.
- not_found · Any brand, engagement, or voice you cannot reach returns the SAME generic not-found. Existence is never disclosed.
- METHOD_NOT_FOUND (-32601) · A higher-audience tool reads as an unknown method to a lower-audience token, so its existence stays hidden.
- RATE_LIMITED (-32003) · Over 120 requests in a minute on one token. The response carries a Retry-After.
Every tool failure also carries a machine-readable data.kind plus a retryable flag, so an agent decides retry-vs-fix-vs-stop without regexing prose.
Terms and the full reference
The API terms govern gateway use. The developer reference with per-tool request and response shapes lives in the developer docs.