Muse
This page is for Meta's Muse. There are three ways in, and they are different products: the Muse agent app, Muse Code (the coding agent), and the Meta Model API (the Muse Spark models, called from your own code). If you meant a different product called Muse, this page does not apply.
Not open yet. Opens with early access.
On this page
Before you start
- Muse agent. The Muse app or
muse.ai. Meta describes the rollout as US only. It runs your tasks on a cloud computer, so the server address must be public over HTTPS. - Muse Code. The Developer Preview of Meta's coding agent, and an API key from the console.
- Meta Model API. A Meta key from
dev.meta.ai(public preview, US developers) and an API key from the console. - An Understanding account. Sign up if you have none.
Set it up
Muse agent: a custom connector
Meta lets a person ask Muse to make a connector for a service, and Meta does not review those. Third-party guides describe how to point it at a remote MCP address. Meta's own help pages do not mention MCP addresses; these steps follow those guides.
- In a Muse conversation, say:
Create a custom connector named Understanding that uses remote streamable HTTP at https://api.theunderstanding.company/mcp/muse. - When Muse asks for the credential, paste your API key into Muse's secure credential prompt. Do not paste it into the chat. Muse keeps credentials in a store and does not show the agent the real value.
- Ask Muse to list the tools, then to test one question.
- Muse asks you to approve the first use. Choose Allow once or Always allow.
The tools are all lookups, which is the category Meta asks the least approval for. The Muse address offers the banking tools only (seven question tools and get_usage); the three health tools are not offered there, to keep health data out of that service.
Muse Code
Put this in ~/.config/muse/settings.json:
{ "schema_version": 1, "mcp_servers": { "understanding": { "transport": "streamable_http", "url": "https://api.theunderstanding.company/mcp/muse", "headers": { "Authorization": "Bearer usk_live_..." }, "mode": "optional" } } }
Header values are literal in Muse Code. ${VAR} is not expanded, so the key sits in the file in plain text. Restrict the file's permissions and never commit it. Meta's pages show a second spelling for the same thing (mcpServers with type set to streamable-http); use one spelling, because mixing them turns MCP off. Run /mcp inside Muse Code to list the tools. Muse Code can also sign in with muse mcp login understanding instead of a header.
Meta Model API
The Meta Model API documents function tools and not remote MCP tools, so you give the model our function definitions and run each call yourself. The definitions come from our own server, in Meta's shape:
curl "https://api.theunderstanding.company/v1/tools?format=meta"When the model returns a function call, send its arguments to POST https://api.theunderstanding.company/v1/tools/{name} with your key and give the answer back as the function's output:
curl https://api.theunderstanding.company/v1/tools/check_restricted_merchant \ -H "Authorization: Bearer $UNDERSTANDING_API_KEY" \ -H "Content-Type: application/json" \ -d '{"merchant":"DRAFTKINGS","mcc":"7995","abstain_below":null}'
Meta's rules: set tool_choice to auto only (the other values return an error), keep function names to letters, digits, _, - and at most one dot, and expect the model to call functions in parallel. Note that GET /v1/tools?format=meta nests each definition under function, the Chat Completions way; the Responses endpoint wants the flat form, so lift function up one level.
What we tuned for this service
The /mcp/muse address is the standard server with these changes. They change wording and result shape only, never behavior or billing.
- Every description starts with "Read." and says the result is a classification or a reconciliation aid, not advice. Meta's rules ask for each tool to be labelled and keep financial advice out of an agent.
- The result starts with one plain sentence, then the details as structured content. Muse also answers on phone and voice-like surfaces, so the sentence has to stand alone. When the answer is not reliable the sentence begins "Not sure" and says it is an estimate, not advice.
- Results hold only data, never instructions, because Muse treats tool output as untrusted and scans it.
- Static headers work, so Muse Code can use a plain
Authorizationheader. - Every tool is marked read-only.
Check that it works
Ask Muse:
Is the merchant DRAFTKINGS with merchant category code 7995 a gambling merchant?Muse should call Check restricted merchant (check_restricted_merchant). The text of the result is one sentence:
Likely a restricted (betting or casino) merchant, 97% confidence.With LUCKY COINS LLC and code 5816 the sentence is the abstain form, and Muse should say it is unsure:
Not sure: a restricted (betting or casino) merchant, 62% confidence. This is an estimate, not advice.The numbers show the format. They are not measured results.
If it doesn't connect
- Muse cannot reach the address. Muse runs on Meta's cloud and sends traffic through a proxy that blocks private addresses. The address must be public HTTPS, with no redirect to another host.
- Muse asks you to paste the key into the chat. Don't. Ask it to use its secure credential prompt. If you already pasted a key into a chat, treat it as exposed and revoke it in the console.
- Muse Code lists no tools. Check that you used one spelling of the settings and not both, and that the header is the literal key. A 401 prints a login hint.
- Muse approves every use. Reads ask the first time and then each time unless you choose Always allow.
- The Meta Model API returns a 400 about
tool_choice. Remove it, or set it toauto. - A tool returns
rate_limited. Wait the number of seconds in theRetry-Afterheader.
# Muse
This page is for Meta's Muse. There are three ways in, and they are different products: the Muse agent app, Muse Code (the coding agent), and the Meta Model API (the Muse Spark models, called from your own code). If you meant a different product called Muse, this page does not apply.
Not open yet. Opens with early access.
## Before you start
- Muse agent. The Muse app or `muse.ai`. Meta describes the rollout as US only. It runs your tasks on a cloud computer, so the server address must be public over HTTPS.
- Muse Code. The Developer Preview of Meta's coding agent, and an API key from the console.
- Meta Model API. A Meta key from `dev.meta.ai` (public preview, US developers) and an API key from the console.
- An Understanding account. Sign up if you have none.
## Set it up
### Muse agent: a custom connector
Meta lets a person ask Muse to make a connector for a service, and Meta does not review those. Third-party guides describe how to point it at a remote MCP address. Meta's own help pages do not mention MCP addresses; these steps follow those guides.
1. In a Muse conversation, say: `Create a custom connector named Understanding that uses remote streamable HTTP at https://api.theunderstanding.company/mcp/muse`.
2. When Muse asks for the credential, paste your API key into Muse's secure credential prompt. Do not paste it into the chat. Muse keeps credentials in a store and does not show the agent the real value.
3. Ask Muse to list the tools, then to test one question.
4. Muse asks you to approve the first use. Choose Allow once or Always allow.
The tools are all lookups, which is the category Meta asks the least approval for. The Muse address offers the banking tools only (seven question tools and `get_usage`); the three health tools are not offered there, to keep health data out of that service.
### Muse Code
Put this in `~/.config/muse/settings.json`:
```
{
"schema_version": 1,
"mcp_servers": {
"understanding": {
"transport": "streamable_http",
"url": "https://api.theunderstanding.company/mcp/muse",
"headers": { "Authorization": "Bearer usk_live_..." },
"mode": "optional"
}
}
}
```
Header values are literal in Muse Code. `${VAR}` is not expanded, so the key sits in the file in plain text. Restrict the file's permissions and never commit it. Meta's pages show a second spelling for the same thing (`mcpServers` with `type` set to `streamable-http`); use one spelling, because mixing them turns MCP off. Run `/mcp` inside Muse Code to list the tools. Muse Code can also sign in with `muse mcp login understanding` instead of a header.
### Meta Model API
The Meta Model API documents function tools and not remote MCP tools, so you give the model our function definitions and run each call yourself. The definitions come from our own server, in Meta's shape:
```
curl "https://api.theunderstanding.company/v1/tools?format=meta"
```
When the model returns a function call, send its arguments to `POST https://api.theunderstanding.company/v1/tools/{name}` with your key and give the answer back as the function's output:
```
curl https://api.theunderstanding.company/v1/tools/check_restricted_merchant \
-H "Authorization: Bearer $UNDERSTANDING_API_KEY" \
-H "Content-Type: application/json" \
-d '{"merchant":"DRAFTKINGS","mcc":"7995","abstain_below":null}'
```
Meta's rules: set `tool_choice` to `auto` only (the other values return an error), keep function names to letters, digits, `_`, `-` and at most one dot, and expect the model to call functions in parallel. Note that `GET /v1/tools?format=meta` nests each definition under `function`, the Chat Completions way; the Responses endpoint wants the flat form, so lift `function` up one level.
## What we tuned for this service
The `/mcp/muse` address is the standard server with these changes. They change wording and result shape only, never behavior or billing.
- Every description starts with "Read." and says the result is a classification or a reconciliation aid, not advice. Meta's rules ask for each tool to be labelled and keep financial advice out of an agent.
- The result starts with one plain sentence, then the details as structured content. Muse also answers on phone and voice-like surfaces, so the sentence has to stand alone. When the answer is not reliable the sentence begins "Not sure" and says it is an estimate, not advice.
- Results hold only data, never instructions, because Muse treats tool output as untrusted and scans it.
- Static headers work, so Muse Code can use a plain `Authorization` header.
- Every tool is marked read-only.
## Check that it works
Ask Muse:
```
Is the merchant DRAFTKINGS with merchant category code 7995 a gambling merchant?
```
Muse should call Check restricted merchant (`check_restricted_merchant`). The text of the result is one sentence:
```
Likely a restricted (betting or casino) merchant, 97% confidence.
```
With LUCKY COINS LLC and code 5816 the sentence is the abstain form, and Muse should say it is unsure:
```
Not sure: a restricted (betting or casino) merchant, 62% confidence. This is an estimate, not advice.
```
The numbers show the format. They are not measured results.
## If it doesn't connect
- Muse cannot reach the address. Muse runs on Meta's cloud and sends traffic through a proxy that blocks private addresses. The address must be public HTTPS, with no redirect to another host.
- Muse asks you to paste the key into the chat. Don't. Ask it to use its secure credential prompt. If you already pasted a key into a chat, treat it as exposed and revoke it in the console.
- Muse Code lists no tools. Check that you used one spelling of the settings and not both, and that the header is the literal key. A 401 prints a login hint.
- Muse approves every use. Reads ask the first time and then each time unless you choose Always allow.
- The Meta Model API returns a 400 about `tool_choice`. Remove it, or set it to `auto`.
- A tool returns `rate_limited`. Wait the number of seconds in the `Retry-After` header.
Source: /api/docs/integrations/muse