עבריתLog in

Connect with MCP

Add OneLi to Claude, ChatGPT, Cursor, VS Code or any MCP client.

What the connector is

The connector is an MCP server: one URL you add to your AI agent (Claude, Grok, ChatGPT, Cursor or an agent you wrote). Once connected it can open phone calls for you, follow them and answer when the voice agent consults it, and also run your whole system: build and edit agents, have them make outbound calls, read their calls, and manage their knowledge bank and WhatsApp. The connection is to your own OneLi account only.

MCP server URL
https://mcp.oneli.io/mcp

The transport is Streamable HTTP. Sign-in is OAuth (the default: a consent screen on oneli.io) or an API key in the Authorization header, in clients that let you set headers.

Claude (web and desktop)

  1. On the agent connection page, copy the connector URL.
  2. In Claude (web or desktop), open Customize in the sidebar, and on the Connectors tab press + Add → Add custom connector, give it a name (for example OneLi), paste the address under MCP server URL and press Continue. (In older versions this was under Settings → Connectors.)
  3. The OneLi consent screen opens. Sign in with the same account if asked, and press Approve and connect.
  4. Back in the chat, write: “Use OneLi to verify the connection”. The agent answers with your account and the minutes left.
  5. To open a call, just ask, for example: “Call the garage at 03-1234567 and book a service tomorrow after 17:00, up to ₪400”.
If Claude shows “Finish connecting” or asks you to reconnect, click it and approve again. This happens after the connector URL changes. On organisation accounts prefer OAuth to a static header, because a header is shared organisation-wide.

Claude Code

Terminal
claude mcp add --transport http oneli https://mcp.oneli.io/mcp
# then, inside Claude Code, run /mcp and choose oneli to sign in

/mcp opens the OneLi consent screen in your browser. To connect with an API key instead of OAuth, see below.

ChatGPT

In ChatGPT, add a remote MCP server through Developer mode in the connectors settings: create a new connector, paste https://mcp.oneli.io/mcp and choose OAuth. ChatGPT does not support a static header, so OAuth is the only option. Menu names and availability vary by ChatGPT plan and version.

Cursor

mcp.json
// ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project)
{
  "mcpServers": {
    "oneli": { "url": "https://mcp.oneli.io/mcp" }
  }
}

On first use Cursor asks you to sign in and opens the consent screen.

VS Code

mcp.json
// .vscode/mcp.json
{
  "servers": {
    "oneli": { "type": "http", "url": "https://mcp.oneli.io/mcp" }
  }
}

Start the server from the MCP servers list in VS Code and approve the sign-in.

Connecting with an API key

The MCP server also accepts an API key as Authorization: Bearer oli_…. This suits code, headless environments and agent frameworks (Integrations). Without the header, the client falls back to OAuth.

ClientConfiguration
Claude Codeclaude mcp add --transport http oneli https://mcp.oneli.io/mcp --header "Authorization: Bearer $ONELI_API_KEY"
Cursor{"mcpServers":{"oneli":{"url":"https://mcp.oneli.io/mcp","headers":{"Authorization":"Bearer ${env:ONELI_API_KEY}"}}}}
VS Code{"inputs":[{"type":"promptString","id":"oneli-key","description":"OneLi API key","password":true}],"servers":{"oneli":{"type":"http","url":"https://mcp.oneli.io/mcp","headers":{"Authorization":"Bearer ${input:oneli-key}"}}}}
Codex CLI[mcp_servers.oneli] url = "https://mcp.oneli.io/mcp" bearer_token_env_var = "ONELI_API_KEY"
Gemini CLI{"mcpServers":{"oneli":{"httpUrl":"https://mcp.oneli.io/mcp","headers":{"Authorization":"Bearer oli_…"}}}}
A revoked key may keep working on the MCP server for up to 60 seconds. In Gemini CLI use httpUrl, because url means SSE there.

Any other MCP client

Any client with Streamable HTTP and OAuth 2.1 with PKCE (S256) and dynamic client registration can connect. The client discovers the authorization server from the 401 response with WWW-Authenticate, registers itself and opens the consent screen on oneli.io. If the client lets you set headers, you can use an API key instead.

The consent screen on oneli.io shows the client’s name and the address it returns to. Return addresses on claude.ai, claude.com, chatgpt.com, chat.openai.com, cursor.com, vscode.dev and local addresses are recognised. Anything else is shown as unverified, so approve only a client you know.

Tools

ToolInputWhat it doesMain output
verify_connection-Checks the chat is connected to your account. Returns the email, plan, minutes left this month and renewal date.email, plan, minutes_left, renews_at
create_call_taskto_number, goal, instructions?, max_price_ils?, max_cost_ils (3), opening_line?, idempotency_key?Starts a call. max_price_ils: above it the voice agent consults you. opening_line: the first sentence (up to 300 characters). Clients that support MCP Apps show a live call card in the chat.task_id, status, goal, to_number, created
get_call_eventstask_id, after_event_id (0), limit (≤100, 50)New events after the cursor (transcript, consultation, end, cost), plus any consultation waiting for a decision.status, task_status, outcome, revision, events, next_cursor, pending_consultation
watch_calltask_id, after_event_id (0), wait_s (20, ≤25)The recommended way to supervise a call: returns each line the moment it is said, flags details the voice agent stated that the other side never said, and says what to do next. Call it again and again until the call ends.events, next_cursor, pending_consultation, next_action
get_call_statustask_idCurrent status, outcome and instruction revision.status, outcome, status_detail, revision, pending_consultation
get_call_transcripttask_idThe whole conversation in order: who spoke and what was said, with the status, outcome and summary. Best after the call ends.status, outcome, summary, transcript, content_deleted
respond_to_consultationconsultation_id, decision, reasonAnswers a consultation: approve, decline or ask_user. Only the first answer before the deadline counts.status, decision | existing_decision
send_call_instructiontask_id, instruction (≤1000), expected_revision?, urgent?A new instruction mid-call, for example to switch to English. Applies from the voice agent’s next turn.command_id, revision, status
cancel_call_tasktask_idCancels a queued call, or hangs up an active one.status: cancelled | cancel_requested
list_calls-Up to 20 recent calls with outcome, duration and cost.tasks

Every tool returns readable text plus structured content. Text that comes from the call (from the other side or the summary) appears between «» and is marked as data, not instructions, so the agent does not act on requests spoken during the call.

Your profile (name, who the call is on behalf of, background) is attached to every call on the server, including calls the agent opens. The agent itself cannot read it or change your plan or spending limits.

Build your own voice agent from the chat

Besides calls for you, the chat (Claude, ChatGPT, Grok or any MCP client) can build and manage your own voice agents, the same agents you build in the agent studio: create one from a template, show all its settings, change any of them, test it in a text conversation, and put it live or pause it. Every change shows up in the studio at once, and the other way round.

Create an agent

Describe the business and what the agent should do. The chat asks what is missing, creates the agent as a draft and shows all its settings:

In the chat
Create a voice agent for Danny's Pizza in Tel Aviv that answers incoming calls:
- Goal: take a complete order (what, how many, address and time)
- Opening: "Hi, you've reached Danny's Pizza! What would you like to order?"
- Menu: Margherita ₪49, Mushroom ₪55, delivery ₪15
- A male voice, short answers, and a Supervisor that checks prices against the menu

See every setting

Ask: “Show me all the settings of the pizza agent”. get_voice_agent returns everything, grouped like the studio’s pages: the agent (direction, goal, context, language, tone), opening, the conversation steps with the situations in each, the Supervisor, sections and rules, knowledge, tools and webhooks, variables, voice and brain, and call settings (time limits, turn-taking, hearing, memory and recording), plus what still blocks going live.

Change settings

Ask in words, for example “Add a step that asks for the address and time”, “Switch to a female voice and cap calls at 5 minutes” or “Make the agent speak English”. The chat reads the agent and sends update_voice_agent only what changes. Lists (steps, knowledge, rules) replace the whole list, so it also sends what stays, with its ids. It looks like this:

MCP
update_voice_agent {
  "agent_id": "va_…",
  "steps": [
    { "id": "st_…", "name": "Opening" },
    { "name": "The order", "ask": "What would you like to order?", "knowledge": ["Menu"],
      "situations": [{ "when": "They ask for something not on the menu", "do": "Say politely we don't have it and suggest something from the menu." }] },
    { "name": "Wrap-up", "say": "Thanks, your order is on its way!" }
  ],
  "supervisor": { "enabled": true, "instructions": "Make sure every price she says is from the menu.", "knowledge": ["Menu"] },
  "limits": { "max_s": 300, "wrap_at_s": 240 }
}

Test and go live

“Test the agent: call as a customer who wants two Margheritas to 10 Rothschild”. The chat plays the caller with test_voice_agent and shows you the replies. When you are happy, “Put the agent live” (deploy_voice_agent). The chat puts it live only after you confirm.

Manage everything: calls, knowledge and WhatsApp

The chat can also do everything the assistant on the site does: have the agent make an outbound call, read its calls and improve it, manage its knowledge bank, see every agent’s WhatsApp, read chats, send messages, and manage templates, rules and auto-reply. Before a call, a send or a delete it asks you.

ToolInputWhat it doesMain output
list_voice_agents-The voice agents you built in the studio: id, name, status (draft, live, paused), direction and number.agents
get_voice_agentagent_id, lang?Every setting of one agent as readable text you can show as is, plus the full config and what still blocks going live.agent (config, missing)
list_voice_agent_optionslang?What an agent can be built from: templates, voices, tools, models, Supervisor models, transcribers, languages and memory fields.templates, voices, tools, llms, models, languages
create_voice_agenttemplate, name?, + any update_voice_agent fieldCreates a new agent from a template (sales, appointments, support, blank) as a draft, optionally with its settings in the same call.agent
update_voice_agentagent_id, goal?, context?, opening_line?, steps?, supervisor?, knowledge?, voice_id?, language?, direction?, limits?, …Changes any setting: goal, context, opening line, steps and situations, Supervisor, sections, rules, knowledge, tools and webhooks, variables, voice, brain, language, direction, limits, memory and recording. Lists you send replace the whole list.agent (config, missing)
test_voice_agentagent_id, messages, session_id?A test conversation in text: the chat plays the caller and gets the agent’s next reply and the tools it used.reply, tools, ended
deploy_voice_agentagent_idPuts the agent live (it answers its number, if it has one). Only after you confirm. If something is missing, says what to fix.status, number
pause_voice_agentagent_idPauses a live agent. Its settings stay.status
delete_voice_agentagent_id, confirmedDeletes an agent for good (its number is freed, its monthly payment cancelled). Only after your explicit yes.deleted
call_with_voice_agentagent_id, to, variables?, idempotency_key?The agent calls someone now, with values for its {{variables}}. Only while it is live and after you confirm the number.call_id, status
voice_agent_call_statusagent_id, call_id?Where an outbound call is (dialing, ringing, in call, ended), or the latest outbound calls.call | calls
list_agent_callsagent_id, limit?The agent’s recent calls (incoming, outgoing and tests) with a short summary.calls
get_agent_callagent_id, task_idOne call as it happened: the transcript, the Supervisor’s notes and what the agent asked it. For review and improvement.lines, summary
search_clientsq?, agent_id?, stage?, hot?Search the clients of all your agents: name, phone, email, need and next step, with the stage and the AI's score.clients
get_clientagent_id, keyOne client whole: the AI profile (what they want, their goal, the next step), every call and WhatsApp message on one timeline, and notes.client
update_clientagent_id, key, stage?, note?Set the client's stage, fix their details or add a note.client
analyze_clientagent_id, keyA fresh AI read of all the client's calls and messages.insights
list_agent_knowledge · add_agent_knowledge · search_agent_knowledge · remove_agent_knowledgeagent_id, …The agent’s knowledge bank: list, add (text, a link or an objection), search the way a call does, and remove.items | results
list_whatsapp · whatsapp_statusagent_id?Every agent’s WhatsApp, or one agent’s: connected or not, the number and auto-reply.agents | account
list_whatsapp_chats · get_whatsapp_chatagent_id, chat_id?The agent’s WhatsApp chats, and the messages of one chat.chats | messages
send_whatsappagent_id, to | chat_id, text | template_id, params?, confirmedSends a WhatsApp from the agent’s number. Only after you approve the recipient and the message.message_id
whatsapp_templates · whatsapp_automations · set_whatsapp_auto_replyagent_id, op, …WhatsApp templates, rules (a keyword, an ad click…) and auto-reply, for the whole number or one chat.templates | automations | account
list_phone_menus · get_phone_menu · save_phone_menu · link_number · list_number_callsmenu_id?, name, menu, number_id, agent_id | menu_idA key-press menu on a number ("press 1 for sales, 2 for a person"): list, read, create and update, point a number at an agent or a menu, and the number’s call log. The person’s number must be Israeli.menus | menu | number | calls
list_connected_apps-The apps you connected (Gmail, Google Calendar, HubSpot…) that an agent’s Supervisor can use.connected
These stay on the site, at oneli.io/app/agents: taking a phone number and paying, the agent’s contacts, recordings, connecting a WhatsApp number or an app (done in the browser), and the voice test. Connections made before this update get the new permissions automatically. In clients that keep a fixed copy of the tool list (ChatGPT, for example) press Refresh to see the new tools.

Use cases

Once connected, ask in words. A few examples that work in Claude, Grok, ChatGPT and any MCP client:

Grok or Claude scores leads, and your agent calls them

The assistant reads your leads (a sheet, a CRM, email or a file), scores them for fit and urgency, shows you the list, and after your approval has your own voice agent call each lead with call_with_voice_agent, passing the name and what they asked for as variables. Then it follows the calls and sums up who to follow up.

In the chat
Read the leads in the sheet "Leads – October". Score each 1–10 for fit and urgency and show me the top 10 with one line why.
After I approve: for each lead, OneLi call_with_voice_agent with the "Sales" agent (list_voice_agents), with variables name and interest.
Follow each call (voice_agent_call_status), then write the result and the next step back into the sheet.

Improve the agent from its real calls

The assistant reads the agent’s latest calls, points at what went wrong with a quote and a time, proposes changes and applies only the ones you approve.

In the chat
Read the Sales agent’s last 5 calls. What went wrong? Each point with a short quote and its time. Propose changes and apply only what I approve.

WhatsApp after a call

After a call the assistant drafts a follow-up from the agent’s number (or an approved template outside the 24-hour window) and sends only after you approve each message.

In the chat
For every Sales agent call that ended today where the customer asked for details: draft a short WhatsApp with the details, show me, and send only after my yes.

Keep the knowledge up to date

Add a price list, FAQs or a page from your site to the agent, and check what it will find when asked.

In the chat
Add https://example.com/prices to the Support agent, then search its knowledge for "how much is delivery" and show me what it finds.

Your own product on OneLi

A CRM, a lead system or a platform for your customers: with an API key (REST or the MCP server) create an agent per customer, fill its knowledge, start outbound calls and read the transcripts.

Marketing calls in Israel: call only people who agreed or asked, say in the opening who the business is and that an AI agent is speaking, and honour removal requests. See the rules.

Managing and disconnecting

  • On the agent connection page, under Connected agents (סוכנים מחוברים), you see each agent, when it connected and when it was last used.
  • Disconnecting revokes access immediately. A call already in progress runs to the end, but the agent cannot open new calls.
  • Every call the agent opens also appears on the site with its transcript, and counts toward your plan’s minutes.
  • Up to 20 active connections per account, agents and API keys together.