Use Hjarni with Meta Muse
Give Muse access to the notes you already use with Claude and ChatGPT. Muse Code connects to Hjarni over MCP. For the Muse app, this guide provides a custom REST connector contract. Choose your setup below.
Does Meta Muse support MCP?
Checked 6 October 2026
Yes, in Muse Code. Meta documents remote MCP servers and OAuth sign-in for its terminal agent. The consumer Muse app has a separate connector platform whose submission guidelines accept API or MCP documentation. We have not verified a Hjarni MCP connection in the Muse app.
Muse Code
The terminal coding agent. Use Hjarni's built-in MCP server to search, read, and write notes in granted folders, with AI instructions.
Set up MCPThe Muse app
The personal assistant. Use the REST contract below for a custom connector. This route has not been tested on a live Muse account.
Build a REST connectorBuilding your own agent with Muse Spark on the Meta Model API? Your application runs the MCP client and passes Hjarni's tools to the model. Meta AI Connectors is another route: a developer preview for integrating services into Meta AI, covered below.
Sources: Muse Code MCP documentation, Muse connector guidelines, and Meta AI Connectors.
Connect Muse Code over MCP
Search your project decisions before a coding session. Save what changed when you finish. The notes stay in Hjarni, where Claude and ChatGPT can use them too.
1. Create a token and choose its folders
Open Settings > Connections in Hjarni. Create a token named muse-code and copy it. Give it Read on the folders it should search and Write where it should save notes, then click Save access. A new token has no folder access until you grant it. See Agent tokens.
2. Add Hjarni to your Muse Code settings
Install and sign in to Muse Code using Meta's getting-started guide. In ~/.config/muse/settings.json, merge this entry into mcp_servers, keeping your other settings and servers. Replace YOUR_API_TOKEN with the token you copied.
The settings file must include "schema_version": 1 at the top level, as shown below. Keep it when creating a new file or merging this configuration.
{
"schema_version": 1,
"mcp_servers": {
"hjarni": {
"transport": "streamable_http",
"url": "https://hjarni.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
},
"enabled": true,
"mode": "optional"
}
}
}
optional lets Muse Code start if Hjarni is temporarily unavailable. Choose required if a session should stop when it cannot connect.
3. Check the tools, then search a real note
Start a new muse session and run /mcp. Hjarni should appear with its tools. Then ask:
Search Hjarni for our deployment decisions. Read the relevant notes and tell me which note each decision came from.
Use a topic you have saved. A real note title and content confirm retrieval; a general explanation of Hjarni does not. If tools are missing, check the settings, URL, token, and folder access, then see MCP troubleshooting.
Prefer to connect by signing in?
Muse Code also documents OAuth for remote MCP servers. Keep the server entry above, remove its headers field, then run:
muse mcp login hjarni
Complete Hjarni's sign-in flow in the browser. OAuth uses your account's full access; use the API token route above when you want to limit the agent to selected folders.
This configuration follows Meta's MCP documentation and settings reference. We have not yet verified the Hjarni connection end to end in Muse Code.
Connect the Muse app through REST
1. Create an API token in Hjarni
- Log in to Hjarni and open Settings > Connections.
- Click Create token and name it
muse, so you can revoke this one connector without touching the others. - Copy the token from the page that opens. It is shown once.
- On the same page, give it Read on what Muse should see and Write where it may add notes, then click Save access. A new token reaches no folders until you do. See Agent tokens.
2. Ask Muse to build the connector
Paste this prompt into Muse. Keep the token out of the chat and enter it through the connector's secure credential flow. The prompt points Muse at the Markdown twin of this page:
“Create a custom REST connector for Hjarni, my notes knowledge base. Read https://hjarni.com/docs/muse.md for the API contract in the Muse app setup and API sections. Configure bearer-token authentication and ask me to enter my API token through a secure credential field, not this chat. Call /me first and follow token.instructions when present. Read the accessible folders' llm_instructions before writing. Search before creating a note, update an existing match, and include a short summary. Once it works, tell me what my folders are called and find one note in them.”
We have not verified whether Muse's custom connector builder offers that credential flow. If it cannot collect the token securely, use the Muse Code setup above. Meta documents approved platform connectors under Settings > Connectors; we have not verified where a custom connector appears.
3. Verify it actually connected
Ask Muse: “What are my Hjarni folders called? Find me a note about [a topic you have notes on].”
A working connector answers with your real folder names and a real note title, from GET /containers and GET /search. A connector that silently failed answers in generalities, or tells you what Hjarni is. That difference is the whole test: an agent describing your notes plausibly is the failure mode to watch for, not an error message.
Not yet verified on a live Muse account. This is a connector specification, not a walkthrough we have run end to end. Hjarni's API is exercised by our own test suite; the Muse app's connector creation and availability need to be checked in your account. If it fails for you, email evert@hjarni.com with what Muse said and we will fix the spec.
The API contract Muse needs
Everything below is what a custom connector has to know. The Markdown twin of this page is the same content without the markup, which is the URL to hand any agent. The full REST API reference documents every endpoint, including the ones Muse will not need.
- Base URL
https://hjarni.com/api/v1- Auth
Authorization: Bearer YOUR_API_TOKEN- Content type
application/json- Pagination
pageandper_pagequery params, 25 per page by default and 100 at most. The total comes back as anX-Total-Countheader, withX-PageandX-Per-Pagebeside it.- Rate limit
- 100 requests per minute, per account rather than per token, so this connector shares one budget with every other token on the account. Over it returns
429withRetry-After. - Response shape
- No envelope on the way out: collections are bare JSON arrays, a single note or folder a bare object. Writes take the
{"note": {...}}wrapper, reads do not return one. - Note format
- Markdown body, plus a short
summarythe agent should always write.
The six calls that cover ordinary use
GET /me
Who the token belongs to, the plan, and quota usage under limits (notes_used against notes_limit, not a raw note total). Call this first: it is the connection test. A token limited to some folders gets the user and token blocks only, with no limits or onboarding. Read its grants for folder access and follow token.instructions when supplied.
GET /search?q=...
Full-text search. Add search_scope=personal to skip team notes, or exclude_body=true to leave note bodies out of the results (titles, summaries, tags and the rest still come back). Omitting search_scope searches personal and team notes together, and team:<id> narrows to one team. Archived and trashed notes are never included, and a blank q drops the text filter rather than erroring.
GET /notes/:id
One note in full. Wiki-links arrive as linked_note_ids rather than nested notes, and attachments as metadata plus a download URL that expires 15 minutes after it is minted (url_expires_at says when). Re-read the note for a fresh one instead of caching the link.
POST /notes
Create a note. Wrap the fields in a {"note": {...}} envelope; anything sent flat is rejected. title is the only required one (max 500 characters, and a body caps at 256 KiB); send body, summary, tag_list and container_id too. Answers 201 with the created note.
PATCH /notes/:id
Update a note in place, same envelope. Prefer this over creating a near-duplicate, because an updated note keeps its history. Send back the lock_version you read as expected_lock_version and a write that raced someone else answers 409 with the current version, rather than quietly overwriting them.
GET /containers
Folders the token can use, with their llm_instructions. An agent token gets a flat, paginated list of its accessible active folders. An account-wide token gets top-level personal folders by default; add ?scope=all for all active personal folders. GET /containers/:id/tree returns one folder with ancestors and direct children, rather than its entire nested tree.
Worked examples
Run these in a terminal first, so a later failure has one fewer cause. A working curl rules out the token and the endpoint; it does not by itself prove the remaining fault is Muse's, since a connector can also be sending a shape the API refuses.
Confirm the token
curl https://hjarni.com/api/v1/me \
-H "Authorization: Bearer YOUR_API_TOKEN"
Search, titles and summaries only
curl "https://hjarni.com/api/v1/search?q=quarterly+planning&search_scope=personal&exclude_body=true" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Create a note
curl -X POST https://hjarni.com/api/v1/notes \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"note": {
"title": "Kitchen renovation quotes",
"body": "- Vanhoof: EUR 14,200\n- De Smet: EUR 12,800",
"summary": "Two quotes for the kitchen, with prices and lead times.",
"tag_list": "house, renovation",
"container_id": 12
}
}'
That container_id is an example. Take a real one from GET /containers and make sure the token has Write access there. An unknown or inaccessible folder is refused. With an agent token, leaving the folder out also needs a grant on the destination inbox, so send an explicit folder ID. A request carrying no note object at all answers 400.
Two shapes, and a connector that reads only one reports the other as a blank failure: a single error string, or an errors array when a note fails validation. Most errors are JSON, but not all of them are guaranteed to be, so send Accept: application/json and treat a non-JSON error body as possible rather than impossible.
401
A missing, malformed or revoked token.
403
Two causes with different payloads. A plan gate (the Free note limit, an attachment past the free allowance) carries an upgrade_url beside the error; a permission or token-scope refusal carries the error alone, so treat upgrade_url as optional. Worth handling explicitly, since the note limit is the one a person actually meets, and an agent that reports it as a generic failure hides the one thing that would fix it.
404
A note or folder that is gone, was never on this account, or sits outside the token's scope. This one is raised rather than rendered, so its body is whatever the request negotiated and need not carry an error key at all.
422
Validation failed. Usually an errors array naming what was wrong, so it can be corrected and retried rather than reported as-is; a rejected file attachment answers with a single error instead.
429
Rate limited. Wait for Retry-After rather than retrying at once.
What to ask the Muse app once connected
With the agent token above, Muse can search and read the personal or team notes its grants reach, and write where you gave it Write access. A full-access, account-wide REST token searches across teams but opens and edits personal notes, so a team search hit may not be readable with that token. Try these prompts when the relevant folders and other connectors are available:
- Across Gmail and your notes. “Find the contractor emails from last month and add anything new to my kitchen renovation note in Hjarni.”
- Before a meeting. “My calendar says I am seeing Anna at 3. Search Hjarni for what we agreed last time.”
- Capture on the phone. “Save this as a Hjarni note in my Ideas folder, with a summary.”
- Keep one note true. “Update my ‘working preferences’ note rather than making a new one.”
Tell Muse once to always write a two or three sentence summary on a new note. Summaries are indexed for search and are what a result list carries in place of a full body, so a connector that skips them leaves every other assistant less to go on when it picks which note to open.
What to expect from a REST connector
These limits apply to the Muse app's custom REST connector. Muse Code uses MCP and receives the server's tool descriptions directly.
No tool descriptions
An MCP client is told what each tool does and when to use it, by the server, on every session. Muse knows only what you told it when the connector was built, so it drifts as your usage changes and you correct it by hand.
Instructions need explicit handling
Accessible folder payloads carry llm_instructions, and an agent token's GET /me payload carries token.instructions. Tell the connector to read and follow them before writing. REST does not supply inherited brain instructions to agent tokens, and GET /containers/root_instructions is refused for those tokens. MCP exposes a fuller instruction chain. See AI instructions.
A long-lived credential, not a session
MCP clients hold an OAuth grant you can see and revoke per client. An API token is a bearer credential: it works until it is deleted, expires, or is evicted by the account's active-token cap, and nothing tells Muse which of those happened. Naming it muse is what makes it revocable on its own.
Nothing pushes
Muse reads when you ask it to. A note added in Claude is visible to Muse immediately, but Muse is not told about it, so it will not bring it up unprompted.
If Muse is your only assistant, this is a reasonable connection and the notes stay yours either way. If you also use Claude or ChatGPT, connect those over MCP and treat Muse as a second reader of one knowledge base. MCP vs API is the longer version of this argument.
What about Meta AI Connectors?
Meta's developer site describes a separate connector program for Meta AI on its app, web, and AI glasses. Developers onboard REST endpoints through a guided interface or MCP onboarding, then link user accounts with OAuth.
That MCP onboarding is a developer workflow. It does not establish that a Muse app user can paste in Hjarni's MCP URL. Meta AI's program is a limited developer preview, with public publishing planned for a later phase.
Hjarni has a REST API and an MCP server, but this guide does not provide a published Meta AI connector. For now, use the Muse Code setup above or the Muse app REST contract above. Read Meta's connector preview details for the program's current availability.
Common questions
FAQ
Does Meta Muse support MCP servers?
Muse Code does: Meta documents remote MCP servers and OAuth sign-in for its terminal agent. The consumer Muse app's connector submission guidelines accept API or MCP documentation, but we have not verified a Hjarni MCP connection there. Use the Muse Code setup for MCP, or the Muse app setup for our unverified custom REST connector specification.
How do I connect Muse Code to Hjarni?
Keep schema_version set to 1 in ~/.config/muse/settings.json and add Hjarni to mcp_servers with transport streamable_http and URL https://hjarni.com/mcp. Use a folder-scoped API token in the Authorization header, or omit the header and run muse mcp login hjarni for OAuth. Then start a new session and check /mcp for the tools. This follows Meta's documentation; we have not yet tested the Hjarni connection end to end in Muse Code.
How does the Muse app read my Hjarni notes?
The route documented here is a custom connector on the Hjarni REST API, authenticated with an API token from Settings > Connections. Give the token access to the folders it should use. The contract covers search, read, create, and update; connector creation has not been verified on a live Muse account.
Is a custom REST connector the same as MCP?
No. MCP supplies tool descriptions and exposes Hjarni's AI instructions. A custom REST connector depends on the instructions supplied when it is built and must fetch folder instructions explicitly. Muse Code can use MCP directly; these REST limits apply to the Muse app route.
Do I need Hjarni Pro for this?
No. Hjarni's MCP server and REST API work on every plan, including Free. Hjarni's note and file limits still apply. Meta's own access and billing are separate.
Can I use Hjarni through Meta AI Connectors?
This guide does not provide a published Meta AI connector. Meta's program is a limited developer preview for onboarding REST APIs and linking accounts with OAuth. Its MCP onboarding is a developer workflow, not a field where a Muse app user adds an MCP server.
Need help connecting?
Email evert@hjarni.com and we'll sort it out.
Give your AI a memory. Free.
Connect Claude or ChatGPT to notes they can actually read and write.
Give your AI a memory. Free.