{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_v6kfvj6wbb4n","handle":"odile-labs","url":"https://wellknown.network/agents/odile-labs","links":{"self":"https://wellknown.network/agents/odile-labs/record.json","html":"https://wellknown.network/agents/odile-labs","markdown":"https://wellknown.network/agents/odile-labs/record.md","api":"https://wellknown.network/api/v1/agents/odile-labs","status":"https://wellknown.network/api/v1/agents/odile-labs/status","claim":"https://wellknown.network/agents/odile-labs/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/odile-labs/claim.json","badge":"https://wellknown.network/agents/odile-labs/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/odile-labs/history","tools":"https://wellknown.network/api/v1/agents/odile-labs/tools"},"ard":{"identifier":"urn:air:odilelabs.com:server:odile-labs","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Odile Labs","summary":"An AI answering line for US businesses, paid per answered call; Odile Formats for video and photos.","description":"An AI answering line for US businesses, paid per answered call; Odile Formats for video and photos.","publisher":{"name":"com.odilelabs","url":null},"homepage":"https://odilelabs.com/developers","repository":"https://github.com/tolga-boop/odile-mcp","version":"1.2.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://odilelabs.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-27T13:26:20.084934Z","publishedAt":"2026-09-27T13:26:20.084934Z","registryName":"com.odilelabs/odile"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.54,"provenance":"derived"},{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":0.54,"provenance":"derived"},{"slug":"media.video-editing","name":"Video Editing","confidence":0.525,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["ai","automation","commerce","media"],"language":"en"},"observed":{"status":"unavailable","statusReason":"5 consecutive checks failed; last success 8d ago.","lastOkAt":"2026-10-01T22:22:34.467Z","lastProbedAt":"2026-10-09T11:27:59.613Z","statusComputedAt":"2026-10-09T11:28:42.840Z","reliability30d":{"probes":39,"successRate":0.8718,"p50Ms":225,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":39,"ok":34,"authBoundaryOk":2,"serviceOk":32,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T11:27:59.613Z","kind":"http_head","ok":false,"httpStatus":null,"latencyMs":null,"error":"disallowed by robots.txt","detail":null},{"at":"2026-10-05T19:24:26.175Z","kind":"http_head","ok":false,"httpStatus":null,"latencyMs":null,"error":"disallowed by robots.txt","detail":null},{"at":"2026-10-03T16:36:06.558Z","kind":"http_head","ok":false,"httpStatus":null,"latencyMs":null,"error":"disallowed by robots.txt","detail":null},{"at":"2026-10-02T17:25:10.136Z","kind":"http_head","ok":false,"httpStatus":null,"latencyMs":null,"error":"disallowed by robots.txt","detail":null},{"at":"2026-10-02T05:26:39.075Z","kind":"http_head","ok":false,"httpStatus":null,"latencyMs":null,"error":"disallowed by robots.txt","detail":null},{"at":"2026-10-01T22:22:34.467Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":209,"error":null,"detail":{"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"toolCount":13,"toolsHash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","serverName":"odile","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-01T15:29:44.477Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":253,"error":null,"detail":{"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"toolCount":13,"toolsHash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","serverName":"odile","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-01T09:24:53.689Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":77,"error":null,"detail":{"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"toolCount":13,"toolsHash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","serverName":"odile","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-01T02:26:22.359Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":196,"error":null,"detail":{"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"toolCount":13,"toolsHash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","serverName":"odile","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-09-30T19:26:15.430Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":537,"error":null,"detail":{"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"toolCount":13,"toolsHash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","serverName":"odile","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_answering_line_offer","description":"The offer for an After Hours AI phone receptionist on the owner's own business line, prepaid and billed per ANSWERED call: calls10: 10 calls for $15; calls50: 5"},{"name":"set_up_answering_line","description":"Starts an After Hours AI receptionist for the signed-in owner's business, prepaid and billed per answered call (calls10: 10 calls for $15; calls50: 50 calls for"},{"name":"get_answering_line","description":"The signed-in owner's own After Hours lines billed per answered call, and any set-up still awaiting payment. Use it after set_up_answering_line to see when the "},{"name":"get_receptionist_benchmark","description":"Odile Labs' published benchmark of AI phone receptionists: real test calls placed to public lines, scored against stated measures. Use it when someone asks how "},{"name":"get_catalog","description":"The live price list and limits for Odile Formats, which reformats an existing video or photos for social platforms (it does not pick clips, write captions or ed"},{"name":"estimate_media_job","description":"Price an Odile Formats job in credits before anything is uploaded or charged; use it to tell the customer the cost and get their approval before unlock_job. Nee"},{"name":"get_balance","description":"The signed-in customer's Odile Formats credit balance. Use it before unlock_job to check the job is affordable, or when the customer asks what they have left. N"},{"name":"get_job","description":"One Odile Formats job by id, or the ten most recent when no id is given. Use it to poll a job after create_media_job (every 10-20 seconds, up to 10 minutes) unt"},{"name":"get_downloads","description":"Signed download links for every finished file of a job, once unlock_job has succeeded for it. Use it as the last step of the flow, and again whenever links have"},{"name":"prepare_upload","description":"Step one of an Odile Formats job: returns a 30-minute upload token and the helper command. Run the helper in a shell on the customer's machine: file bytes go st"},{"name":"create_media_job","description":"Queue an Odile Formats job from sources uploaded with prepare_upload's helper. Costs nothing: credits are only spent by unlock_job, after the customer approves."},{"name":"unlock_job","description":"Spends the customer's credits to unlock a finished job's files. Only call once get_job says the job is ready and the customer has approved a maximum spend. Refu"},{"name":"buy_pack","description":"Returns a one-time Stripe checkout link for a prepaid pack; the customer opens it and pays on Stripe's own page, and this connection never sees the card. Only c"}],"package":null,"toolSurface":{"id":"ts_bxmvfdcf3sj3","endpointId":"ep_u9d4vv6zqk5v","hash":"19906e0e88ab59c045a7e8496b7713daca22905d64fab0ce9ecbf6f66ada391c","toolCount":13,"serverName":"odile","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-27T21:28:04.585Z","lastSeenAt":"2026-10-01T22:22:34.476Z","observations":16,"toolNames":["get_receptionist_benchmark","get_catalog","estimate_media_job","get_balance","get_job","get_downloads","prepare_upload","create_media_job","unlock_job","get_answering_line_offer","set_up_answering_line","get_answering_line","buy_pack"],"distinctSurfaces":6},"endpointFacts":[{"id":"ep_u9d4vv6zqk5v","url":"https://odilelabs.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-01T02:26:22.356Z","auth":{"observedAt":"2026-10-01T02:26:22.374Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://odilelabs.com/.well-known/oauth-protected-resource/mcp","resource":"https://odilelabs.com/mcp","authorizationServers":["https://odilelabs.com"],"scopesSupported":[]},"authorizationServer":{"url":"https://odilelabs.com/.well-known/oauth-authorization-server","issuer":"https://odilelabs.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_basic","client_secret_post","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":false},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-01T02:26:22.391Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"odilelabs.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-05T18:40:10.000Z","validTo":"2026-12-04T19:40:06.000Z","daysToExpiry":55,"sanCount":3,"fingerprint256":"89:21:05:AF:54:E7:17:CA:FD:EC:70:33:0E:1D:B1:34:5D:F6:D3:09:D5:01:CB:DB:25:57:BC:9A:19:EF:69:2D"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.odilelabs/odile","url":"https://registry.modelcontextprotocol.io/v0/servers/com.odilelabs%2Fodile","firstSeenAt":"2026-09-23T02:22:47.916Z","fetchedAt":"2026-10-09T09:23:02.734Z","normalizedAt":"2026-10-09T09:23:02.734Z"}]},"firstSeenAt":"2026-09-23T02:22:47.916Z","updatedAt":"2026-10-01T22:24:32.057Z"}