mcpbeat Sign in

Odile Labs MCP Server

answering

Odile Labs is answering right now. Last checked 13 min ago. It exposes 14 tools.

Odile Labs: AI agents reach businesses by phone number (Direct); Gate keys, audit. Agentforce-ready.

The linked repository no longer exists on GitHub — it was deleted or made private.

Uptime history 49 days of history · worst day 93%
49 days agonow
100.0%
Uptime 24h
182 of 182 checks
14
Tools
read from the server
392 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 171

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 24 September 2026. No other catalogue keeps this.

3 Nov 10 tools disappeared buy_pack, get_agent_services, get_answering_line and 7 more
3 Nov 4 tools appeared cancel_request, claim_request, get_request and 1 more
3 Nov a tool changed the parameters it asks for send_to_business
1 Nov 11 tool descriptions were rewritten answer_call_question, call_business, find_business_agent and 8 more
31 Oct 20 tool descriptions were rewritten31 times that day answer_call_question, buy_pack, call_business and 17 more
31 Oct 7 tools changed the parameters they ask for9 times that day answer_call_question, buy_pack, call_business and 4 more
31 Oct 5 tools appeared answer_call_question, call_business, get_call_result and 2 more
29 Oct 4 tool descriptions were rewritten10 times that day buy_pack, estimate_meal_photo, get_direct_usage and 1 more
29 Oct 9 tools disappeared create_media_job, estimate_meal_photo, estimate_media_job and 6 more
29 Oct a tool changed the parameters it asks for send_to_business
and 99 more, back to 24 September 2026

Tools have disappeared from this server

A tool that vanishes takes a piece of your agent with it, and the change arrives silently. Watch this server and every such change lands in your inbox.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 13 min ago.

run in your terminal
claude mcp add odile --transport http https://odilelabs.com/mcp
Settings → Connectors → Add custom connector, then paste this address
https://odilelabs.com/mcp
~/.codex/config.toml
[mcp_servers.odile]
url = "https://odilelabs.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "odile": {
      "url": "https://odilelabs.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "odile": {
      "type": "http",
      "url": "https://odilelabs.com/mcp"
    }
  }
}

This server publishes 1 more address. The block above uses the one we reach during checks; the full list is under Endpoints below, and the author may intend a particular one for your client.

Available tools 14

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

call
call_business
Place an outbound phone call to a business to ask for information on a named person’s behalf. Use it when find_business_agent returned not_found for a US or Canadian number; when a Direct card exists use send_to_business. It dials a real number and a call cannot be recalled once placed. Requires direct:tasks, human opt-in at https://odilelabs.com/developers#voice and the person’s permission for this call (on_behalf_consent true). Informational calls only: no sales, payments or account access. Calls run Monday to Friday, 9:00 to 17:00 in the business’s local time; outside that window the request is refused and the error includes next_window. A number is not called twice within 24 hours, and each account has a daily call cap. number and callback_number must be callable US or Canadian E.164 numbers, callback_number being the person’s own, never the business’s. message_id is required: reuse it unchanged on every retry so only one call is placed. Returns {task_id, state (queued, completed or failed), status}; read get_call_result for progress and answers. Voice credit costs: get_m2m_network. Example: number='+15615550123', business_name='Harbor Plumbing', caller_name='Ana Diaz', callback_number='+15615550199', need='Do you replace water heaters?', on_behalf_consent=true, message_id='call-8f2'.
get_call_result
Read the state and outcome of a business call you placed with call_business (an outbound call; the calls your own answering line took are in get_line_calls), using its task_id. Call it again until the state is final: queued, dialing and in_call are still in progress; completed, no_answer, voicemail, refused and failed are final; input_required means the business asked a question that answer_call_question can answer within 45 seconds. Requires direct:tasks and ownership of the call (another account’s task_id returns Not found). Returns {task_id, state, outcome, duration_seconds, transcript, answers, summary, cost {credits}}, plus pending_question {question, expires_at} while a question waits. Changes nothing, starts no call and is safe to repeat. Example: task_id='dv_9a3' from call_business; stop polling once state is completed, failed or no_answer.
direct
get_direct_payment
Check an existing deposit booking on your signed-in Direct account: reconcile its Stripe Checkout payment and return its receipt and the separate booking state. Use it after send_to_business returned a payment_url for a deposit booking, to see whether the person has paid; it cannot start a payment, which the person makes on Stripe’s hosted page. Pass biz (the business id from its card) and task_id (the task id send_to_business returned for that booking). Requires direct:tasks. Uses only the stored merchant account and amount and creates no new charge or booking identity; a verified paid checkout may finish its already-authorized held booking. Payout status remains unknown: paid does not mean a bank payout. Safe to repeat. Example: biz='harbor-plumbing', task_id='tk_5d0' after send_to_business returned a payment_url for a deposit booking.
get_direct_usage
Read your own Direct account ledger: the signed-in account’s UTC free-send allowance, prepaid balance in cents, reserved cents and last 20 charges. It never buys credit and does not list costs (see get_m2m_network). Use it before sending tasks that may cost credit; a payment_required reply from send_to_business carries the top-up link. Uses the same ledger as REST and your developer page. Requires direct:tasks and sign-in. Changes nothing; phone minutes and legacy credits are tracked separately. Example: call it with no arguments before a booking to confirm the allowance or balance covers it.
answer
answer_call_question
Give the calling assistant your answer to a question the business asked during a call placed with call_business, so the call can continue. Use it only when get_call_result shows state input_required (its pending_question holds the question); reply within 45 seconds or the assistant tells the business the person will follow up and carries on. The assistant uses the answer on the live call and it cannot be taken back, so keep it short and factual (up to 300 characters). It is refused if it contains a number of four to eight digits, a card-length number, or words such as password, PIN or code; never include payment card numbers, passwords or one-time codes. Requires direct:tasks and ownership of the call. Returns the call state; read get_call_result for the outcome. Example: task_id='dv_9a3', answer='A 40-gallon gas heater, installed in 2016.'
business
find_business_agent
Look up a business by its phone number in the Odile Direct directory and get its Direct card. Start here: send_to_business needs the business id (<biz>) from this card. Pass the number as customers dial it, in E.164 with the country code and no spaces or dashes (+15615550123); any other format is rejected. Returns {agent_card, business, trade, town}: agent_card is the A2A card URL (/b/<biz>/ for a business line, /c/<biz>/ for a claimed listing; pass that <biz> to send_to_business), and the card lists the skills the business accepts. A number that is not on Direct returns not_found with claim_url and listings_url; for a US or Canadian number, voice_fallback says whether call_business is available. Capped at 30 lookups per IP per hour without sign-in and 10000 per key per day signed in. Read-only; contacts no business. Example: number='+15615550123' returns the card whose id you pass to send_to_business as biz.
cancel
cancel_request
Cancel the confirmed booking held on a request, removing it from the business calendar. It cannot be undone; only do it when the customer asked. Use this for a booking made under a request; for one made without a request, use send_to_business with the cancel_booking skill. Needs a live grant with scope read_cancel or book. Calling it again returns the same result. Returns cancelled, booking_id and when. Refused with outcome_uncertain when the calendar cannot confirm the booking (read get_request), and grant_required without access. Requires direct:tasks.
claim
claim_request
Take over a request another assistant opened, using the single-use handoff code the customer issued from their customer link. Use it only when the customer gave you a code; to start a new job use open_request. The code is used up by a successful claim and expires after 15 minutes. Your access is the scope the customer chose: read, read_cancel or book. Returns request_id and your grant; a bad, used or expired code is refused. Call get_request next. Requires direct:tasks.
m2m
get_m2m_network
Read the OdileM2M network card for Direct: the live skills a business can accept, what each costs in credits, the credit packs, the limits that apply, and the Gate MCP address and quickstart. Use it to cost Direct tasks before sending any. It does not choose between products (get_agent_services) and does not show your own balance (get_direct_usage). Returns the pricing card (currency, credit_cents, packs, lookups) plus live_skills[{id, name, description, credits}], receipts, mcp_url, gate_mcp_url, quickstart_url, docs_url and connect_steps[]. Reference data, nothing account-specific: takes no arguments, needs no sign-in, contacts no business and changes nothing. Example: call it once with no arguments before the first send_to_business of a session.
open
open_request
Open a request for one customer's job at one business, so assistants can hand it to each other with the customer's say-so. Use it first when another assistant may need to continue the job; for a one-off message or booking, use send_to_business alone. It contacts nobody and books nothing. Returns request_id, customer_link and your grant (scope book). Show the customer link (customer_link) to the person before acting: it is how they see the request, revoke an assistant and issue a handoff code. Treat it as private. Then book with send_to_business, passing request_id. Requires direct:tasks.
replies
get_replies
Read the replies in a Direct conversation you started with send_to_business: its status and messages, newest last. Use it to find out whether the business has answered; it only reads and does not wait, so call it again later if there is no reply yet. Not for messages callers left on your own answering line (get_line_messages) or the outcome of a phone call (get_call_result). Pass the thread_id that send_to_business returned; sign in as the original requester with direct:tasks, or supply the private thread_token instead. Returns {thread_id, status (received, business_notified, business_replied, booked, waiting_for_you or closed), caller_name, callback_number, messages[{from: customer or business, text, at}]}. An unknown thread or a wrong token returns not_found, and a thread expires 90 days after its last message. Changes nothing and uses no credits. Example: thread_id='th_7c1' (with thread_token unless you started the thread while signed in) returns the status and messages so far.
reply
reply_to_business
Send a customer reply in an open Direct conversation and notify the business. Use it after get_replies shows the business answered or asked something; to start a new conversation use send_to_business, and to answer a question during a live phone call use answer_call_question. Pass the thread_id that send_to_business returned and the reply text (1 to 500 characters); sign in as the original requester with direct:tasks, or supply the private thread_token instead. message_id is the retry key: reuse it unchanged when retrying. Returns the A2A {task} for the reply: read its state before telling anyone it was delivered. A delivered reply cannot be recalled and is billed the same way as a take_message task; closed conversations refuse replies. Example: thread_id='th_7c1', text='Thursday after 2pm works, thank you.', message_id='rep-1'.
request
get_request
Read a request you hold a grant on: objective, attempts, facts, booking, your_scope and next_allowed. It checks any booking against the business calendar and updates the stored record and billing to match, but never books, moves or cancels anything and contacts nobody; repeat it freely. Use it after a booking, and after claim_request, before acting. Not for a conversation started without a request (get_replies). next_allowed is book, cancel, read or needs_human; a fact marked uncertain means the calendar could not confirm it. Refused with grant_required or grant_revoked when you have no live grant. Requires direct:tasks.
send
send_to_business
Send one request to a business found with find_business_agent, using a skill its card lists: take_message (leave a message), check_availability (read open times), book (book a slot check_availability returned), book_first_available (book the first open slot in up to 5 preferred windows) or cancel_booking (cancel a booking you made). Call find_business_agent first; for a business without a card, use call_business. Say an automated assistant is acting, and get the person's permission before booking. A delivered message cannot be recalled; a booking is undone only with cancel_booking. message_id is the retry key: reuse it unchanged on every retry so the request runs once. If you omit it, an identical request from you counts as a retry only within the same UTC day. Returns the A2A v1.0 {task}: read its state before telling anyone a message was delivered or a booking confirmed. A deposit booking returns INPUT_REQUIRED with a payment_url for the person; it is held 30 minutes and confirmed only after payment, which get_direct_payment checks. Failed, refused and unconfirmed tasks are not charged; costs are in get_m2m_network and your balance in get_direct_usage. Messages and confirmed bookings return thread_id and thread_token: use get_replies to read the business’s replies and reply_to_business to answer in the same conversation. Signed-in requesters may omit callback_number for take_message; anonymous requesters still need their own valid number. Example: biz='harbor-plumbing', skill='take_message', message_id='req-8f2', data={caller_name:'Ana Diaz', callback_number:'+15615550199', need:'Leaking water heater, today if possible'}.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

create_media_job
removed 29 Oct 2026
estimate_meal_photo
removed 29 Oct 2026
estimate_media_job
removed 29 Oct 2026
get_balance
removed 29 Oct 2026
get_catalog
removed 29 Oct 2026
get_downloads
removed 29 Oct 2026
get_job
removed 29 Oct 2026
prepare_upload
removed 29 Oct 2026
unlock_job
removed 29 Oct 2026
buy_pack
removed 3 Nov 2026
get_agent_services
removed 3 Nov 2026
get_answering_line
removed 3 Nov 2026
get_answering_line_offer
removed 3 Nov 2026
get_line_calls
removed 3 Nov 2026
get_line_messages
removed 3 Nov 2026
get_receptionist_benchmark
removed 3 Nov 2026
get_sip_address
removed 3 Nov 2026
set_up_answering_line
removed 3 Nov 2026
try_answering_line
removed 3 Nov 2026

Endpoints

URLTransportStateLatencyChecked
https://odilelabs.com/mcp streamable-http answering 726 ms 13 min ago
https://odilelabs.com/mcp/direct streamable-http answering 819 ms 13 min ago

Alternatives to Odile Labs

same job, measured the same way
Handset
by handset-hq

A business phone system for AI agents: send texts, place calls, read transcripts, buy numbers.

37 installs/wk local only
Sms Florin MCP
by flovoice53-tech

Rent a real UK phone number and receive SMS/OTP codes — built for AI coding agents.

66 installs/wk local only
BotPhone
by botphone

Give any AI agent a phone number. BotPhone answers your business line and reports every call back.

answering
1820.ch – Telefonbuch Schweiz
by 1820

Swiss phone directory: search people and businesses, reverse number lookup, business categories.

4 tools answering
Mote Registry
by mote

Search the MOTE AI agent registry for machine-readable businesses.

96 installs/wk local only
AgentCalls
by agentcalls

AI voice agents on real phone numbers: build agents, place and receive calls, read call summaries.

answering
Plexa
by joinplexa

Agentic directory of real businesses in Mexico & LATAM. Search by vertical and city.

7 tools answering
AgentPhone
by agentphone-ai

Give AI agents real phone numbers, messages, and voice calls via MCP.

410 installs/wk answering

Odile Labs — questions

Answers built from our own checks of this server.

What can Odile Labs do?
It exposes 14 tools, read directly from the server on our last check. Among them: answer_call_question, call_business, cancel_request, claim_request, find_business_agent, get_call_result and 8 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Odile Labs mostly used for?
Its tools cluster around call and direct. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Odile Labs working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 182 of 182 checks got a reply (100.0%), average response time 392 ms. The bar chart above shows every period we have measured.
Did Odile Labs ever remove tools?
Yes. create_media_job, estimate_meal_photo, estimate_media_job, get_balance and 15 more are no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
Is Odile Labs still maintained?
The linked repository no longer exists on GitHub — it was deleted or made private. We show this because it changes what you can expect: an unmaintained server may keep answering for months and then stop without warning.
How do I connect Odile Labs?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Odile Labs need an API key?
No. Odile Labs completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 14 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Odile Labs?
It answers our handshake in 392 ms on average, which is faster than 33% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.