diff --git a/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-amd64.tar.gz b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-amd64.tar.gz new file mode 100644 index 0000000..e905fa3 Binary files /dev/null and b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-amd64.tar.gz differ diff --git a/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-arm64.tar.gz b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-arm64.tar.gz new file mode 100644 index 0000000..849eb9c Binary files /dev/null and b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-darwin-arm64.tar.gz differ diff --git a/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-amd64.tar.gz b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-amd64.tar.gz new file mode 100644 index 0000000..0654135 Binary files /dev/null and b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-amd64.tar.gz differ diff --git a/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-arm64.tar.gz b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-arm64.tar.gz new file mode 100644 index 0000000..4ce756d Binary files /dev/null and b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-linux-arm64.tar.gz differ diff --git a/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-windows-amd64.tar.gz b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-windows-amd64.tar.gz new file mode 100644 index 0000000..82c6b80 Binary files /dev/null and b/submissions/io.pilot.agentphone/io.pilot.agentphone-0.1.0-windows-amd64.tar.gz differ diff --git a/submissions/io.pilot.agentphone/metadata.json b/submissions/io.pilot.agentphone/metadata.json new file mode 100644 index 0000000..287d4e0 --- /dev/null +++ b/submissions/io.pilot.agentphone/metadata.json @@ -0,0 +1,175 @@ +{ + "schema_version": 1, + "id": "io.pilot.agentphone", + "display_name": "AgentPhone", + "tagline": "A real phone number for your agent — calls, SMS, and conversations over REST", + "description_md": "Give your agent a real phone number: place and receive voice calls, send and receive SMS/iMessage, and hold threaded conversations — all over REST. Provision a number, create a calling agent, place a call and poll its transcript, send a text and poll for replies.", + "vendor": { + "name": "AgentPhone", + "url": "https://agentphone.ai", + "contact": "founders@agentphone.to", + "publisher_pubkey": "ed25519:mvVzYABubZwOTzWWQA/TDbRLYkKzmD/x6k/w0nz+zHc=" + }, + "homepage": "https://agentphone.ai", + "source_url": "https://github.com/AgentPhone-AI/skills", + "license": "Apache-2.0", + "categories": [ + "communication", + "phone", + "voice", + "messaging" + ], + "keywords": [ + "phone", + "sms", + "imessage", + "voice", + "calls", + "telephony", + "conversations" + ], + "size": { + "bundle_bytes": 2643572, + "installed_bytes": 6346620 + }, + "compat": { + "min_pilot_version": "1.10.0", + "runtimes": [ + "go" + ] + }, + "methods": [ + { + "name": "agentphone.usage", + "summary": "Account status: plan, number hold limit, and message/call stats. Call this first to orient." + }, + { + "name": "agentphone.list_voices", + "summary": "List available text-to-speech voices (voice_id, name, provider, gender, accent) for use when creating an agent." + }, + { + "name": "agentphone.list_agents", + "summary": "List your calling/texting agents. You get one starter agent on account setup — list before creating more." + }, + { + "name": "agentphone.get_agent", + "summary": "Get one agent's config and its attached numbers." + }, + { + "name": "agentphone.create_agent", + "summary": "Create an agent (phone persona): name, voiceMode (pass \"hosted\"), systemPrompt, voice, modelTier." + }, + { + "name": "agentphone.update_agent", + "summary": "Update an agent's config (only the fields you send change)." + }, + { + "name": "agentphone.delete_agent", + "summary": "Delete an agent. Irreversible — confirm with your human first." + }, + { + "name": "agentphone.attach_number", + "summary": "Attach an existing number to an agent." + }, + { + "name": "agentphone.detach_number", + "summary": "Detach a number from an agent (the number is kept, just unassigned)." + }, + { + "name": "agentphone.list_numbers", + "summary": "List your active phone numbers." + }, + { + "name": "agentphone.buy_number", + "summary": "Provision a new US/CA number (pay-as-you-go $3/mo). Optionally attach to an agent and pick an area code." + }, + { + "name": "agentphone.get_number", + "summary": "Get one phone number (any status, including released)." + }, + { + "name": "agentphone.release_number", + "summary": "Release a number. Irreversible, no refund for the unused period — confirm with your human first." + }, + { + "name": "agentphone.list_messages", + "summary": "List messages on a number (inbound + outbound), newest first. Poll with the after cursor to detect SMS replies." + }, + { + "name": "agentphone.send_message", + "summary": "Send an SMS/iMessage. Auto-delivers over iMessage when both sides support it, else SMS/MMS." + }, + { + "name": "agentphone.react", + "summary": "Send a tapback reaction to a message (iMessage only). reaction: love|like|dislike|laugh|emphasize|question." + }, + { + "name": "agentphone.list_conversations", + "summary": "List conversation threads (one per external contact or iMessage group), newest activity first." + }, + { + "name": "agentphone.get_conversation", + "summary": "Get one conversation with its recent messages." + }, + { + "name": "agentphone.place_call", + "summary": "Place an outbound call. With systemPrompt the AI runs the call autonomously. Returns a call id immediately — poll agentphone.get_call for status + transcript." + }, + { + "name": "agentphone.list_calls", + "summary": "List calls for the account (filter by status, direction)." + }, + { + "name": "agentphone.get_call", + "summary": "Get a call with its embedded transcript. Poll every few seconds until status is completed or failed (the non-websocket way to learn a call outcome)." + }, + { + "name": "agentphone.get_transcript", + "summary": "Get the full ordered transcript of a call (plain JSON, not a stream)." + }, + { + "name": "agentphone.end_call", + "summary": "Terminate an in-progress call. Status/endedAt settle shortly after — keep polling agentphone.get_call." + }, + { + "name": "agentphone.list_contacts", + "summary": "List saved contacts; search filters by name/phone." + }, + { + "name": "agentphone.create_contact", + "summary": "Save a contact (phone is normalized to E.164; 409 if it already exists)." + }, + { + "name": "agentphone.update_contact", + "summary": "Update a contact (only the fields you send change)." + }, + { + "name": "agentphone.delete_contact", + "summary": "Delete a contact. Confirm with your human first." + }, + { + "name": "agentphone.help", + "summary": "Discovery: every method with params, kind, and latency class." + } + ], + "changelog": [ + { + "version": "0.1.0", + "date": "2026-06-24", + "notes": [ + "Initial release — managed-key REST adapter over the AgentPhone API", + "Voice calls (place + poll transcript), SMS/iMessage send + poll, agents, numbers, conversations, contacts" + ] + } + ], + "links": [ + { + "label": "Source", + "url": "https://github.com/AgentPhone-AI/skills" + }, + { + "label": "Website", + "url": "https://agentphone.ai" + } + ] +} diff --git a/submissions/io.pilot.agentphone/submission.json b/submissions/io.pilot.agentphone/submission.json new file mode 100644 index 0000000..47eebb3 --- /dev/null +++ b/submissions/io.pilot.agentphone/submission.json @@ -0,0 +1,233 @@ +{ + "id": "io.pilot.agentphone", + "version": "0.1.0", + "namespace": "agentphone", + "description": "Give your agent a real phone number: place and receive voice calls, send and receive SMS/iMessage, and hold threaded conversations — all over REST. Provision a number, create a calling agent, place a call and poll its transcript, send a text and poll for replies.", + "email": "alex@vulturelabs.io", + "bundle": "io.pilot.agentphone-0.1.0-linux-amd64.tar.gz", + "bundle_sha256": "5d1e6dbc301d42a45e4a84fda2a9a75290ac2f6d4368ba97f58f6cb7f979892a", + "bundles": { + "linux/amd64": { + "file": "io.pilot.agentphone-0.1.0-linux-amd64.tar.gz", + "sha256": "5d1e6dbc301d42a45e4a84fda2a9a75290ac2f6d4368ba97f58f6cb7f979892a" + }, + "linux/arm64": { + "file": "io.pilot.agentphone-0.1.0-linux-arm64.tar.gz", + "sha256": "bbfff26f7ffef897773f4947e9539ff3da188cad4ec69aff29e0ed6f93596890" + }, + "darwin/amd64": { + "file": "io.pilot.agentphone-0.1.0-darwin-amd64.tar.gz", + "sha256": "b5bf81ee5ff440bae870c2c6a8723473475eaa20b9b8db1bc500eaf929d5496b" + }, + "darwin/arm64": { + "file": "io.pilot.agentphone-0.1.0-darwin-arm64.tar.gz", + "sha256": "412b44726220e7c52af5bd19955bdb6190f353c40f2a76ad0289aadf50ab428a" + }, + "windows/amd64": { + "file": "io.pilot.agentphone-0.1.0-windows-amd64.tar.gz", + "sha256": "66806810c5ebbe7eeea056d24b249f1440fb6021d7cf968ff43cc74defdfc884" + } + }, + "backend": { + "base_url": "https://api.agentphone.ai", + "auth": "managed", + "quota": 0, + "headers": [ + { + "name": "Authorization", + "value": "Bearer managed" + } + ] + }, + "methods": [ + { + "name": "agentphone.usage", + "http": { + "verb": "GET", + "path": "/v1/usage" + } + }, + { + "name": "agentphone.list_voices", + "http": { + "verb": "GET", + "path": "/v1/agents/voices" + } + }, + { + "name": "agentphone.list_agents", + "http": { + "verb": "GET", + "path": "/v1/agents" + } + }, + { + "name": "agentphone.get_agent", + "http": { + "verb": "GET", + "path": "/v1/agents/{agent_id" + } + }, + { + "name": "agentphone.create_agent", + "http": { + "verb": "POST", + "path": "/v1/agents" + } + }, + { + "name": "agentphone.update_agent", + "http": { + "verb": "PATCH", + "path": "/v1/agents/{agent_id" + } + }, + { + "name": "agentphone.delete_agent", + "http": { + "verb": "DELETE", + "path": "/v1/agents/{agent_id" + } + }, + { + "name": "agentphone.attach_number", + "http": { + "verb": "POST", + "path": "/v1/agents/{agent_id" + } + }, + { + "name": "agentphone.detach_number", + "http": { + "verb": "DELETE", + "path": "/v1/agents/{agent_id" + } + }, + { + "name": "agentphone.list_numbers", + "http": { + "verb": "GET", + "path": "/v1/numbers" + } + }, + { + "name": "agentphone.buy_number", + "http": { + "verb": "POST", + "path": "/v1/numbers" + } + }, + { + "name": "agentphone.get_number", + "http": { + "verb": "GET", + "path": "/v1/numbers/{number_id" + } + }, + { + "name": "agentphone.release_number", + "http": { + "verb": "DELETE", + "path": "/v1/numbers/{number_id" + } + }, + { + "name": "agentphone.list_messages", + "http": { + "verb": "GET", + "path": "/v1/numbers/{number_id" + } + }, + { + "name": "agentphone.send_message", + "http": { + "verb": "POST", + "path": "/v1/messages" + } + }, + { + "name": "agentphone.react", + "http": { + "verb": "POST", + "path": "/v1/messages/{message_id" + } + }, + { + "name": "agentphone.list_conversations", + "http": { + "verb": "GET", + "path": "/v1/conversations" + } + }, + { + "name": "agentphone.get_conversation", + "http": { + "verb": "GET", + "path": "/v1/conversations/{conversation_id" + } + }, + { + "name": "agentphone.place_call", + "http": { + "verb": "POST", + "path": "/v1/calls" + } + }, + { + "name": "agentphone.list_calls", + "http": { + "verb": "GET", + "path": "/v1/calls" + } + }, + { + "name": "agentphone.get_call", + "http": { + "verb": "GET", + "path": "/v1/calls/{call_id" + } + }, + { + "name": "agentphone.get_transcript", + "http": { + "verb": "GET", + "path": "/v1/calls/{call_id" + } + }, + { + "name": "agentphone.end_call", + "http": { + "verb": "POST", + "path": "/v1/calls/{call_id" + } + }, + { + "name": "agentphone.list_contacts", + "http": { + "verb": "GET", + "path": "/v1/contacts" + } + }, + { + "name": "agentphone.create_contact", + "http": { + "verb": "POST", + "path": "/v1/contacts" + } + }, + { + "name": "agentphone.update_contact", + "http": { + "verb": "PATCH", + "path": "/v1/contacts/{contact_id" + } + }, + { + "name": "agentphone.delete_contact", + "http": { + "verb": "DELETE", + "path": "/v1/contacts/{contact_id" + } + } + ] +}