MCP.Market

Odile Labs MCP server

online · 100% uptime
by odilelabs.com·com.odilelabs/odile·v1.9.0

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

B81/100grade B
What users say
No reviews yet
Be the first
Safety scan
B81/100

full report

Adoption
Growing

0 stars

Reviews

Write one

Nobody has reviewed Odile Labs yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Odile Labs tools (10, 2 write)

write = sends, deletes, buys or posts
  • answer_call_questionFree

    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.'

  • call_businessFree

    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'.

  • find_business_agentFree

    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.

  • get_call_resultFree

    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.

  • get_direct_paymentFree

    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_usageFree

    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.

  • get_m2m_networkFree

    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.

  • get_repliesFree

    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_to_businesswrite actionFree

    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'.

  • send_to_businesswrite actionFree

    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'}.

Public scan report

scanner v0.1.10 · 2026-11-01 · same rubric, same numbers if you re-run it

1 high
  • –Code scanremote-only server, no package to scann/a
  • Live reliabilityremote reachable in 1866ms20/20
  • Tool poisoning10 tool descriptions checked15/15
  • Auth qualityopen endpoint exposes 2 write-action tools with no auth3/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityendpoint served from the registry-verified namespace domain8/10

Findings (1)

  • highWrite-action tools reachable without authenticationauth.open-write
Overall 81/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Odile Labs compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
81/100
higher than 62% of 48,255 servers
Tools
10
the typical server has 7
Tools that change things
20%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote server answers 100%
Response time
343 ms
faster than 43% of 30,031 servers

What its tools let an agent do: 8 read · 2 send or post

Release history: 9 versions in the registry since 2026-09-22, latest 2026-10-31, typically one every 4 days.

Install Odile Labs in Claude Code, Cursor or VS Code

claude mcp add --transport http odile https://odilelabs.com/mcp/direct
Add to Cursor

What the publisher says

From the Odile Labs repository's README, as published. We do not edit it. Read it on GitHub

Odile Labs — MCP server

A hosted Model Context Protocol server at https://odilelabs.com/mcp, so an agent — Claude Code, Codex, or anything else that speaks MCP — can do two jobs on a person's behalf:

YouTube and TikTok.

  • Make — turn footage or photos into platform-ready video for Instagram,

Teams call and email the summary to the people the account owner names.

  • Meeting notes — send a note-taker to a Zoom, Google Meet or Microsoft

This repository is the public record of the server: what it exposes, how it authenticates, and what it costs. The service itself is closed source.

Connecting

Streamable HTTP, at https://odilelabs.com/mcp. Claude Code:

claude mcp add --transport http odile https://odilelabs.com/mcp

Anything else that takes a remote MCP URL works the same way. Sign-in happens in a browser on first use.

Authentication

OAuth 2.1, on every tool, including the read-only ones. There is no anonymous surface: an unauthenticated request gets a 401 carrying the discovery header the MCP specification asks for.

WWW-Authenticate: Bearer realm="OAuth", resource_metadata="https://odilelabs.com/.well-known/oauth-protected-resource/mcp"

Both documents a client needs are served:

  • https://odilelabs.com/.well-known/oauth-protected-resource
  • https://odilelabs.com/.well-known/oauth-authorization-server

Permissions are ticked on a consent screen. A tool that spends money never runs without a ceiling the account owner has agreed to — see unlock_job below.

The tools

Eight are always present. Four more appear only on an account with Meeting Notes enabled, so a client that sees twelve and a client that sees eight are both correct.

Make — video and photos

unlockjob is the only tool that moves money, it takes an explicit maxcredits the customer agreed to, and unlocking the same job twice charges once.

Meeting notes

Meeting minutes are reserved when a call is scheduled and the unused part is returned. Every minute on the call is charged, rounded up to the minute.

What it costs

Credits for media, minutes for meetings, both quoted before they are spent. getcatalog and estimatemedia_job are the honest way to find out what a job costs without committing to it. Prices are on odilelabs.com/developers and are read live by the server rather than copied here, so this file cannot go stale against them.

Registry entry

server.json is the entry for the official MCP registry, published under the com.odilelabs namespace, which is authenticated by DNS on odilelabs.com.

Who runs it

OdileUSA L.L.C., Florida. odilelabs.com · hello@odilelabs.com

Nothing above is checked by us. What we check is on the safety report.

Grade history

  • 2026-11-01downgradeA → Bscore 81: Write-action tools reachable without authentication

Odile Labs: common questions

Is Odile Labs MCP server safe?
Mostly: it is graded B (81/100). Read the Odile Labs safety report
How do I install Odile Labs?
It runs remotely at odilelabs.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Odile Labs need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Odile Labs maintained?
The last commit was 3 days ago (2026-11-01). The latest release is v1.9.0.
Is Odile Labs up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
How does Odile Labs compare with other MCP servers?
safety score 81/100 (higher than 62% of 48,255 servers); tools 10 (the typical server has 7); tools that change things 20% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.