# Connect an agent (MCP) # Connect an agent (MCP) Second Studio speaks the [Model Context Protocol](https://modelcontextprotocol.io), so any MCP-capable agent can use it with your API key. The server is hosted, so there is nothing to install: a URL and a header. Use the **agent key** in agent configuration. It cannot approve posts, so an agent can never release its own drafts. Keep it in the `SECOND_STUDIO_API_KEY` environment variable, never in chat or a repo: ```bash export SECOND_STUDIO_API_KEY="ss_live_..." ``` The fastest setup is the one prompt at [/setup.txt](/setup.txt): paste it into any agent. ## Hosted server URL: `https://second.studio.hellofaro.io/mcp` · Transport: Streamable HTTP · Auth: `Authorization: Bearer $SECOND_STUDIO_API_KEY` **Claude Code** ```bash claude mcp add --transport http second-studio https://second.studio.hellofaro.io/mcp --header "Authorization: Bearer $SECOND_STUDIO_API_KEY" ``` **Cursor** (`.cursor/mcp.json`), Windsurf and other clients with a JSON config ```json { "mcpServers": { "second-studio": { "type": "http", "url": "https://second.studio.hellofaro.io/mcp", "headers": { "Authorization": "Bearer ${env:SECOND_STUDIO_API_KEY}" } } } } ``` **Claude Desktop** (`claude_desktop_config.json`, through the `mcp-remote` bridge; put your key in place of MY_KEY, the file stays on your computer): ```json { "mcpServers": { "second-studio": { "command": "npx", "args": ["-y", "mcp-remote", "https://second.studio.hellofaro.io/mcp", "--header", "Authorization: Bearer ${SECOND_STUDIO_API_KEY}"], "env": { "SECOND_STUDIO_API_KEY": "MY_KEY" } } } } ``` **ChatGPT and other apps with connectors**: add a custom MCP connector with the URL above and the same Authorization header. **No MCP support**: call the REST API at `https://second.studio.hellofaro.io/v1` with the same header. `GET /v1/me` checks the key. Uploads go to a one-time upload URL from `upload_asset`, and agents poll `get_job` until a job finishes. ## Tools | Tool | What it does | Credits | |---|---|---| | `whoami` | Account, key scope and settings | n/a | | `get_credits` | Balance, prices and packs | n/a | | `upload_file` *(local)* | Upload a file from disk | n/a | | `create_upload_url` + `register_asset` *(remote)* | Upload in two steps | n/a | | `get_asset`, `list_assets`, `delete_asset` | Manage files | n/a | | `fetch_video` | A reference from a social URL | 1 if fetched on our servers | | `analyze_style` | Reference video to a reusable style | 2 for the first minute, then 1 per extra minute (10 min max) | | `get_style`, `list_styles` | Read styles, including the full spec | n/a | | `list_templates`, `get_template`, `save_template`, `delete_template` | Social videos saved to replicate | free (3 with analyze) | | `create_edit` | Your clips cut to a style | 5 | | `record_url` | Record a public web app | 3 | | `record_repo` | Build a private GitHub repository and record its key flows | 20+ | | `connect_github` | Admin: link to install the GitHub App on chosen repositories | free | | `create_character`, `get_character`, `list_characters`, `delete_character` | Stored identities you can reuse by id | like one image | | `create_brand`, `get_brand`, `list_brands`, `delete_brand` | Brand kits for explainer videos | n/a | | `write_script` | An editable scene-by-scene explainer script from a brief | 2 | | `create_explainer` | A rendered, branded explainer video from a brief or script | 12 first minute, +7 per extra minute | | `generate_image` | Character sheets, characters, locations, props, scenes, products | GPT Image 6 / 16 / 48 at 1K / 2K / 4K. A character sheet is twice that, and half comes back if the first render passes | | `generate_video` | Video shots, from text, an image or references (+ a voice track) | quoted per request | | `generate_voice` | Performed voiceover | 2 minimum, then 1 per 250 characters | | `lipsync` | Re-time a mouth to an audio track | 15 min, 1.25 per second | | `get_job`, `list_jobs` | Job status and outputs | n/a | | `list_social_accounts` | Connected accounts | n/a | | `connect_social_account` | A link to connect a new account | n/a | | `create_post`, `list_posts` | Draft and track posts | 1 per post | | `list_crew` | The crew: preset robots and the tools each bundles | free | | `get_robot` | One robot's skills, tools, endpoints and starter prompt | free | | `list_models` | Image, video and swap models and what each supports | n/a | | `create_skill`, `list_skills`, `get_skill`, `update_skill`, `delete_skill` | Your own versioned image recipes | n/a | | `edit_image` | Masked edit of a real photo, rest untouched | per image | | `swap_character`, `motion_transfer` | Keep the footage, change the subject | quoted | | `finalize_video`, `cancel_job`, `upscale_video` | Drafts → keeper, cancel with refund, 2160p resample | quoted / n/a / 3 | | `library` | Everything the team can reuse by id, with who made it | n/a | | `list_members`, `invite_member`, `update_member`, `remove_member`, `create_member_key`, `list_keys`, `revoke_key` | Team members, roles, keys, credit and dollar caps, claim links (admin) | n/a | | `list_invites`, `invite_by_email`, `create_invite_link`, `revoke_invite` | Invite by email (joins on Google sign-in) or by expiring link (admins; managers into their team) | none | | `my_memberships`, `list_teams`, `create_team`, `update_team`, `delete_team`, `set_member_team` | Teams and managers (governance accounts; admin to change) | none | | `list_budgets`, `allocate_budget`, `revoke_budget`, `set_key_credit_cap`, `list_audit` | Member and team credit budgets, per-key caps, audit log (admins; managers inside their team) | none | | `list_providers`, `connect_provider`, `disconnect_provider` | Your own Higgsfield / ElevenLabs keys (admin, where enabled) | n/a | | `list_voices`, `clone_voice`, `delete_voice` | Your workspace's voices and clones from your samples | like voice | | `analyze_brand` | A suggested brand kit from your boards | 1 | | `import_brand_from_url` | Import a brand from its guidelines page or brand book PDF: logo, colors, fonts, voice and tone, taglines, do's and don'ts, imagery notes. Fills a kit you pick or creates one, and every field stays editable. Also on the Brand tab in the dashboard. | 1 | | `brand_from_website` | Brand guidelines from your public website (colors, font, tone, audience, products, voice rules), saved to a brand kit without overwriting your edits. New accounts with a work email get one free scan of their domain at signup. | 1 | | `report_issue`, `list_reports` | File a bug, feature request or question; follow the response | n/a | | `feedback`, `/feedback` prompt | Send product feedback to the team (10 per hour per key) | 0 | The `/feedback` prompt (MCP prompt `feedback`) asks what you want to share, then sends it with the `feedback` tool. It is free. Approving posts is deliberately not a tool. A person approves with the admin key: see [Posting](social.html). ## Example prompts - *"Analyze ./refs/viral.mp4 and tell me what makes its editing work."* - *"Make three 15-second edits of ./footage in the style of that reference, with different hooks."* - *"Record our pricing page at https://example.com/pricing on mobile, then cut it to my saved style."* - *"Draft the best one to our TikTok for tomorrow 6pm Eastern."*