{
  "schemaVersion": "1.0",
  "item": {
    "slug": "supercall",
    "name": "Supercall",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/xonder/supercall",
    "canonicalUrl": "https://clawhub.ai/xonder/supercall",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/supercall",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=supercall",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "openclaw.plugin.json",
      "README.md",
      "package.json",
      "SKILL.md",
      "index.ts"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/supercall"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/supercall",
    "agentPageUrl": "https://openagent3.xyz/skills/supercall/agent",
    "manifestUrl": "https://openagent3.xyz/skills/supercall/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/supercall/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SuperCall",
        "body": "Make AI-powered phone calls with custom personas and goals using OpenAI Realtime API + Twilio."
      },
      {
        "title": "Features",
        "body": "Persona Calls: Define a persona, goal, and opening line for autonomous calls\nFull Realtime Mode: GPT-4o powered voice conversations with <~1s latency\nDTMF / IVR Navigation: AI automatically navigates automated phone menus (press 1 for X, enter your account number, etc.) by generating and injecting touch-tone digits into the audio stream\nProvider: Supports Twilio (full realtime) and mock provider for testing\nStreaming Audio: Bidirectional audio via WebSocket for real-time conversations\nLimited Access: Unlike the standard voice_call plugin, the person on the call doesn't have access to gateway agent, reducing attack surfaces."
      },
      {
        "title": "Required",
        "body": "CredentialSourcePurposeOPENAI_API_KEYOpenAIPowers the realtime voice AI (GPT-4o)TWILIO_ACCOUNT_SIDTwilio ConsoleTwilio account identifierTWILIO_AUTH_TOKENTwilio ConsoleTwilio API authentication"
      },
      {
        "title": "Optional",
        "body": "CredentialSourcePurposeNGROK_AUTHTOKENngrokngrok tunnel auth (only needed if using ngrok as tunnel provider)\n\nCredentials can be set via environment variables or in the plugin config (config takes precedence)."
      },
      {
        "title": "Installation",
        "body": "Install the plugin via npm or copy to your OpenClaw extensions directory\n\n\nEnable hooks for call completion callbacks (required):\n\n{\n  \"hooks\": {\n    \"enabled\": true,\n    \"token\": \"your-secret-token\"\n  }\n}\n\nGenerate a secure token with: openssl rand -hex 24\n\n⚠️ Security: The hooks.token is sensitive — it authenticates internal callbacks. Keep it secret and rotate if compromised.\n\nConfigure the plugin in your openclaw config:\n\n{\n  \"plugins\": {\n    \"entries\": {\n      \"supercall\": {\n        \"enabled\": true,\n        \"config\": {\n          \"provider\": \"twilio\",\n          \"fromNumber\": \"+15551234567\",\n          \"twilio\": {\n            \"accountSid\": \"your-account-sid\",\n            \"authToken\": \"your-auth-token\"\n          },\n          \"streaming\": {\n            \"openaiApiKey\": \"your-openai-key\"\n          },\n          \"tunnel\": {\n            \"provider\": \"ngrok\",\n            \"ngrokDomain\": \"your-domain.ngrok.app\"\n          }\n        }\n      }\n    }\n  }\n}\n\nImportant: The hooks.token is required for call completion callbacks. Without it, the agent won't be notified when calls finish."
      },
      {
        "title": "Tool: supercall",
        "body": "Make phone calls with custom personas:\n\nsupercall(\n  action: \"persona_call\",\n  to: \"+1234567890\",\n  persona: \"Personal assistant to the king\",\n  goal: \"Confirm the callee's availabilities for dinner next week\",\n  openingLine: \"Hey, this is Michael, Alex's Assistant...\"\n)"
      },
      {
        "title": "Actions",
        "body": "persona_call - Start a new call with a persona\nget_status - Check call status and transcript\nend_call - End an active call\nlist_calls - List active persona calls"
      },
      {
        "title": "DTMF / IVR Navigation",
        "body": "The AI automatically handles automated phone menus (IVR systems) during calls. When it hears prompts like \"press 1 for sales\", it uses an internal send_dtmf tool to send touch-tone digits through the audio stream. This is fully automatic — no extra configuration or agent intervention is needed.\n\nSupported characters: 0-9, *, #, A-D, w (500ms pause)\nExample sequences: 1 (press 1), 1234567890# (enter account number + pound), 1w123# (press 1, wait, then enter 123#)\nHow it works: DTMF tones are generated as ITU-standard dual-frequency pairs, encoded to µ-law (8kHz mono), and injected directly into the Twilio media stream. No external dependencies.\n\nThis means persona calls can navigate phone trees end-to-end — e.g., \"call the pharmacy, navigate through their menu, and check on my prescription status.\""
      },
      {
        "title": "Configuration Options",
        "body": "OptionDescriptionDefaultproviderVoice provider (twilio/mock)RequiredfromNumberCaller ID (E.164 format)Required for real providerstoNumberDefault recipient number-twilio.accountSidTwilio Account SIDTWILIO_ACCOUNT_SID envtwilio.authTokenTwilio Auth TokenTWILIO_AUTH_TOKEN envstreaming.openaiApiKeyOpenAI API key for realtimeOPENAI_API_KEY envstreaming.silenceDurationMsVAD silence duration in ms800streaming.vadThresholdVAD threshold 0-1 (higher = less sensitive)0.5streaming.streamPathWebSocket path for media stream/voice/streamtunnel.providerTunnel for webhooks (ngrok/tailscale-serve/tailscale-funnel)nonetunnel.ngrokDomainFixed ngrok domain (recommended for production)-tunnel.ngrokAuthTokenngrok auth tokenNGROK_AUTHTOKEN envFull realtime requires an OpenAI API key."
      },
      {
        "title": "Requirements",
        "body": "Node.js 20+\nTwilio account for full realtime calls (media streams)\nngrok or Tailscale for webhook tunneling (production)\nOpenAI API key for real-time features"
      },
      {
        "title": "Architecture",
        "body": "This is a fully standalone skill - it does not depend on the built-in voice-call plugin. All voice calling logic is self-contained."
      },
      {
        "title": "Runtime Behavior and Security",
        "body": "This plugin is not instruction-only. It runs code, spawns processes, opens network listeners, and writes to disk. The following describes exactly what happens at runtime."
      },
      {
        "title": "Process spawning",
        "body": "When tunnel.provider is set to ngrok, the plugin spawns the ngrok CLI binary via child_process.spawn. When set to tailscale-serve or tailscale-funnel, it spawns the tailscale CLI instead. These processes run for the lifetime of the plugin and are terminated on shutdown. If tunnel.provider is none (or a publicUrl is provided directly), no external processes are spawned."
      },
      {
        "title": "Network activity",
        "body": "Local webhook server: The plugin opens an HTTP server (default 0.0.0.0:3335) to receive Twilio webhook callbacks and WebSocket media streams.\nStartup self-test: On startup, the plugin sends an HTTP POST to its own public webhook URL with an x-supercall-self-test header to verify connectivity. If publicUrl is misconfigured to point at an unintended endpoint, this self-test token could be sent there. Always verify your publicUrl or tunnel configuration before starting.\nOutbound API calls: The plugin makes outbound requests to the OpenAI Realtime API (WebSocket) and Twilio REST API during calls."
      },
      {
        "title": "Webhook verification",
        "body": "Twilio calls: Verified using Twilio's X-Twilio-Signature header (HMAC-SHA1).\nSelf-test requests: Authenticated using an internal token (x-supercall-self-test) generated at startup.\nngrok free-tier relaxation: On free-tier ngrok domains (.ngrok-free.app, .ngrok.io), URL reconstruction may vary due to ngrok's request rewriting; Twilio signature mismatches are logged but allowed through. Paid/custom ngrok domains (.ngrok.app) are verified strictly. This relaxation is limited to free-tier domains only and does not affect Tailscale or direct publicUrl configurations."
      },
      {
        "title": "Data at rest",
        "body": "Call transcripts are persisted to ~/clawd/supercall-logs. These logs may contain sensitive conversation content. Review and rotate logs periodically."
      },
      {
        "title": "Best practices",
        "body": "Protect your credentials — Twilio and OpenAI keys grant access to paid services\nVerify your public URL — ensure publicUrl or tunnel config points where you expect before starting\nRotate hooks.token periodically and if you suspect compromise\nReview call logs — transcripts stored on disk may contain sensitive content"
      }
    ],
    "body": "SuperCall\n\nMake AI-powered phone calls with custom personas and goals using OpenAI Realtime API + Twilio.\n\nFeatures\nPersona Calls: Define a persona, goal, and opening line for autonomous calls\nFull Realtime Mode: GPT-4o powered voice conversations with <~1s latency\nDTMF / IVR Navigation: AI automatically navigates automated phone menus (press 1 for X, enter your account number, etc.) by generating and injecting touch-tone digits into the audio stream\nProvider: Supports Twilio (full realtime) and mock provider for testing\nStreaming Audio: Bidirectional audio via WebSocket for real-time conversations\nLimited Access: Unlike the standard voice_call plugin, the person on the call doesn't have access to gateway agent, reducing attack surfaces.\nCredentials\nRequired\nCredential\tSource\tPurpose\nOPENAI_API_KEY\tOpenAI\tPowers the realtime voice AI (GPT-4o)\nTWILIO_ACCOUNT_SID\tTwilio Console\tTwilio account identifier\nTWILIO_AUTH_TOKEN\tTwilio Console\tTwilio API authentication\nOptional\nCredential\tSource\tPurpose\nNGROK_AUTHTOKEN\tngrok\tngrok tunnel auth (only needed if using ngrok as tunnel provider)\n\nCredentials can be set via environment variables or in the plugin config (config takes precedence).\n\nInstallation\n\nInstall the plugin via npm or copy to your OpenClaw extensions directory\n\nEnable hooks for call completion callbacks (required):\n\n{\n  \"hooks\": {\n    \"enabled\": true,\n    \"token\": \"your-secret-token\"\n  }\n}\n\n\nGenerate a secure token with: openssl rand -hex 24\n\n⚠️ Security: The hooks.token is sensitive — it authenticates internal callbacks. Keep it secret and rotate if compromised.\n\nConfigure the plugin in your openclaw config:\n{\n  \"plugins\": {\n    \"entries\": {\n      \"supercall\": {\n        \"enabled\": true,\n        \"config\": {\n          \"provider\": \"twilio\",\n          \"fromNumber\": \"+15551234567\",\n          \"twilio\": {\n            \"accountSid\": \"your-account-sid\",\n            \"authToken\": \"your-auth-token\"\n          },\n          \"streaming\": {\n            \"openaiApiKey\": \"your-openai-key\"\n          },\n          \"tunnel\": {\n            \"provider\": \"ngrok\",\n            \"ngrokDomain\": \"your-domain.ngrok.app\"\n          }\n        }\n      }\n    }\n  }\n}\n\n\nImportant: The hooks.token is required for call completion callbacks. Without it, the agent won't be notified when calls finish.\n\nTool: supercall\n\nMake phone calls with custom personas:\n\nsupercall(\n  action: \"persona_call\",\n  to: \"+1234567890\",\n  persona: \"Personal assistant to the king\",\n  goal: \"Confirm the callee's availabilities for dinner next week\",\n  openingLine: \"Hey, this is Michael, Alex's Assistant...\"\n)\n\nActions\npersona_call - Start a new call with a persona\nget_status - Check call status and transcript\nend_call - End an active call\nlist_calls - List active persona calls\nDTMF / IVR Navigation\n\nThe AI automatically handles automated phone menus (IVR systems) during calls. When it hears prompts like \"press 1 for sales\", it uses an internal send_dtmf tool to send touch-tone digits through the audio stream. This is fully automatic — no extra configuration or agent intervention is needed.\n\nSupported characters: 0-9, *, #, A-D, w (500ms pause)\nExample sequences: 1 (press 1), 1234567890# (enter account number + pound), 1w123# (press 1, wait, then enter 123#)\nHow it works: DTMF tones are generated as ITU-standard dual-frequency pairs, encoded to µ-law (8kHz mono), and injected directly into the Twilio media stream. No external dependencies.\n\nThis means persona calls can navigate phone trees end-to-end — e.g., \"call the pharmacy, navigate through their menu, and check on my prescription status.\"\n\nConfiguration Options\nOption\tDescription\tDefault\nprovider\tVoice provider (twilio/mock)\tRequired\nfromNumber\tCaller ID (E.164 format)\tRequired for real providers\ntoNumber\tDefault recipient number\t-\ntwilio.accountSid\tTwilio Account SID\tTWILIO_ACCOUNT_SID env\ntwilio.authToken\tTwilio Auth Token\tTWILIO_AUTH_TOKEN env\nstreaming.openaiApiKey\tOpenAI API key for realtime\tOPENAI_API_KEY env\nstreaming.silenceDurationMs\tVAD silence duration in ms\t800\nstreaming.vadThreshold\tVAD threshold 0-1 (higher = less sensitive)\t0.5\nstreaming.streamPath\tWebSocket path for media stream\t/voice/stream\ntunnel.provider\tTunnel for webhooks (ngrok/tailscale-serve/tailscale-funnel)\tnone\ntunnel.ngrokDomain\tFixed ngrok domain (recommended for production)\t-\ntunnel.ngrokAuthToken\tngrok auth token\tNGROK_AUTHTOKEN env\nFull realtime requires an OpenAI API key.\t\t\nRequirements\nNode.js 20+\nTwilio account for full realtime calls (media streams)\nngrok or Tailscale for webhook tunneling (production)\nOpenAI API key for real-time features\nArchitecture\n\nThis is a fully standalone skill - it does not depend on the built-in voice-call plugin. All voice calling logic is self-contained.\n\nRuntime Behavior and Security\n\nThis plugin is not instruction-only. It runs code, spawns processes, opens network listeners, and writes to disk. The following describes exactly what happens at runtime.\n\nProcess spawning\n\nWhen tunnel.provider is set to ngrok, the plugin spawns the ngrok CLI binary via child_process.spawn. When set to tailscale-serve or tailscale-funnel, it spawns the tailscale CLI instead. These processes run for the lifetime of the plugin and are terminated on shutdown. If tunnel.provider is none (or a publicUrl is provided directly), no external processes are spawned.\n\nNetwork activity\nLocal webhook server: The plugin opens an HTTP server (default 0.0.0.0:3335) to receive Twilio webhook callbacks and WebSocket media streams.\nStartup self-test: On startup, the plugin sends an HTTP POST to its own public webhook URL with an x-supercall-self-test header to verify connectivity. If publicUrl is misconfigured to point at an unintended endpoint, this self-test token could be sent there. Always verify your publicUrl or tunnel configuration before starting.\nOutbound API calls: The plugin makes outbound requests to the OpenAI Realtime API (WebSocket) and Twilio REST API during calls.\nWebhook verification\nTwilio calls: Verified using Twilio's X-Twilio-Signature header (HMAC-SHA1).\nSelf-test requests: Authenticated using an internal token (x-supercall-self-test) generated at startup.\nngrok free-tier relaxation: On free-tier ngrok domains (.ngrok-free.app, .ngrok.io), URL reconstruction may vary due to ngrok's request rewriting; Twilio signature mismatches are logged but allowed through. Paid/custom ngrok domains (.ngrok.app) are verified strictly. This relaxation is limited to free-tier domains only and does not affect Tailscale or direct publicUrl configurations.\nData at rest\n\nCall transcripts are persisted to ~/clawd/supercall-logs. These logs may contain sensitive conversation content. Review and rotate logs periodically.\n\nBest practices\nProtect your credentials — Twilio and OpenAI keys grant access to paid services\nVerify your public URL — ensure publicUrl or tunnel config points where you expect before starting\nRotate hooks.token periodically and if you suspect compromise\nReview call logs — transcripts stored on disk may contain sensitive content"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/xonder/supercall",
    "publisherUrl": "https://clawhub.ai/xonder/supercall",
    "owner": "xonder",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/supercall",
    "downloadUrl": "https://openagent3.xyz/downloads/supercall",
    "agentUrl": "https://openagent3.xyz/skills/supercall/agent",
    "manifestUrl": "https://openagent3.xyz/skills/supercall/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/supercall/agent.md"
  }
}