Connect AI assistants to Roezan
Roezan runs an MCP server, so AI apps like Claude, ChatGPT and Codex can look up your contacts, tags, lists and custom fields. The app works as you, with your permissions, in the account you choose.
Server URL
https://mcp.roezan.com/mcp
That URL is all you enter. There is no API key or client secret to copy. Your AI app opens Roezan in your browser, and you sign in and approve it there.
How connecting works
- Add Roezan to your AI app as a connector or MCP server, using the URL above.
- The app opens Roezan in your browser. Sign in if you aren't already, choose the account to connect, review what the app is asking for, and click Allow access.
- You're back in the app, connected. Ask it about your Roezan account.
Each person connects for themself. A teammate who wants the same app connects it with their own Roezan login.
Setup by app
Claude (claude.ai, Claude Desktop and the Claude mobile apps)
- In Claude on the web or desktop, open Settings → Connectors (some versions call it Customize → Connectors) and choose Add custom connector.
- Name it Roezan and enter the server URL. Leave the advanced settings empty.
- Click Connect and approve in the Roezan window that opens.
One connection works in every Claude app you're signed in to. On Claude Team and Enterprise plans, an owner adds the connector for the organization first; then each member connects their own Roezan login.
Claude Code
claude mcp add --transport http roezan https://mcp.roezan.com/mcp
Then run /mcp in Claude Code, choose roezan and select
Authenticate.
Codex
- Open Plugins → MCPs, then Add → Add MCP server.
- Choose the server type that takes a URL (not a command), name it roezan and enter the server URL.
- Save, then click Authenticate next to the new server and approve in your browser.
ChatGPT
ChatGPT connects custom MCP servers in Business, Enterprise and Edu workspaces, on chatgpt.com. A workspace admin (or a member the admin allows) adds Roezan as a custom MCP server with the server URL above and OAuth sign-in. OpenAI moves these settings from time to time, so follow OpenAI's current instructions.
Other MCP apps and your own code
Any app that supports remote MCP servers with OAuth sign-in can connect with the same URL, and so can code built on an official MCP SDK. If an app asks you for a client ID, client secret or API key for Roezan, it can't connect yet.
What the app can do
The read tools look things up; the write tools add and remove tags and list subscriptions and update a contact's name and custom fields. No tool sends a message, creates a contact or changes anyone's phone number, email or SMS opt-in. Everything happens in the one account you connected.
| Tool | What it does |
|---|---|
search_contacts |
Finds contacts by phone, email or name (up to 25 at a time, newest first). Searching by name alone may stop before the oldest contacts; search by phone or email to be sure. |
get_contact |
One contact's name, phone, email, SMS opt-in status, custom field values, tags and lists. |
list_contact_messages |
One contact's text messages, newest first, 20 at a time: what they sent and what your account sent, with delivery status and any media. Needs permission to read conversations. |
send_message |
Sends one text to one contact who has opted in, from the number their conversation already uses. It never creates a contact. The same text to the same contact within 10 minutes is refused, so a retry can't send it twice, and your account's AI apps together can send up to 60 texts a minute (ask us if you need more). Texts are billed like any other. Needs permission to send messages. |
list_new_messages |
The texts your contacts sent the account, oldest first, each with the contact who sent it. It covers the last 24 hours, or from a time you give up to 7 days back. Called again with the cursor it returned, it lists only what arrived since, so an app can check for replies without a webhook. Needs permission to read conversations. |
list_tags |
The account's tags, sorted by name, 100 at a time. The app can search by part of a name, and asks for the next page when there are more. |
list_lists |
The account's contact lists, the same way. |
list_fields |
The account's custom contact fields: key, label and type. |
add_tag, remove_tag |
Adds or removes one tag on up to 25 contacts at a time. Adding or removing a tag can start the account's automations for that tag. |
subscribe_to_list, unsubscribe_from_list |
Subscribes or unsubscribes up to 25 contacts at a time. Leaving a list doesn't opt anyone out of texts. A list synced from another app, such as HubSpot, can't be changed here. |
create_tag, create_list |
Creates one tag or list by name. If the account already has one with that name, in any capitalization, the app gets that one back instead of a copy. Creating changes no contact. An app can make a limited number of these calls per account each day; past it, create more in Roezan. |
update_contact |
Changes one contact's first name, last name or custom field values, and adds an email to a contact that has none. It never replaces an email the contact already has. A custom field must already exist in the account; the app can't create one. Changing a value can start the account's automations for it. |
opt_out_contact |
Opts up to 25 contacts out of text messages. The app can't opt anyone back in. When the app says the contact asked to stop, only the contact can opt back in, for example by texting START. Otherwise you can opt them back in yourself in Roezan. Opt-outs go through even when the account's billing isn't active. |
preview_broadcast |
Prepares a broadcast to one or more lists without sending it, and tells the app how many contacts it reaches, the credits it will use and when it would send, so the app can check with you first. Each preview is saved as a draft on your Broadcasts page. Text only. Needs permission to send messages, and a role in Roezan that can create broadcasts. |
schedule_broadcast |
Sends a broadcast the app previewed in the last 24 hours, at the time it showed or right away. It never sends a draft you started in Roezan. It is refused if the audience grew since the preview or the account lacks the credits, and if your broadcasts need review it waits for approval like any other. Needs permission to send messages, and a role in Roezan that can send broadcasts. |
list_broadcasts |
Your broadcasts, newest first, 20 at a time: drafts, scheduled, waiting for review, sending and sent, with when each sends and, once sent, how many it reached, delivered, failed, and the replies and opt-outs it brought. The app can filter by status or name, and archived broadcasts are left out unless it asks for them. Needs permission to read conversations, and a role in Roezan that can see broadcasts. |
cancel_broadcast |
Stops a scheduled broadcast before it sends and turns it back into a draft, which stays on your Broadcasts page so you can schedule it again. This includes broadcasts people scheduled in Roezan, so the app should check with you first. It can't stop one that has started sending. Needs permission to send messages, and a role in Roezan that can send broadcasts. |
The write tools take each contact by its Roezan id or by its phone number. A phone number must belong to
a contact the account already has; one that doesn't is skipped, never added. The app gets a result for
every contact: changed, skipped (for example, already tagged) or failed; update_contact
reports each value it changed, each one that was already set, and an email it kept. Each change appears
on the contact's activity timeline under the app's name, such as “Claude (AI app)”. Changes
other than opt-outs need the account's billing to be active, as with the REST API.
What a tool returns is sent to the AI app you connected and handled under that provider's terms, including the text of your conversations. Only connect apps you trust with your contacts' details. A text a contact sends can contain anything, including words written to mislead an AI; the app is told to treat message text as information, never as instructions, but check what it proposes to change.
Permissions and safety
- It works as you. The app can do only what your Roezan role allows, checked on every request: changing tags or lists needs permission to manage contacts. If your role changes, the app's access changes with it; if you're removed from the account, it stops working.
- One connection, one account. To use an app with several Roezan accounts, connect each one separately. The app is told which account each connection reaches.
- Apps Roezan hasn't verified are named on the approval screen by the website they come from, with a warning. Approve only an app you set up yourself and trust.
- Disconnecting. Remove the connector in your AI app, or disconnect it in Roezan under Settings → Connected Apps. You can always disconnect your own; admins can disconnect anyone's.
- Staying connected. The app renews its access on its own while you use it. A connection left unused for 90 days expires, and the app asks you to connect again.
Agencies
You can connect an AI app to a client's account if the client has given your agency the Integrations permission with Manage access, under Settings → Agency Access in their account. Step into the client's account from your Agency Dashboard first, then start the connection from your AI app; you'll be asked to confirm the client by name.
- The client sees the connection in their Connected Apps, and their account owner gets an email.
- It stops working if your agency's access to the client ends, the client removes that permission, or you leave the agency.
- Keep each client in its own project or workspace in your AI app, so one client's contacts never end up in a conversation about another.
Troubleshooting
| What you see | What to do |
|---|---|
| Roezan says AI assistant access isn't turned on for the account, on the approval screen or in your app. | Contact Roezan support to turn it on for the account. |
| The app asks you to sign in or connect again. | Its access was disconnected, expired after 90 days unused, or your access to the account changed. Connect again. |
| A tool says you don't have permission. | Your Roezan role doesn't include it, for example viewing contacts. Ask an account admin. |
| The app asks you to approve again the first time it changes a tag or list. | You connected it when it could only read. Approve once more to let it make changes; you can disconnect it at any time. |
| The app says the server doesn't support dynamic client registration. | Update the app. Roezan signs in apps that identify themselves with a client metadata document, which current versions of Claude, Claude Code and Codex do. |
| Allow access is greyed out while you're working in a client's account. | The client hasn't given your agency the Integrations (Manage) permission. They can add it under Settings → Agency Access. |