Connect your AI to Exreach
Connect any MCP client to your Exreach workspace with one URL and an API key.
One URL, one API key, done. Works with Claude, Claude Code, Cursor, Windsurf, ChatGPT custom connectors, and any MCP client that can send a Bearer header.
Agents is a Pro add-on. Exreach must enable it for the workspace first. Contact hello@exreach.app if you need it. Create the key on Integrations.
The 60-second version
- Have an Exreach workspace on Pro or Pro+ with Agents enabled.
- Open Settings → Integrations. Create an API key. Copy the
exr_secret once. - Paste this URL wherever your AI client adds MCP servers or connectors:
https://app.exreach.app/api/mcp- Set the Authorization header to
Bearerplus your secret. - Ask your AI to call
whoamiand confirm the workspace name.
That is the whole setup. Exact clicks per client below. Revoke the key anytime on Integrations.
One-line prompt
Paste this into your agent. Replace exr_YOUR_SECRET with your key.
Connect Exreach MCP: https://app.exreach.app/api/mcp with Authorization Bearer exr_YOUR_SECRET. Follow https://exreach.app/docs/settings/mcp/ for your client. Verify with whoami. Do not invent a different URL or auth.Setup by client
Claude (web or Desktop)
Custom connector
- Create an API key on Integrations.
- Add a custom MCP connector.
- Paste
https://app.exreach.app/api/mcp. - Send
Authorization: Bearer exr_…on each request.
Claude Code
One command
claude mcp add --transport http exreach https://app.exreach.app/api/mcp \
--header "Authorization: Bearer exr_YOUR_SECRET"Replace the secret. Then ask Claude to call whoami.
Cursor / Windsurf
Config file
Add to .cursor/mcp.json (or Windsurf's MCP config):
{
"mcpServers": {
"exreach": {
"url": "https://app.exreach.app/api/mcp",
"headers": {
"Authorization": "Bearer exr_YOUR_SECRET"
}
}
}
}Enable the server under Tools & MCP (or the Windsurf equivalent). Ask for whoami.
ChatGPT and other custom connectors
URL + Bearer
- Create a custom connector / app that accepts a remote MCP URL.
- Paste
https://app.exreach.app/api/mcp. - Auth: Bearer token. Paste your
exr_key (orBearer exr_…if the field wants the full header value).
Menus move between products. The constant part is: remote MCP URL above, Bearer auth, then whoami.
Any other MCP client
| Endpoint | https://app.exreach.app/api/mcp |
| Transport | Streamable HTTP |
| Auth | Authorization: Bearer exr_… |
stdio-only client? Bridge it with mcp-remote:
{
"mcpServers": {
"exreach": {
"command": "npx",
"args": [
"mcp-remote",
"https://app.exreach.app/api/mcp",
"--header",
"Authorization: Bearer exr_YOUR_SECRET"
]
}
}
}API keys
Exreach MCP uses an API key today. OAuth is later work.
- Owner or admin opens Settings → Integrations.
- Create a key. The secret starts with
exr_and shows once. - Send it as
Authorization: Bearer exr_…. - Revoke on the same page if it leaks.
A viewer key can read. It cannot write. Scripts can use the same key on POST /api/agent/invoke.
Example prompts
Once connected, talk normally. Try:
- Who am I connected as in Exreach?
- Find Mike in Turkey.
- List open invoices (money still due). List active invoices (status sent).
- What action items are waiting on the dashboard?
- I copied this factory website. Create the company, the contact, and an opportunity. Show me the preview first.
- Draft a quotation for company_id … with these sourcing lines …
- Add this product with the HS code you researched. Preview before save.
- Record this bank expense. Warn me that it posts to the ledger.
Write tools return a preview first. Approve it, then the client calls again with confirm=true. Prefer drafts. Review in the app before you mark sent or record payment. Set write tools to Ask in Cursor.
Exreach does not fetch websites. Your AI reads the page, maps the fields, then calls Exreach.
Tool reference
Your AI discovers these tools automatically.
| Tool | Access | What it does |
|---|---|---|
whoami |
read | Organization id, name, role, and key prefix |
search_companies |
read | Search companies (name, country, type, lead) |
search_contacts |
read | Search people (name, country, company) |
search_products |
read | Search products (name, HS code, unit) |
list_companies |
read | Same filters as search companies |
list_contacts |
read | Same filters as search contacts |
list_opportunities |
read | Opportunities (default open) |
find_clients |
read | Companies and contacts together |
get_company |
read | One company by id |
get_contact |
read | One contact by id |
get_opportunity |
read | One opportunity by id |
get_product |
read | One product by id |
list_open_invoices |
read | Unpaid AR (open or partial) |
list_invoices |
read | Invoices. open = unpaid AR; active = sent |
list_quotations |
read | Quotations. open = draft+sent; active = sent |
get_document |
read | One quotation or invoice by id, with lines |
list_organization_banks |
read | Bank accounts for payment tools |
list_action_items |
read | Dashboard action items |
list_conversion_gaps |
read | Quotation→invoice and invoice→project gaps |
create_crm_intake |
write | Company + contact + optional opportunity in one preview |
create_company |
write | Create a company |
create_contact |
write | Create a contact (personal company if needed) |
create_opportunity |
write | Create an opportunity |
create_quotation_from_brief |
write | Draft quotation from a brief |
create_invoice_from_brief |
write | Draft invoice with no parent quotation |
create_invoice_from_quotation |
write | Draft invoice from an accepted quotation |
set_quotation_status |
write | draft → sent → accepted or rejected |
create_product |
write | Catalog product (no photo yet) |
record_invoice_payment |
write | Books income on a sent or accepted invoice |
create_expense |
write | New Books expense (cannot edit or reverse) |
create_income |
write | New Books income (prefer invoice_id) |
Write tools need editor, admin, or owner. They cannot mark a quotation paid, close a project, or change team members. Created quotations and invoices stay draft until you change status in a later step.
Ready to connect?
Create a key on Integrations. Paste the URL, add Bearer auth, call whoami.