{"id":519888,"name":"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.","card_url":"https://api.odilelabs.com/a2a/v1","endpoint":"https://api.odilelabs.com/a2a/v1","protocol_version":"1.0","first_seen":"2026-10-31T21:28:42.253846+00:00","last_verified":"2026-10-31T21:28:42.253846+00:00","card":{"mcp":"https://odilelabs.com/mcp","name":"OdileM2M","skills":[{"id":"find_business_agent","name":"Find a business agent","tags":["directory","phone"],"credits":0,"examples":["Find the agent for +15615295370."],"description":"Send skill find_business_agent and an E.164 number to resolve a participating business to its public agent card URL."},{"id":"take_message","name":"Take a message","tags":["message"],"credits":1,"examples":["Leave a message asking for a callback."],"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."},{"id":"check_availability","name":"Check availability","tags":["calendar"],"credits":0,"examples":["Find the next time for a repair."],"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."},{"id":"book","name":"Book an appointment","tags":["booking"],"credits":5,"examples":["Book the offered slot for the customer."],"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."},{"id":"book_first_available","name":"Book the first open time","tags":["booking"],"credits":5,"examples":["Book Monday after 2 PM, otherwise Tuesday morning, otherwise ask the owner."],"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."},{"id":"cancel_booking","name":"Cancel a booking","tags":["booking"],"credits":0,"examples":["Cancel the appointment I booked."],"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."},{"id":"call_business","name":"Call a business (opt-in metered voice pilot)","tags":["phone"],"unit":"minute","credits":2.5,"examples":["Ask a business to call the customer back about availability."],"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.","enabled_by_default":false,"requires_account_enablement":true}],"iconUrl":"https://odilelabs.com/media/odile-icon-192.png","network":"OdileM2M","pricing":{"docs":"https://odilelabs.com/a2a","packs":[{"id":"direct100c","name":"Direct 100","credits":100,"currency":"USD","recurring":false,"amount_cents":1000},{"id":"direct1000","name":"Direct 1,000","credits":1000,"currency":"USD","recurring":false,"amount_cents":9000},{"id":"direct10000","name":"Direct 10,000","credits":10000,"currency":"USD","recurring":false,"amount_cents":80000}],"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"],"lookups":{"credits":0,"anonymous_per_ip_hour":30,"developer_per_key_day":10000},"mcp_url":"https://odilelabs.com/mcp","network":"OdileM2M","currency":"USD","quickstart":"https://odilelabs.com/m2m-quickstart.sh","description":"Reach a participating business by phone number through Direct; manage API keys, limits and audit through Gate; add phone lines that answer.","live_skills":[{"id":"find_business_agent","limits":"Only participating or verified claimed listings are returned.","credits":0},{"id":"take_message","limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing.","credits":1},{"id":"check_availability","limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing.","credits":0},{"id":"book","limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing.","credits":5},{"id":"book_first_available","limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing.","credits":5},{"id":"cancel_booking","limits":"Use only the skills advertised by the business card. Failed, refused and unconfirmed tasks cost nothing.","credits":0},{"id":"call_business","unit":"minute","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.","credits":2.5,"enabled":true,"cap_seconds":600,"minimum_seconds":20,"enabled_by_default":false,"requires_account_enablement":true}],"pricing_url":"https://odilelabs.com/pricing.json","source_page":"https://odilelabs.com/m2m","unavailable":["quotes","settlement"],"credit_cents":10,"gate_mcp_url":"https://gate.odilelabs.com/mcp","effective_date":"2026-10-24","allowance_scope":"per agent identity per UTC calendar month","credits_enabled":true,"formats_mcp_url":"https://odilelabs.com/mcp/formats","legacy_balances":"Existing prepaid dollar cents retain their full value. 10 cents of balance equals 1 credit. Historical legacy credit lots remain separate.","free_tasks_month":50},"version":"1.1.0","gate_mcp":"https://gate.odilelabs.com/mcp","provider":{"url":"https://odilelabs.com","organization":"Odile Labs"},"receipts":{"alg":"Ed25519","jwks":{"keys":[{"x":"O3ziGe5m5GxbuvfFcw9uUrk-FSB73RdCu0I21FmZBcY","alg":"Ed25519","crv":"Ed25519","kid":"51c85356bf7b9f4b","kty":"OKP"}],"current_kid":"51c85356bf7b9f4b"},"keys":"https://api.odilelabs.com/.well-known/odile-receipts.json","verify":"https://odilelabs.com/m2m/verify"},"quickstart":"https://odilelabs.com/m2m-quickstart.sh","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.","formats_mcp":"https://odilelabs.com/mcp/formats","pricing_url":"https://odilelabs.com/pricing.json","capabilities":{"streaming":false,"pushNotifications":true},"storefront_url":"https://odilelabs.com/a2a/store/llms.txt","documentationUrl":"https://odilelabs.com/m2m","defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"supportedInterfaces":[{"url":"https://api.odilelabs.com/a2a/v1","protocolBinding":"JSONRPC","protocolVersion":"1.0"}]},"status":"verified","publisher_domain":"odilelabs.com","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-31T21:28:42.253846+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://api.odilelabs.com/a2a/v1","last_check":{"checked_at":"2026-10-31T21:28:42.253846+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://api.odilelabs.com/a2a/v1"],"skills":[{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_id":"call_business","name":"Call a business (opt-in metered voice pilot)","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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":1,"passed":1},"recent_checks":[{"card_url":"https://api.odilelabs.com/a2a/v1","checked_at":"2026-10-31T21:28:42.253846+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-10-31T21:28:42.253846+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-31T21:28:42.253846+00:00","endpoint":"https://api.odilelabs.com/a2a/v1","protocol_binding":"JSONRPC","protocol_version":"1.0","state":"a2a_response","http_status":404,"detail":"A2A task-not-found response to a read-only task lookup","request_diagnostics":{"requests":[{"path":"/a2a/v1","allow":[],"method":"POST","status":404,"version_header":"1.0","protocol_method":"GetTask","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://api.odilelabs.com/a2a/v1","selected_connection_interface":{"url":"https://api.odilelabs.com/a2a/v1","protocolBinding":"JSONRPC","protocolVersion":"1.0"},"protocol_interface_checks":[{"endpoint":"https://api.odilelabs.com/a2a/v1","protocol_binding":"JSONRPC","protocol_version":"1.0","selected":true,"state":"a2a_response","checked_at":"2026-10-31T21:28:42.253846+00:00","http_status":404,"detail":"A2A task-not-found response to a read-only task lookup","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://api.odilelabs.com/a2a/v1","last_successful_card_check":"2026-10-31T21:28:42.253846+00:00","latest_card_check":{"checked_at":"2026-10-31T21:28:42.253846+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-31T21:28:42.253846+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-31T21:28:42.253846+00:00","endpoint_tls_reachable":true,"protocol_check_state":"a2a_response","protocol_checked_at":"2026-10-31T21:28:42.253846+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":519888,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/519888/repair","publisher_report_url":"https://localmark.ai/publishers/odilelabs.com/repair","diagnostics_json_url":"https://localmark.ai/publishers/odilelabs.com/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/odilelabs.com/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}