Connect Poke, Town, Grok and other agents to Roma
How Poke, Town, Grok, Muse, Instinct, OpenClaw, Hermes and Devin connect.
Any agent that speaks MCP connects to Roma at https://api.roma.app/mcp, and an agent that lives in your messages or on a cloud computer of its own connects with nothing installed, from one message. Each agent below has its own page under /agents with the same steps, the message to copy, and what it can do once connected. An agent that is not listed at all has /agents/other.
The one message, for an agent with no settings screen
Every agent page carries one short message to copy and send to the agent. It says, in your own words, that you use Roma for your tasks, where the ways to connect are explained, what the server address is, and asks the agent to try the way most likely to work for it and to tell you what it is doing. Muse and Instinct set themselves up from it. An agent with a settings screen takes the steps on its page instead. Agents in Roma explains what the connection means.
Poke
In Poke, add a new connection on poke.com with the address https://api.roma.app/mcp. Leave the key field empty to sign in with OAuth, or paste an API key from Settings, then Connections. From a terminal instead:
npx poke@latest mcp add https://api.roma.app/mcp -n "Roma"Mention Roma by name, or what you want it to do, so Poke knows to use it. The page is /agents/poke.
Town
Open Settings, then MCP, then Add Server, and enter a name, the address https://api.roma.app/mcp and a short description. Town runs the sign-in itself. The page is /agents/town.
Grok
At grok.com/connectors, choose New Connector, then Custom, and enter the address https://api.roma.app/mcp. Complete the sign-in when Grok asks. On Grok Business or Enterprise a team admin adds the connector first. The page is /agents/grok.
Muse
Muse has no settings screen for this. You ask it in the conversation: send Muse the message on /agents/muse, and it reads how to connect and creates a Custom Connector for the server on its own cloud computer. To say it yourself, ask Muse to create a Custom Connector for a remote MCP server at https://api.roma.app/mcp with OAuth as the sign-in.
Send Muse the message. It creates the connector and shows a Connect button.
Press Connect, sign in to Roma, and approve.
Muse confirms, keeps the connector in its Secure Credentials Store for next time, and tells you what it sees.
If the sign-in window does not open when you press Connect, Safari is the usual reason, and a pop-up or ad blocker does the same. Tell Muse it did not open and ask for the sign-in link as plain text, then open it in a tab of your own. If the page after you approve shows a link to copy, paste it to Muse. If Muse asks for a key instead, create one in Roma under Settings, then Connections, and paste it only into Muse's secure credential prompt, never into the chat itself. Muse Code, the terminal agent, takes the server in ~/.config/muse/settings.json and signs in with muse mcp login roma.
Instinct
Instinct lives in your messages, so there is no settings screen. The message on /agents/instinct is the whole setup. Instinct has no connector for MCP servers of its own, so it signs in the way it reaches any web service, with four web requests and nothing installed:
Send Instinct the message. It reads how to connect, registers itself with Roma and replies with a sign-in link.
Open the link, sign in to Roma, and approve.
Roma shows a link to send back. Paste it to Instinct within ten minutes, because the sign-in expires after that.
Instinct confirms and tells you what it sees.
Not every Instinct connects, and which one you have decides it. Several have, by these steps. Others decline, saying they cannot add an outside MCP server or hold a token, or read the message as setup text. The page carries a reply for that case, in your own words, which describes the same four steps the way an Instinct that connected described them itself. If yours still declines, an API key is the other way in, texted to Instinct with the address of Roma's REST API, exactly as the page spells it. The key acts as you, so share it only with an assistant you trust and revoke it when done. A connected Instinct keeps its sign-in only for a while. If it says the connection lapsed, send the message again and approve once more.
OpenClaw
Two commands in the terminal:
openclaw mcp add roma --url https://api.roma.app/mcp --transport streamable-http
openclaw mcp login romaopenclaw mcp doctor roma --probe checks the connection. The login opens a browser where OpenClaw can reach one. Otherwise copy the code the sign-in page shows and run openclaw mcp login roma --code <code>. The page is /agents/openclaw.
Hermes Agent
In ~/.hermes/config.yaml, add the server under mcp_servers, then sign in from the terminal:
mcp_servers:
roma:
url: "https://api.roma.app/mcp"
auth: oauthhermes mcp login romaAdd the server and sign in before you start a session. Hermes connects to its servers when it starts, a running session keeps its tools until /reload-mcp or /new, and its own reload gives a sign-in only thirty seconds, so run the login from a terminal of its own. The login opens a browser. On a machine without one, copy the address the browser ends up on and paste it back into the terminal where Hermes asks for it. A sign-in started from Hermes Desktop's MCP setup completes on its own. For a key instead of the sign-in, on a gateway with no browser, replace auth: oauth with a headers line carrying the key as a bearer token. The page is /agents/hermes-agent.
Devin Desktop
In ~/.config/devin/mcp_config.json, add a server named roma under mcpServers with "serverUrl": "https://api.roma.app/mcp", or add a custom server from the MCP list in Devin Local. The sign-in runs when the server first needs it. An expired one shows Authenticate in that list. The page is /agents/devin-desktop-windsurf.
An agent that is not listed
Any client that supports remote MCP servers over Streamable HTTP with OAuth works. Add the server with the address https://api.roma.app/mcp and no headers. The client discovers the sign-in from the server's first answer. If it offers to enter a client id and secret by hand, leave them empty. An agent with no place to add a server connects from the message, like Muse and Instinct. An agent with no browser, a scheduled job or a self-hosted one, connects with an API key: API keys and signing in from an agent.
Once connected, every agent can do the same things, and asks before anything changes: What an agent can and cannot do in your account.
Questions people ask
The agent says it cannot run that, or that the text looks like setup instructions. What now?
It is reading the message as something to execute rather than as your wish. Say it in your own words: you use Roma for your tasks and want it connected, the ways to connect are explained at roma.app/developers.md, and it should tell you what it will do first. The Instinct page has a reply written for exactly this. An agent that would rather not connect at all can still help: ask it for a paste-ready list of your open items and add them in Roma by hand.
The page after approving does not load. What happened?
"This site can't be reached" at 127.0.0.1 means the agent runs in the cloud and nothing listens at the address it gave. Roma's connected page, the one right after Approve, has the link to copy and stays put when nothing answers. If the browser moved on anyway, go back one page. Paste the link to the agent within ten minutes.
The sign-in link expired. What do I do?
A sign-in link is good for ten minutes. Ask the agent for a fresh one and approve again.
Can I have several agents connected at once?
Yes. Every agent connects on its own to the same Roma account, through the same address, and each one sees the same lists. There is nothing to choose between them.