Meta Muse MCP Server by useapi.net
Meta Muse (muse.ai) agent chat with its live browser, images, videos with sound and its Library. Third-party, paid ($15/month), runs on your own Muse account.
Hosted MCP Server
npx add-mcp 'https://api.useapi.net/v1/muse/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Muse MCP Server
October 13, 2026 (October 14, 2026)
Table of contents
The useapi.net Muse MCP server lets an AI assistant such as Claude Code, Cursor or VS Code Copilot use Muse, Meta’s AI agent, on your own Muse account. It is a hosted Model Context Protocol server with 37 tools: generate images and videos, chat with the Muse agent, answer its permission requests, open a live view of its web browser, manage the account’s Library and files, and reset the account. Each tool calls the Muse API, so the same rules, limits and allowance apply. Nothing needs to be installed or hosted.
Is there a Muse MCP server? Yes. useapi.net, a third-party service not affiliated with Meta, hosts one at https://api.useapi.net/v1/muse/mcp with 37 tools for Muse images, videos, chat, the agent’s browser and the Library, on your own Muse account, nothing to install.
Prefer REST? Tutorial: How to Generate AI Videos and Images with the Meta Muse API · Code: github.com/useapi/muse-api
See all useapi.net MCP servers on Model Matrix & MCP.
Endpoint and authorization
https://api.useapi.net/v1/muse/mcp
- Transport: Streamable HTTP.
- Listed in the official MCP Registry as
net.useapi/muse, so MCP clients and directories that read the registry can find it by that name. - Authorization: your useapi.net API token in the
Authorization: Bearer …header, see Setup useapi.net. - You need at least one Muse account added with Setup Muse. Adding and removing accounts is not available over MCP: use POST /accounts or the Setup Muse page.
Setup
Replace YOUR_API_TOKEN with your useapi.net API token.
Claude Code
claude mcp add --transport http useapi-muse https://api.useapi.net/v1/muse/mcp --header "Authorization: Bearer YOUR_API_TOKEN"
Cursor
In ~/.cursor/mcp.json:
{
"mcpServers": {
"useapi-muse": {
"url": "https://api.useapi.net/v1/muse/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
VS Code
In .vscode/mcp.json:
{
"servers": {
"useapi-muse": {
"type": "http",
"url": "https://api.useapi.net/v1/muse/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Windsurf and other clients
Any client that supports remote MCP servers over HTTP with custom headers works. The usual JSON shape:
{
"mcpServers": {
"useapi-muse": {
"serverUrl": "https://api.useapi.net/v1/muse/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Some clients name the address field url instead of serverUrl.
Test it with curl
curl -s https://api.useapi.net/v1/muse/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://api.useapi.net/v1/muse/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
The first call answers with the server’s name useapi-muse and its instructions for the assistant, the second with the 37 tools.
Tools
Most tools take an optional email, the Muse account to use. It can be left out when the API token has one Muse account.
Accounts and permissions
| Tool | What it does | Main parameters |
|---|---|---|
muse_list_accounts | Lists your Muse accounts with health, maxJobs and weekly usage. | |
muse_get_account | Reads one account with its live weekly usage. | email |
muse_update_account | Sets maxJobs, the image and video jobs an account runs at once. It doesn’t sign in. | email, maxJobs |
muse_reset_account | Resets the account to a fresh agent computer, deleting everything on it. In two steps: without confirm it only returns the warning to show you, and it resets only when called again with confirm set to the account email you typed. | email, confirm |
muse_list_approvals | Lists the agent’s permission requests across all chats, pending and decided. | email, status, limit |
muse_get_permissions | Reads whether the agent asks before acting on websites and connected apps, and the standing rules. | email |
muse_set_permission_defaults | Sets web and connectors to auto_allow or always_ask. | email, web, connectors |
muse_set_permission_rule | Changes one rule to allow, ask or deny. | permissionId, mode |
muse_delete_permission_rule | Removes one rule. | permissionId |
Images and videos
| Tool | What it does | Main parameters |
|---|---|---|
muse_generate_image | Makes one image from a prompt, optionally from up to 9 input images. | prompt, image_1..image_9, email |
muse_generate_video | Makes one video of about 10 seconds with sound, from a prompt and optional input images, videos and audio. | prompt, image_1..image_9, video_1..video_3, audio_1..audio_3 |
muse_get_job | Reads a job, and with wait: true waits for it to finish. | jobid, wait, history |
muse_list_jobs | Lists the jobs running now. |
The job tools also take replyRef, your own reference echoed back in the job record.
Chat
| Tool | What it does | Main parameters |
|---|---|---|
muse_chat | Sends a message to the Muse agent and returns its answer: text, files, widgets and permission requests. Without chatId it starts a new chat. | message, chatId, files, email |
muse_get_chat | Reads a chat. With wait: true it follows the running answer and returns the rest. | chatId, wait, after, limit, before |
muse_list_chats | Lists the account’s chats, newest first. | email, limit, cursor |
muse_delete_chat | Deletes a chat. Its files stay. | chatId |
muse_cancel_chat | Stops the answer Muse is working on. | chatId |
muse_list_streams | Lists the chat streams open on an account against its limit. | email |
muse_answer_approval | Answers a permission request with allow_once, allow_always or deny, then follows the chat and returns the answer together with the agent’s continuation. | chatId, approvalId, decision, wait |
muse_answer_widget | Answers a quick-reply widget with an option index or your own text, then follows the reply. | chatId, widgetId, option or text, wait |
The agent’s browser
| Tool | What it does | Main parameters |
|---|---|---|
muse_get_browser | Reads a browser the agent opened in a chat: status, page, who has control, and whether it can be watched. | chatId, taskId |
muse_open_browser_viewer | Returns a single-use link to a live view of the browser, to watch it or take control. | chatId, taskId, mode, ttl, quality, compression |
muse_revoke_browser_viewers | Ends every live view of the browser. | chatId, taskId |
muse_release_browser | Gives control of the browser back to the agent. | chatId, taskId |
muse_stop_browser | Closes the browser. | chatId, taskId |
See the Live Browser Guide.
Library
| Tool | What it does | Main parameters |
|---|---|---|
muse_list_assets | Lists the account’s whole Library, newest first: images, videos and audio, documents, web apps (with shareUrl when published) and podcasts. Says when the list may be incomplete. | email, type, origin, limit, cursor |
muse_upload_asset | Uploads an image, video or audio file from a public https URL, up to 50 MB. | url, email |
muse_get_asset | Returns an image of up to about 1 MB as an image, a text document or web app of up to 256 KB as text, or else the file’s type, size and download URL. part=cover gives a podcast’s cover, format=pdf a document as PDF. | assetId, part, format |
muse_delete_asset | Deletes a Library item: a media file, a document, a web app or a podcast. | assetId |
muse_share_web_app | Publishes a web app on a public link. Muse reviews it first and can refuse, listing the issues it found. | assetId |
muse_unshare_web_app | Stops sharing a web app. The app stays in the Library. | assetId |
Workspace files
| Tool | What it does | Main parameters |
|---|---|---|
muse_list_files | Lists a folder of the account’s workspace, or one file. | email, path |
muse_search_files | Finds files by part of the name and/or extension. | name, extensions, path, limit, offset |
muse_read_file | Returns a text file of up to about 200 KB as text, or an image of up to about 1 MB as an image. | path |
muse_write_file | Writes a file into the workspace, as text or base64, for the agent to use in a chat. | path, content or contentBase64, contentType |
muse_delete_file | Deletes a file. | path |
The full input schema of every tool comes from tools/list.
Long-running work
MCP clients usually give up on a tool call after about a minute, so a tool waits up to about 50 seconds:
- An image or a short answer usually finishes in that time, and the tool returns the result.
- A video usually takes longer.
muse_generate_videothen returns thejobid, andmuse_get_jobwithwait: truepicks it up. - A chat answer that is still running returns its
chatIdwithstatus: "running"and alastEventId.muse_get_chatwithwait: trueandafterset to thatlastEventIdreturns the rest.
Clients that ask for progress notifications get one about every 10 seconds while a tool waits. Results show up to two small images as previews, and every file comes with its assetId and download URL.
When a chat answer returns status: "waiting_for_approval", the agent waits for your permission: the assistant should ask you, then answer with muse_answer_approval.
muse_reset_account never resets on its first call. It returns a warning for the assistant to show you, and resets only when you type the account email and the assistant calls it again with that email as confirm. If the reset call errors or times out, it may still have run: check the account before calling it again.
Example prompts
- “Make a 10-second video of a corgi surfing at sunset, in exactly 9:16 aspect ratio.”
- “Make an image of a vintage motorcycle on wet cobblestones at night, then animate it into a video.”
- “Ask Muse to research the top 5 electric cars of 2026, write a comparison table as a CSV, and give me the files.”
- “Upload this photo from its URL and restore and colorize it.”
- “List my Muse chats and continue the newest one: ask for a shorter version.”
- “Ask Muse to open example.com in its browser, then give me a live view link so I can take control.”
- “List the web apps in my Muse Library and publish the newest one.”
Limits and notes
- The tools use your Muse account, its weekly Muse allowance, and the same rules as the REST API, such as
maxJobsfor jobs. - Before some actions, such as reaching a website or acting in a connected app, the agent asks for permission. See GET /accounts/
email/permissions to change when it asks. - Custom connectors on claude.ai need OAuth sign-in, which this server does not support yet. Use Claude Code or another client that can send an
Authorizationheader. - A client may send up to 20 JSON-RPC requests in one batch.
- If the client sends an
MCP-Protocol-Versionheader, it must be one of the supported versions:2025-06-18,2025-03-26or2024-11-05. - Every tool call shows in your usage stats (
bot=muse) as modelmuse-mcp, with the tool name as its status, orfailed.
Tutorials for the Muse API v1:
- Is There a Meta Muse Video API? Official API, free tools and a hosted API, compared
- How to Generate AI Videos and Images with the Meta Muse API
- Chinese-language tutorial (中文教程): AI images and videos with dialogue
{ "@context": "https://schema.org", "@type": "APIReference", "name": "Muse MCP Server: Meta Muse Video, Images and Chat, Hosted", "url": "https://useapi.net/docs/api-muse-v1/mcp", "inLanguage": "en", "isAccessibleForFree": true, "description": "Connect Claude Code, Cursor, VS Code or any MCP client to the hosted useapi.net Muse MCP server: 37 tools for Muse images, videos, chat, the agent's browser and the Library.", "about": "Muse API v1", "isPartOf": { "@type": "APIReference", "name": "Muse API v1" }, "publisher": { "@type": "Organization", "name": "useapi.net", "url": "https://useapi.net", "logo": { "@type": "ImageObject", "url": "https://useapi.net/assets/brand/useapi-logo-512.png" }, "alternateName": ["useapi", "UseAPI"], "sameAs": ["https://discord.gg/w28uK3cnmF", "https://t.me/use_api", "https://github.com/useapi", "https://bsky.app/profile/useapi.net", "https://www.youtube.com/@useapi-net"] }, "documentationOf": { "@type": "WebAPI", "name": "useapi.net REST API", "documentation": "https://useapi.net/llms.txt", "termsOfService": "https://useapi.net/docs/legal" } }
{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://useapi.net/" }, { "@type": "ListItem", "position": 2, "name": "Muse API v1", "item": "https://useapi.net/docs/api-muse-v1" }, { "@type": "ListItem", "position": 3, "name": "MCP Server", "item": "https://useapi.net/docs/api-muse-v1/mcp" } ] }