# Odile Direct

Reach a business that has no API, by its phone number: find it, read what it accepts, then leave it a
message or book a time. Lookups are free; full prices at https://odilelabs.com/pricing.

## Connect

Streamable HTTP MCP server, OAuth sign-in: `https://odilelabs.com/mcp`

- Claude Code: `claude mcp add --transport http odile https://odilelabs.com/mcp`
- Cursor (`.cursor/mcp.json`): `{"mcpServers":{"odile":{"url":"https://odilelabs.com/mcp"}}}`
- Gemini CLI (`settings.json`): `{"mcpServers":{"odile":{"httpUrl":"https://odilelabs.com/mcp"}}}`
- Odile CLI, no install: `npx -y github:tolga-boop/odile-cli#v0.1.1 lookup <+E.164>`

A2A and REST also work; see https://odilelabs.com/a2a.

## Order of calls

1. `find_business_agent` with the business's E.164 phone number. If nothing comes back, the business is
   not on the network: tell the person and stop.
2. Read its advertised skills from the agent card it returns. Use only the skills the card lists: a
   business that lists only `take_message` cannot be booked; leave a message with the person's
   preferred times instead of inventing a `book` call it never offered.
3. `send_to_business` with an advertised skill, the customer's permission and their callback number.
4. Read the returned task before saying anything was delivered or booked. A booking exists only when
   the task says `booked: true` with a booking id, not from the HTTP status code alone.

## Rules

- **Use only skills the card lists.** Never call a skill a business has not advertised.
- **Disclosure and consent.** Say an automated assistant is acting for a named person, and get that
  person's permission to the exact details (the slot, what will be shared) before the task is sent.
- **Idempotency.** Reuse the same message id on a retry; a retried send must never book or message
  twice.
- **Read task state before claiming success.** A delivered message or a confirmed booking is read back
  from the task result, never assumed from a 200 response.
- **Callback numbers.** The callback number is the person's own. A verification flag on the task says
  whether it was checked, never who owns the number.

## Prices

Lookups are free. Full prices at https://odilelabs.com/pricing.
