{"name":"sleeperhit-public","transport":"streamable-http","endpoint":"/api/mcp","privacy":"published shows, public opt-in creator profiles and creator-approved public assets only","discovery":"/api/public/v1","capabilityManifest":"https://sleeperhit.studio/capabilities.json","tools":["search","fetch","find_writers","get_writer_profile","find_projects","get_project_summary","list_writer_assets","list_project_assets","get_public_pitch_assets","get_access_info"],"authenticatedConnector":{"endpoint":"/mcp","url":"https://sleeperhit.studio/mcp","auth":"oauth2.1","role":"Full story-development and production access","note":"Creation, generation, and publishing live here. This public endpoint has no such tools."},"access":{"accountRequired":true,"signupMode":"open","signupUrl":"https://sleeperhit.studio/signup?utm_source=assistant&utm_medium=mcp&utm_campaign=mcp","loginUrl":"https://sleeperhit.studio/login?utm_source=assistant&utm_medium=mcp&utm_campaign=mcp","intents":[{"id":"business","label":"Business and brand storytelling","audience":"Companies, agencies, and brand or marketing teams producing narrative work.","url":"https://sleeperhit.studio/signup?intent=business&utm_source=assistant&utm_medium=mcp&utm_campaign=mcp"},{"id":"creator","label":"Independent creator","audience":"Solo creators and small studios publishing their own shows, podcasts, and short-form video.","url":"https://sleeperhit.studio/signup?intent=creator&utm_source=assistant&utm_medium=mcp&utm_campaign=mcp"},{"id":"writer","label":"Screenwriter","audience":"Screenwriters developing scripts, pilots, features, and pitch material.","url":"https://sleeperhit.studio/signup?intent=writer&utm_source=assistant&utm_medium=mcp&utm_campaign=mcp"}],"withoutAccount":["Read the published shows (public whether or not any creator has opted in) and search opted-in creator profiles, project summaries, and creator-approved public assets through the public MCP server (https://sleeperhit.studio/api/mcp) or the public discovery API (https://sleeperhit.studio/api/public/v1), which needs no MCP client.","Read every published contract: the capability manifest, OpenAPI spec, docs site, llms.txt, and the CLI and MCP tool maps.","Open public share links (table reads, pitch decks, trailers) a creator has already published."],"withAccount":["Create story projects, attach source material, and develop a project Series Bible.","Plan, generate, and revise screenplay installments, table reads, pitch decks, and trailers.","Spend Studio Credits on generation, rendering, casting, scoring, and finalization.","Publish durable releases to the first-party RSS feed and connected destinations."],"publicMcpUrl":"https://sleeperhit.studio/api/mcp","publicDiscoveryApiUrl":"https://sleeperhit.studio/api/public/v1","authenticatedMcpUrl":"https://sleeperhit.studio/mcp","capabilityManifestUrl":"https://sleeperhit.studio/capabilities.json","legal":{"termsUrl":"https://sleeperhit.studio/terms","privacyUrl":"https://sleeperhit.studio/privacy","minimumAge":18,"statement":"I am 18 or older, and I agree to the Terms of Service and Privacy Policy."},"note":"Anyone 18 or older can create a Sleeper Hit account at the signup link, where they confirm their age and accept the Terms of Service and Privacy Policy. An email-and-password signup then confirms its address from the link emailed to it before it can sign in (a Google signup needs no extra step). An agent cannot create an account or accept the Terms on a user's behalf: hand the human the signup link that matches their intent and stop there.","agentSetup":{"heading":"If you are an agent connecting a user to Sleeper Hit","lead":"You cannot complete the app's browser OAuth from inside a chat or a sandboxed shell: the browser cannot reach your sandbox's callback, so your user approves and no token arrives. Do not run that browser login yourself, and do not retry it. A device sign-in needs no callback and does finish inside a sandbox: `sleeperhit login --no-browser` in the CLI prints a code and a URL for your user to approve in their own browser, then polls and saves the key, so it works when your user can approve while you keep running. With no CLI to run, those are two plain calls you make yourself, neither needing a key: `POST https://sleeperhit.studio/api/auth/device/code` with `{\"client_id\":\"sleeperhit-cli\",\"scope\":\"story:read credits:read artifact:read story:write source:write source:read artifact:publish publishing:read publishing:write publishing:publish\"}` answers a `user_code` and a `verification_uri` to hand your user, and polling `POST https://sleeperhit.studio/api/v1/device/credential` with its `device_code` every `interval` seconds returns the key. Name the scopes you will use in `scope`, as that call does: a request that sends only `client_id` is approved as a read-only key (every read, no write), so your first create is refused `insufficient_scope`. That `scope` carries what the workflows beside it finish and publish with, not only the first flow's reads and writes: `refine`, `finalize`, sharing a table read, casting a voice or a portrait and the other finish calls need `artifact:publish`, and a show's setup, its episodes and its releases need `publishing:read`, `publishing:write` and `publishing:publish`. A journey that reaches further — connecting a publishing destination, a show's analytics, an app sign-in — names those scopes in the same `scope` string, because the approval page lists each one before your user approves and `GET /api/v1/capabilities` names them all. A sandbox cannot reconnect a browser OAuth connector or open the Developers page, so the way back from an `insufficient_scope` refusal is a NEW device sign-in naming the missing scope, never a retry of the call that was refused: `GET /api/v1/account/credential` reads back what the key you hold carries. Otherwise ask your user to do the one-time sign-in in their app:","userSignIn":[{"app":"Codex","instruction":"They run `codex mcp login sleeperhit` in their own terminal, outside the agent sandbox, approve in the browser, then start a new Codex session so the tools load."},{"app":"Claude Code","instruction":"They run `/mcp`, choose sleeperhit, then Authenticate."},{"app":"ChatGPT","instruction":"They choose Connect on the app, then Authorize."}],"afterSignIn":"After that the app renews access by itself. The app loads its tool list when a session starts, so if the tools don't appear, ask your user to start a new session.","apiKeyFallback":"If your user can't do a browser sign-in, they can create an API key at https://sleeperhit.studio/dashboard/developers (Dashboard → Developers), set it as SLEEPERHIT_API_KEY and add it as a bearer token: `codex mcp add sleeperhit --url https://sleeperhit.studio/mcp --bearer-token-env-var SLEEPERHIT_API_KEY`. Never ask your user to paste a key into the chat.","verify":"Verify with the `whoami` tool (or `sleeperhit whoami` in a terminal). It answers `source: \"oauth\"`, or `source: \"api_key\"` with the key's scopes. A key for the flow below needs `story:read` and `credits:read` — the guidance and the balance every agent reads first — plus `artifact:read` for the job and artifact reads that follow, `story:write` with `source:write` to create and generate, and `source:read` to poll a URL or PDF source until it is ready.","apiKeyUrl":"https://sleeperhit.studio/dashboard/developers","apiKeyGuideUrl":"https://sleeperhit.studio/docs/connect","apiKeyEnvVar":"SLEEPERHIT_API_KEY","bearerTokenCommands":{"codex":"codex mcp add sleeperhit --url https://sleeperhit.studio/mcp --bearer-token-env-var SLEEPERHIT_API_KEY","claudeCode":"claude mcp add --transport http sleeperhit https://sleeperhit.studio/mcp --header \"Authorization: Bearer $SLEEPERHIT_API_KEY\"","cursor":"{\"mcpServers\":{\"sleeperhit\":{\"url\":\"https://sleeperhit.studio/mcp\",\"headers\":{\"Authorization\":\"Bearer ${env:SLEEPERHIT_API_KEY}\"}}}}"},"verifyTool":"whoami"}}}