{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_yh7h3ah5f6m3","handle":"codaphone","url":"https://wellknown.network/agents/codaphone","links":{"self":"https://wellknown.network/agents/codaphone/record.json","html":"https://wellknown.network/agents/codaphone","markdown":"https://wellknown.network/agents/codaphone/record.md","api":"https://wellknown.network/api/v1/agents/codaphone","status":"https://wellknown.network/api/v1/agents/codaphone/status","claim":"https://wellknown.network/agents/codaphone/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/codaphone/claim.json","badge":"https://wellknown.network/agents/codaphone/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/codaphone/history","tools":"https://wellknown.network/api/v1/agents/codaphone/tools"},"ard":{"identifier":"urn:air:mcp.codaphone.app:server:codaphone","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"CodaPhone","summary":"Business texting for AI agents: send texts, read threads, manage contacts and run campaigns.","description":"Business texting for AI agents: send texts, read threads, manage contacts and run campaigns.","publisher":{"name":"app.codaphone","url":null},"homepage":"https://codaphone.app/developers/mcp","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.codaphone.app","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-02T21:40:56.784495Z","publishedAt":"2026-10-02T21:40:56.784495Z","registryName":"app.codaphone/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.marketing","name":"Marketing","confidence":0.938,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.933,"provenance":"derived"}],"categories":["communication","content"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-10T17:29:17.254Z","lastProbedAt":"2026-10-10T17:29:17.254Z","statusComputedAt":"2026-10-10T17:30:44.953Z","reliability30d":{"probes":29,"successRate":1,"p50Ms":19,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":29,"ok":29,"authBoundaryOk":0,"serviceOk":29,"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-10T17:29:17.254Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:25:39.223Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":20,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T05:28:57.267Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":9,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T23:29:26.975Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T16:33:26.815Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":23,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T10:22:47.495Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":67,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T03:24:08.153Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T21:22:32.130Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":11,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T14:22:46.117Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:26:26.322Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"toolCount":14,"toolsHash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","serverName":"CodaPhone","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_account","description":"Get the current CodaPhone account: its name and mode (live/test), the active number (if any), the current plan and its monthly/daily send caps, usage so far, an"},{"name":"search_numbers","description":"Search available phone numbers to provision. Optionally filter by country, number kind (local or tollfree), and a 3-digit area code. Returns candidate numbers w"},{"name":"provision_number","description":"Provision (set up) a phone number for the account from a candidate returned by search_numbers. Provide the exact msisdn in +1XXXXXXXXXX form and the number kind"},{"name":"send_message","description":"Send an SMS from the account's number. Provide the message 'body', and either 'to' (a recipient phone number, with optional 'name' to save the contact) or an ex"},{"name":"get_message_status","description":"Get one message by id, including its delivery status, direction, body, segment count, and timestamp. Requires the 'read' scope."},{"name":"list_threads","description":"List the account's conversation threads (the inbox), most recent first, with unread counts and last-message previews. Supports limit/offset pagination. Requires"},{"name":"get_thread","description":"Get one conversation thread by id together with its messages. Requires the 'read' scope."},{"name":"mark_thread_read","description":"Mark a conversation thread as read (clears its unread count) and return the account's new total inbox unread count. Requires the 'read' scope."},{"name":"list_contacts","description":"List the account's contacts with opt-in status and timezone. Optionally filter by a search term or a list id, choose a sort, and paginate with limit/offset. Req"},{"name":"add_contacts","description":"Add a contact to the account. Provide the phone number (msisdn) and optionally a name, a list_id to file it under, and an opt_in_source note. Adds one contact p"},{"name":"list_campaigns","description":"List the account's bulk-messaging campaigns with their status and progress counts, plus the remaining automation credit balance. Requires the 'read' scope."},{"name":"get_campaign","description":"Get one campaign by id, including its base message, audience, schedule, pacing, and send/failed/skipped counts. Requires the 'read' scope."},{"name":"create_campaign","description":"Create a new bulk-messaging campaign with a name and an optional base message. After creating, use run_campaign to generate variations, set the audience, schedu"},{"name":"run_campaign","description":"Advance a campaign through its lifecycle. Provide the campaign_id and an action:\n  - generate: create message variations (optional base_message, count)\n  - vari"}],"package":null,"toolSurface":{"id":"ts_56jmedgcn6pz","endpointId":"ep_mqc6tb9q82s5","hash":"68ea6b113427ad07969bcaf0b07f35a8eb9a6c39c0661bf6f94e139dedf623f6","toolCount":14,"serverName":"CodaPhone","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-03T05:26:19.562Z","lastSeenAt":"2026-10-10T17:29:17.263Z","observations":29,"toolNames":["get_account","search_numbers","provision_number","send_message","get_message_status","list_threads","get_thread","mark_thread_read","list_contacts","add_contacts","list_campaigns","get_campaign","create_campaign","run_campaign"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_mqc6tb9q82s5","url":"https://mcp.codaphone.app","type":"mcp_streamable_http","factsCheckedAt":"2026-10-05T03:25:07.662Z","auth":{"observedAt":"2026-10-05T03:25:07.670Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-05T03:25:07.737Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"codaphone.app","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-05T19:41:13.000Z","validTo":"2026-12-04T20:41:10.000Z","daysToExpiry":54,"sanCount":3,"fingerprint256":"78:7F:3C:2E:3C:77:04:1A:DF:08:69:7A:86:6E:81:75:31:5E:BA:F3:07:AB:7C:BB:B7:95:4A:03:8B:0C:07:03"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.codaphone/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/app.codaphone%2Fmcp","firstSeenAt":"2026-10-03T05:22:05.803Z","fetchedAt":"2026-10-09T00:19:27.117Z","normalizedAt":"2026-10-09T00:19:27.117Z"}]},"firstSeenAt":"2026-10-03T05:22:05.803Z","updatedAt":"2026-10-10T17:31:43.195Z"}