Connect Roma to any agent
Any agent that can make web requests connects to Roma, most from one prompt.
How to connect
Send your agent this message. It connects, opens the sign-in for you to approve, and then asks what to do with your tasks.
Connect to Roma, my task app, as an MCP server at https://api.roma.app/mcp (Streamable HTTP, OAuth 2.1 with PKCE and dynamic client registration; the first call answers 401 with the discovery address). If you have a built-in way to add an MCP server with OAuth (a connector, a settings screen, an "mcp add" command), use it. If you have none, connect over OAuth as plain web requests, nothing installed: 1) the first POST to that address answers 401 and names the discovery address; register yourself there (dynamic client registration) with a loopback redirect such as http://127.0.0.1:8585/callback; 2) generate the authorization link with PKCE and send it to me; 3) I open it, sign in and approve, and paste you the 127.0.0.1 link the browser lands on, within ten minutes; 4) exchange the code in it for a token, keep the token, and call the tools at that address with it (JSON-RPC over HTTP: tools/list, then tools/call). Before you open the sign-in link, tell me what will happen: I sign in and approve in my browser, and if the page after that does not load, I copy that page's link and paste it back to you; and if the sign-in window does not open at all, I just tell you, because some setups block it and there are other ways to connect. Then open the link. If I say it did not open, give me the link to open myself. Read https://roma.app/llms-full.txt for how the tools work. Once connected: 1) call get_context and tell me in a few lines what you can see and what you can do for me from now on; 2) look through our recent conversations for anything I still need to do, show me the list, and only after I confirm add them to my Tasks list in one call with create_items; 3) ask whether Roma should be my task list from now on, and if I say yes, save this in your memory or instructions: always use Roma for my tasks, add anything I mention needing to do to Roma, answer "what should I work on next" from Roma, and as we work, check in now and then whether something we discussed should become a task in Roma.
By hand, in the agent's settings:
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 401 answer. If a client offers to enter a client id and secret by hand, leave them empty: the server registers clients dynamically.
An agent with no place to add a server, one that lives in your messages or on a cloud computer of its own, connects from the prompt on the any-agent page all the same: four web requests, nothing installed. It registers itself at the discovery address with a loopback return address, sends you the sign-in link, you approve and paste back the link the browser lands on within ten minutes, and it exchanges the code for a token. Authentication has the flow in full.
Every coding agent on the computer at once, with add-mcp (it finds Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf and more, and writes Roma into each one's config; each agent runs its own sign-in the first time it connects):
npx add-mcp https://api.roma.app/mcp -n roma
An agent with no browser, a scheduled job or a self-hosted one, connects with an API key instead: Authentication has the steps.
How to use it
Once connected, talk to your agent the way you already do. Roma is there whenever a task comes up:
- "What's on my plate today?"
- "Add "call the dentist" and "send the invoice", both for Friday."
- "Save the plan we just made as a note."
Make Roma your to-do list
Roma works best as the one list behind everything: tell your agent what you need to do and it lands in Roma; ask any agent, or Roma itself, what is next and it answers from the same list. Nothing lives only in one chat.
The connect prompt above already asks your agent for this. To set it again in a new conversation, send this once:
Roma is my to-do list from now on. Look through our recent conversations for anything I still need to do, show me the list, and after I confirm add it to Roma. From here on: add anything I mention needing to do to Roma, answer "what should I work on next" from Roma, and when something we discussed gets done or changes, update it in Roma.
What your agent can do in Roma
- Context. See where you are: what is due, your lists, recent notes, and what you asked Roma to remember.
- Lists. Keep any list: your tasks, your notes, a reading list, a CRM, each with the properties you give it. Create one, reshape it, delete it.
- Items. Add, update, move and delete what is on a list, many at once: a task with its due date, a note, a book on a reading list, each with a body to work in.
- Search. Find anything you keep, by meaning or keyword.
- Chats. Read the chat on an item, and leave a note there under its own name, so you see it on every device.
- Trash. Nothing is lost on delete: the trash keeps it for about 30 days and puts it back.
- Automations. Read your automations and what their runs found, and start one when you ask.
Your agent only ever acts as you, on your own workspace, and asks before anything changes.
Good to know
If the sign-in window does not open at all, some setups block it. Tell the app that it did not open; it gives you the link to open yourself.
Go deeper
The setup above is all most people need. The developer docs have the rest: every tool with what it takes and returns, guides for saving research, filling a list and running a worker loop, the standing orders to paste into a scheduled your agent so it sweeps your mail, calendar and meeting notes into Roma on its own, the event feed and the REST API. Developers.