Model Context Protocol
Connect Twos to your AI
Twos runs an MCP server. Point Claude, ChatGPT, Cursor, or any other MCP client at it and it can read and write your lists and things, with only the permissions you grant.
https://www.twosapp.com/mcpHow it works
One endpoint
Every client points at the same URL. There is no server to run and no software to install.
You sign in
Most clients send you to Twos to approve access, so they never see your password. The rest use a scoped API key.
Your rules
Each connection carries the scopes you approve. Read only is a fine place to start.
Set it up
Pick the app you use. The steps and the config are the same on Mac, Windows, and Linux.
ChatGPT
Sign inTwos is a published ChatGPT app, so there is no URL to paste.
- 1
- 2
Sign in to Twos and approve what it asks for.
- 3
Try it. "Add oat milk to my grocery list" is a good first test.
Prefer a custom connector? In ChatGPT open Settings, then Apps & Connectors, then Advanced settings, and turn on developer mode. Choose Add custom connector and paste the endpoint above. Developer mode needs a paid ChatGPT plan. Deep research works too, because Twos ships the search and fetch tools it requires.
What to ask for
Once it is connected, your lists are just part of the conversation. These all work on day one.
Ready made prompts
Twos ships prompt templates too. Clients that support them show these as slash commands or menu items.
Plan my day
Read today's list and upcoming reminders, then propose a focused plan.
What should I do next?
Surface the few most important things to focus on right now.
Weekly review
Reflect on the past week and plan the next one.
Capture a brain-dump
Split a freeform brain-dump into separate things and file them into the right lists.
Add to a list
Add an item to a specific list you name (resolved by name, not substituted).
Summarize a list
Read a specific list and give a concise overview plus suggested next actions.
The 24 tools
Each tool needs the scope shown next to it. Grant the scopes you want and the assistant can only do that much.
Lists
| list_lists | List your lists. | read:lists |
| get_list | Get a list and its things (in the app’s display order). | read:lists |
| get_today | Get/create the day list for today, yesterday, tomorrow, or a date. | read:lists |
| create_list | Create a list (optionally filled with `things` in one call). | write:lists |
| import_markdown | Create a new list from a markdown document. | write:lists |
| update_list | Rename, star, or archive a list. | write:lists |
| delete_list | Delete a list and its things. | write:lists |
Things
| list_things | List things newest-first (filter by list, completion, tag). | read:things |
| get_thing | Get a thing. | read:things |
| create_thing | Create a todo or note (target a list by id or name). | write:things |
| create_things | Bulk-create many things in one call (returns per-list counts). | write:things |
| append_markdown | Append a markdown block to a list as things. | write:things |
| update_thing | Edit, complete, cancel, or move a thing. | write:things |
| update_things | Apply one change to many things (check off / move / star). | write:things |
| delete_thing | Delete a thing. | write:things |
| delete_things | Delete many things at once by id. | write:things |
Reminders
| set_reminder | Set or replace a reminder on a thing, at a time or on arriving at or leaving a place. | write:things |
| remove_reminder | Remove a thing’s reminder. | write:things |
| list_reminders | List your reminders, optionally within a date range. | read:things |
| list_places | List your saved places (Home, Work, and so on). | read:things |
| save_place | Save or update a named place from an address. | write:things |
Find
| search | Search your lists and things. | search |
| fetch | Fetch one list or thing by id as a document. | read:things |
| list_tags | List your tags with counts. | read:things |
Where it stops
Worth knowing before you hand an assistant the keys to your things.
It acts as you
What it writes or deletes is a real change to your account, made under your own login.
Photos stay behind
It reads the text of a thing, not the images attached to it.
It is not a sync
It reads when it asks. Between questions it holds no copy of your lists.
Formatting is simplified
Rich text, highlights, and colors do not fully survive the round trip.
Shared lists keep their rules
View access on a collaborative list stays view access for the assistant too.
1,000 requests an hour
Plenty for a conversation, and not meant for moving thousands of things at once. Use an import for that.
Permissions
A connection can only use the scopes you approved. A tool that reaches past them fails and says which one is missing.
| read:lists | Read your lists. |
| write:lists | Create, update, and delete lists. |
| read:things | Read the things inside your lists, and your tags. |
| write:things | Create, update, and delete things. |
| search | Search across your lists and things. |
To end an OAuth connection, remove the connector in the assistant. If you connected with a key instead, revoke it in Settings, API keys, and it stops working right away.
If it will not connect
- The client says it could not connect
- Use the exact endpoint above, and leave the OAuth client ID and secret blank. Twos registers the client itself.
- Sign-in bounces back to the login page
- You are not signed in to Twos in that browser. Sign in there first, then add the connector again.
- A tool says it is missing a scope
- That permission was never granted. Reconnect and approve it, or create a key that carries it.
- It cannot find a list or a thing
- Ask it to search first. Every get, update, delete, and reminder tool works from an id, and search is how it gets one.
- It stopped working with a 401
- The connection was removed or the key was revoked. Add the connector again, or check the key in Settings, API keys.
- Still stuck
- Email us about ChatGPT and we will help. It opens a message with the details we need.