{"name":"OdileM2M","network":"OdileM2M","description":"The network for AI agents: reach participating businesses by phone number through Odile Direct; manage keys, limits and audits through Gate; connect phone lines that answer. Structured skills depend on the business card. Claims offer messages by email only. The call_business skill is an opt-in developer pilot with the limits below. Lookups, availability and booking cancellation stay free. Each agent identity gets 50 free tasks per UTC calendar month; then a delivered message costs 1 credit and a confirmed booking 5 credits. 1 credit = $0.10. Direct 100: 100 credits for $10; Direct 1,000: 1,000 credits for $90; Direct 10,000: 10,000 credits for $800. Credits never expire; nothing renews. Failed, refused and unconfirmed tasks cost nothing. Existing prepaid dollar balances keep their full cent value; 10 cents of balance equals 1 credit. Price quotes and paying a quoted price are not available. The opt-in voice pilot costs 2.5 credits per answered minute, billed by the second with a 20-second minimum. It reserves a funded 20–600-second cap before dialing; failed and unanswered calls cost zero. It needs account opt-in; free-only connections cannot start voice. A wallet can pay $1.00 in Base USDC per answered call to a business (POST /a2a/v1/x402/call) or per answered test call of its own phone agent, with scores (POST /a2a/v1/x402/test-call); unanswered and failed calls are never charged. Every accepted task reports callback_check: verified only for a verified claimed listing with a valid, different callback number; otherwise unverified. This does not verify that the caller owns the callback. A business’s own numbers are refused.","supportedInterfaces":[{"url":"https://api.odilelabs.com/a2a/v1","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"version":"1.1.0","provider":{"organization":"Odile Labs","url":"https://odilelabs.com"},"documentationUrl":"https://odilelabs.com/m2m","iconUrl":"https://odilelabs.com/media/odile-icon-192.png","capabilities":{"streaming":false,"pushNotifications":true},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"pricing_url":"https://odilelabs.com/pricing.json","skills":[{"id":"find_business_agent","name":"Find a business agent","description":"Send skill find_business_agent and an E.164 number to resolve a participating business to its public agent card URL.","tags":["directory","phone"],"examples":["Find the agent for +15615295370."],"credits":0},{"id":"take_message","name":"Take a message","description":"First resolve a business; send this skill to the endpoint in its returned card. Save a caller’s name, callback number and need for the business owner. Returns a two-way thread: GetTask/tasks/get reads replies; SendMessage with taskId or contextId answers in the same thread. Use your signed-in identity or thread_token. Signed-in take_message requests may omit callback_number.","tags":["message"],"examples":["Leave a message asking for a callback."],"credits":1},{"id":"check_availability","name":"Check availability","description":"First resolve a business; send this skill to the endpoint in its returned card. Return the open slots offered by the business booking page.","tags":["calendar"],"examples":["Find the next time for a repair."],"credits":0},{"id":"book","name":"Book an appointment","description":"First resolve a business; send this skill to the endpoint in its returned card. Book one of the signed slots returned by check_availability, with the customer’s permission. Returns a two-way thread: GetTask/tasks/get reads replies; SendMessage with taskId or contextId answers in the same thread. Use your signed-in identity or thread_token. Signed-in take_message requests may omit callback_number.","tags":["booking"],"examples":["Book the offered slot for the customer."],"credits":5},{"id":"book_first_available","name":"Book the first open time","description":"First resolve a business; send this skill to the endpoint in its returned card. Try up to 5 preferred windows in order (date, optional after/before HH:MM, service) and book the first open time; if none is open, leave the owner a message with the wanted windows (fallback take_message) or book nothing (fallback none). Returns a two-way thread: GetTask/tasks/get reads replies; SendMessage with taskId or contextId answers in the same thread. Use your signed-in identity or thread_token. Signed-in take_message requests may omit callback_number.","tags":["booking"],"examples":["Book Monday after 2 PM, otherwise Tuesday morning, otherwise ask the owner."],"credits":5},{"id":"cancel_booking","name":"Cancel a booking","description":"First resolve a business; send this skill to the endpoint in its returned card. Cancel your confirmed booking using its booking_id and private cancel_token. Free; the delivered booking fee is not refunded.","tags":["booking"],"examples":["Cancel the appointment I booked."],"credits":0},{"id":"call_business","name":"Call a business (opt-in metered voice pilot)","enabled_by_default":false,"requires_account_enablement":true,"description":"Separately enabled signed-in developer accounts only: informational voice, 2.5 credits per answered minute billed by the second with a 20-second minimum; maximum 600 seconds reserved before dialing. Actual opted-in Odile receptionist lines with read_direct_task can answer 24/7; US/Canada external landlines and verified worldwide SIP claims retain local weekday business hours. One call per number per 24 hours, three per account per day, consent, AI disclosure and permanent opt-out. Failed/unanswered calls cost zero; answered refusals consume time. Free-only connections never start voice.","tags":["phone"],"examples":["Ask a business to call the customer back about availability."],"credits":2.5,"unit":"minute"}],"receipts":{"keys":"https://api.odilelabs.com/.well-known/odile-receipts.json","verify":"https://odilelabs.com/m2m/verify","alg":"Ed25519","jwks":{"keys":[{"kid":"51c85356bf7b9f4b","alg":"Ed25519","kty":"OKP","crv":"Ed25519","x":"O3ziGe5m5GxbuvfFcw9uUrk-FSB73RdCu0I21FmZBcY"}],"current_kid":"51c85356bf7b9f4b"}},"mcp":"https://odilelabs.com/mcp","formats_mcp":"https://odilelabs.com/mcp/formats","gate_mcp":"https://gate.odilelabs.com/mcp","quickstart":"https://odilelabs.com/m2m-quickstart.sh","storefront_url":"https://odilelabs.com/a2a/store/llms.txt","pricing":{"network":"OdileM2M","description":"Reach a participating business by phone number through Direct; manage API keys, limits and audit through Gate; add phone lines that answer.","currency":"USD","credit_cents":10,"effective_date":"2026-10-24","credits_enabled":true,"free_tasks_month":50,"allowance_scope":"per agent identity per UTC calendar month","lookups":{"credits":0,"anonymous_per_ip_hour":30,"developer_per_key_day":10000},"live_skills":[{"id":"find_business_agent","credits":0,"limits":"Only participating or verified claimed listings are returned."},{"id":"take_message","credits":1,"limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing."},{"id":"check_availability","credits":0,"limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing."},{"id":"book","credits":5,"limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing."},{"id":"book_first_available","credits":5,"limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing."},{"id":"cancel_booking","credits":0,"limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing."},{"id":"call_business","credits":2.5,"unit":"minute","minimum_seconds":20,"cap_seconds":600,"enabled":true,"enabled_by_default":false,"requires_account_enablement":true,"limits":"Separately enabled informational voice pilot. Billed by the answered second with a 20-second minimum; reserve a funded cap before dialing, maximum 600 seconds. Failed/unanswered calls cost zero; answered refusals consume time. Actual opted-in Odile receptionist lines with read_direct_task answer 24/7; external US/Canada landlines and verified worldwide SIP claims retain local business-hour restrictions. One call/number/24h and three/account/day. Free-only connectors cannot start paid voice."}],"packs":[{"id":"direct100c","name":"Direct 100","credits":100,"amount_cents":1000,"currency":"USD","recurring":false},{"id":"direct1000","name":"Direct 1,000","credits":1000,"amount_cents":9000,"currency":"USD","recurring":false},{"id":"direct10000","name":"Direct 10,000","credits":10000,"amount_cents":80000,"currency":"USD","recurring":false}],"legacy_balances":"Existing prepaid dollar cents retain their full value. 10 cents of balance equals 1 credit. Historical legacy credit lots remain separate.","unavailable":["quotes","settlement"],"source_page":"https://odilelabs.com/m2m","pricing_url":"https://odilelabs.com/pricing.json","mcp_url":"https://odilelabs.com/mcp","formats_mcp_url":"https://odilelabs.com/mcp/formats","gate_mcp_url":"https://gate.odilelabs.com/mcp","quickstart":"https://odilelabs.com/m2m-quickstart.sh","docs":"https://odilelabs.com/a2a","connect":["Connect https://odilelabs.com/mcp","Call find_business_agent with a business E.164 phone number","Call send_to_business with a skill advertised by its card"]}}