Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
65
A2A live JSON-RPC A2A 1.0 v1.1.0 x402 micropay

OdileM2M

odilelabs.com · Odile Labs

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain odilelabs.com via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
65/100
grade C · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~809 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
1 snapshot tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

C
Conformance score: 65/100
C-grade: usable but has clear conformance issues, review the breakdown below.
click to expand breakdown click to collapse breakdown
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~809 ms).
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 7 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Odile Labs (https://odilelabs.com). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 5/5
declares 1 modern capability flag(s) (x402); seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-31 19:04:07 current 234e75b7714a… view →
Uptime
accumulating
1 direct probes · 30d
Response
791ms
last direct probe
Skills
7
declared
Streaming
—
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent… ⌘/Ctrl + Enter

Skills · 7 declared by this agent

These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.

Find a business agent

Send skill find_business_agent and an E.164 number to resolve a participating business to its public agent card URL.

No taxonomy category yet
directoryphone
Take a message

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…

No taxonomy category yet
message
Check availability

First resolve a business; send this skill to the endpoint in its returned card. Return the open slots offered by the business booking page.

No taxonomy category yet
calendar
Book an appointment

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…

No taxonomy category yet
booking
Book the first open time

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, servi…

No taxonomy category yet
booking
Cancel a booking

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. Fre…

No taxonomy category yet
booking
Call a business (opt-in metered voice pilot)

Separately enabled signed-in developer accounts only: informational voice, 2.5 credits per answered minute billed by the second with a 20-second minimum; maximu…

No taxonomy category yet
phone

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-10-31 19:04:07 200 ✓ 791ms

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/odilelabs.com.svg)](https://agenstry.com/agents/odilelabs.com)
[![Verified Business](https://agenstry.com/badge/odilelabs.com/identity.svg)](https://agenstry.com/agents/odilelabs.com)
[![Uptime](https://agenstry.com/badge/odilelabs.com/uptime.svg)](https://agenstry.com/agents/odilelabs.com)
[![A2A version](https://agenstry.com/badge/odilelabs.com/protocol.svg)](https://agenstry.com/agents/odilelabs.com)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "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\u2013600-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\u2019s 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\u2019s 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\u2019s 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"
    ]
  }
}