{
  "schemaVersion": "1.0",
  "item": {
    "slug": "phone-calling",
    "name": "phone calling",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/adisahani/phone-calling",
    "canonicalUrl": "https://clawhub.ai/adisahani/phone-calling",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/phone-calling",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=phone-calling",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "openapi.json",
      "ringez-api-spec.md",
      "ringez-implementation-guide.md",
      "ringez-quickstart-guide.md",
      "SKILL.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/phone-calling"
    },
    "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/phone-calling",
    "agentPageUrl": "https://openagent3.xyz/skills/phone-calling/agent",
    "manifestUrl": "https://openagent3.xyz/skills/phone-calling/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/phone-calling/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Ringez Phone Calling API",
        "body": "Make affordable international phone calls from anywhere. No hidden fees, no subscriptions — just pay for the minutes you use."
      },
      {
        "title": "What is Ringez?",
        "body": "Ringez is a simple, privacy-focused international calling service that lets you make phone calls to 200+ countries without complicated setups or expensive plans.\n\nPerfect for:\n\nCalling family abroad\nBusiness calls to international clients\nAI agents making reservations or appointments\nQuick calls without buying a calling plan"
      },
      {
        "title": "1. Create an Account",
        "body": "First, check if your email is already registered:\n\nPOST https://ringez-api.vercel.app/api/v1/auth/check-email\nContent-Type: application/json\n\n{\"email\": \"you@example.com\"}\n\nResponse:\n\nnew_user → Continue to OTP verification\nexisting_user → Login with password\n\nFor New Users: Verify with OTP\n\nStep 1: Request OTP\n\nPOST https://ringez-api.vercel.app/api/v1/auth/send-otp\nContent-Type: application/json\n\n{\"email\": \"you@example.com\"}\n\nStep 2: Verify OTP\n\nPOST https://ringez-api.vercel.app/api/v1/auth/verify-otp\nContent-Type: application/json\n\n{\n  \"email\": \"you@example.com\",\n  \"otp\": \"123456\"\n}\n\nResponse:\n\n{\n  \"session_id\": \"sess_abc123xyz\",\n  \"user\": {\n    \"email\": \"you@example.com\",\n    \"balance_minutes\": 5\n  }\n}\n\nSave the session_id — you will need it for all API calls.\n\nFor Existing Users: Login\n\nPOST https://ringez-api.vercel.app/api/v1/auth/login\nContent-Type: application/json\n\n{\n  \"email\": \"you@example.com\",\n  \"password\": \"your-password\"\n}"
      },
      {
        "title": "2. Check Your Balance",
        "body": "See how many minutes you have before making a call:\n\nGET https://ringez-api.vercel.app/api/v1/auth/me\nX-Session-ID: sess_abc123xyz\n\nResponse:\n\n{\n  \"balance_minutes\": 5,\n  \"balance_usd\": 0,\n  \"email\": \"you@example.com\"\n}"
      },
      {
        "title": "3. Make a Phone Call",
        "body": "Use the idempotency_key to prevent accidental duplicate calls:\n\nPOST https://ringez-api.vercel.app/api/v1/calls/initiate\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"to_number\": \"+919876543210\",\n  \"idempotency_key\": \"sess_abc123xyz_1700000000000_xyz789\"\n}\n\nResponse (Success):\n\n{\n  \"call_id\": \"call_xyz789\",\n  \"status\": \"initiated\",\n  \"mode\": \"bridge\",\n  \"to_number\": \"+919876543210\",\n  \"from_number\": \"+17623713590\",\n  \"twilio_call_sid\": \"CAxxxxx\"\n}\n\nResponse (Duplicate Call):\n\n{\n  \"alreadyInitiated\": true,\n  \"callSid\": \"CAxxxxx\"\n}"
      },
      {
        "title": "Call Modes Explained",
        "body": "Ringez supports two ways to make calls:"
      },
      {
        "title": "Bridge Mode (Default)",
        "body": "How it works: Calls your phone first, then connects you to the destination\nBest for: Personal calls where you want to talk\nYour phone: Will ring first"
      },
      {
        "title": "Direct Mode",
        "body": "How it works: Calls the destination directly\nBest for: AI agents, automated calls, or when you do not want your phone to ring\nYour phone: Does not ring\n\nForce Direct Mode:\n\nPOST /api/v1/calls/initiate\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"to_number\": \"+919876543210\",\n  \"mode\": \"direct\"\n}"
      },
      {
        "title": "Preventing Duplicate Calls",
        "body": "When making calls through an API, network delays or retries can accidentally create multiple calls. Use an idempotency key to prevent this."
      },
      {
        "title": "What is an Idempotency Key?",
        "body": "A unique identifier for each call attempt. If you use the same key within 5 minutes, the API returns the original call instead of creating a new one."
      },
      {
        "title": "How to Use It",
        "body": "Generate a unique key for each user action:\n\nconst idempotencyKey = `${sessionId}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n// Example: sess_abc123_1700000000000_xyz789abc"
      },
      {
        "title": "Important Notes",
        "body": "5-minute window: Same key within 5 minutes returns the existing call\nAfter 5 minutes: Same key creates a new call\nGenerate fresh keys: Create a new key for each button click, not for API retries\nResponse: If duplicate detected, you get {alreadyInitiated: true, callSid: \"...\"}"
      },
      {
        "title": "Pricing",
        "body": "Pay only for what you use. No monthly fees, no subscriptions."
      },
      {
        "title": "USD Plans",
        "body": "PlanPriceMinutesRate per MinuteStarter$530$0.17Popular$15120$0.13Best Value$30300$0.10"
      },
      {
        "title": "INR Plans",
        "body": "PlanPriceMinutesRate per MinuteStarter₹997₹14/minPopular₹19919₹10/minValue₹49960₹8/minPower₹999143₹7/min\n\nBilling: Rounded up to the nearest minute. A 2-minute 30-second call = 3 minutes charged."
      },
      {
        "title": "Check Call Status",
        "body": "See if your call is still ringing, connected, or completed:\n\nGET https://ringez-api.vercel.app/api/v1/calls/call_xyz789\nX-Session-ID: sess_abc123xyz\n\nResponse:\n\n{\n  \"call_id\": \"call_xyz789\",\n  \"status\": \"in-progress\",\n  \"duration\": 120,\n  \"estimated_cost\": {\n    \"minutes\": 2,\n    \"amount\": 0.25,\n    \"currency\": \"USD\"\n  }\n}"
      },
      {
        "title": "End a Call Early",
        "body": "Hang up a call before it finishes:\n\nDELETE https://ringez-api.vercel.app/api/v1/calls/call_xyz789\nX-Session-ID: sess_abc123xyz"
      },
      {
        "title": "Navigate Phone Menus (DTMF)",
        "body": "Press numbers during a call (useful for bank menus, customer support):\n\nPOST https://ringez-api.vercel.app/api/v1/calls/call_xyz789/actions\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"action\": \"dtmf\",\n  \"parameters\": {\n    \"digits\": \"1\"\n  }\n}\n\nCommon DTMF uses:\n\n{\"digits\": \"1\"} — Press 1 for English\n{\"digits\": \"1234\"} — Enter PIN\n{\"digits\": \"w\"} — Wait 0.5 seconds"
      },
      {
        "title": "Call History",
        "body": "See your past calls:\n\nGET https://ringez-api.vercel.app/api/v1/calls?limit=10&offset=0\nX-Session-ID: sess_abc123xyz\n\nResponse:\n\n{\n  \"calls\": [\n    {\n      \"call_id\": \"call_abc123\",\n      \"to_number\": \"+919876543210\",\n      \"status\": \"completed\",\n      \"duration\": 300,\n      \"cost\": 0.375,\n      \"started_at\": \"2026-02-09T10:00:00Z\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 25,\n    \"has_more\": true\n  }\n}"
      },
      {
        "title": "Personal Call to Family",
        "body": "User: Call my mom in India\nAI: I will help you call India. First, let me check your balance...\n      You have 15 minutes available.\n      Calling +91 98765 43210 now...\n      \nAI: Your phone is ringing. Pick up and I will connect you."
      },
      {
        "title": "AI Agent Making a Reservation",
        "body": "User: Book a table at Taj Restaurant for 7 PM\nAI: I will call Taj Restaurant for you.\n      \n      [AI uses direct mode — your phone does not ring]\n      \nAI: Calling +91 12345 67890...\n      \nAI: Hello, I would like to make a reservation for 2 people at 7 PM today.\n      \nAI: ✅ Reservation confirmed! Table for 2 at 7 PM under your name."
      },
      {
        "title": "Free Minutes",
        "body": "New accounts get 5 free minutes to test the service. These are for testing only — please add credits for regular use."
      },
      {
        "title": "Adding Credits",
        "body": "This skill cannot add credits. To add minutes:\n\nVisit: https://ringez.com/wallet\nPay with PayPal (USD) or UPI (INR)\nCredits appear instantly\n\nWhy? Payment processing requires secure browser redirects and PCI compliance that APIs cannot handle."
      },
      {
        "title": "Low Balance Handling",
        "body": "If someone tries to call with insufficient balance:\n\nAI: Let me check your balance...\n      \n      You have 0 minutes left. You will need to add credits first.\n      \n      💳 Add credits at: https://ringez.com/wallet\n      \n      The rates are:\n      • USA: $0.05/min\n      • India: $0.08/min\n      • UK: $0.06/min\n      \n      Come back after adding credits and I will make that call!"
      },
      {
        "title": "API Reference Quick Reference",
        "body": "ActionMethodEndpointHeadersCheck EmailPOST/auth/check-emailContent-TypeSend OTPPOST/auth/send-otpContent-TypeVerify OTPPOST/auth/verify-otpContent-TypeLoginPOST/auth/loginContent-TypeCheck BalanceGET/auth/meX-Session-IDMake CallPOST/calls/initiateX-Session-ID, Content-TypeCall StatusGET/calls/:call_idX-Session-IDEnd CallDELETE/calls/:call_idX-Session-IDCall HistoryGET/callsX-Session-IDDTMF/ActionsPOST/calls/:call_id/actionsX-Session-ID, Content-Type"
      },
      {
        "title": "Support",
        "body": "Need help? Contact us at support@ringez.com\n\nAbout Ringez: Built by an independent creator, not a big corporation. Your support keeps the service running! 🙏"
      }
    ],
    "body": "Ringez Phone Calling API\n\nMake affordable international phone calls from anywhere. No hidden fees, no subscriptions — just pay for the minutes you use.\n\nWhat is Ringez?\n\nRingez is a simple, privacy-focused international calling service that lets you make phone calls to 200+ countries without complicated setups or expensive plans.\n\nPerfect for:\n\nCalling family abroad\nBusiness calls to international clients\nAI agents making reservations or appointments\nQuick calls without buying a calling plan\nQuick Start Guide\n1. Create an Account\n\nFirst, check if your email is already registered:\n\nPOST https://ringez-api.vercel.app/api/v1/auth/check-email\nContent-Type: application/json\n\n{\"email\": \"you@example.com\"}\n\n\nResponse:\n\nnew_user → Continue to OTP verification\nexisting_user → Login with password\nFor New Users: Verify with OTP\n\nStep 1: Request OTP\n\nPOST https://ringez-api.vercel.app/api/v1/auth/send-otp\nContent-Type: application/json\n\n{\"email\": \"you@example.com\"}\n\n\nStep 2: Verify OTP\n\nPOST https://ringez-api.vercel.app/api/v1/auth/verify-otp\nContent-Type: application/json\n\n{\n  \"email\": \"you@example.com\",\n  \"otp\": \"123456\"\n}\n\n\nResponse:\n\n{\n  \"session_id\": \"sess_abc123xyz\",\n  \"user\": {\n    \"email\": \"you@example.com\",\n    \"balance_minutes\": 5\n  }\n}\n\n\nSave the session_id — you will need it for all API calls.\n\nFor Existing Users: Login\nPOST https://ringez-api.vercel.app/api/v1/auth/login\nContent-Type: application/json\n\n{\n  \"email\": \"you@example.com\",\n  \"password\": \"your-password\"\n}\n\n2. Check Your Balance\n\nSee how many minutes you have before making a call:\n\nGET https://ringez-api.vercel.app/api/v1/auth/me\nX-Session-ID: sess_abc123xyz\n\n\nResponse:\n\n{\n  \"balance_minutes\": 5,\n  \"balance_usd\": 0,\n  \"email\": \"you@example.com\"\n}\n\n3. Make a Phone Call\n\nUse the idempotency_key to prevent accidental duplicate calls:\n\nPOST https://ringez-api.vercel.app/api/v1/calls/initiate\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"to_number\": \"+919876543210\",\n  \"idempotency_key\": \"sess_abc123xyz_1700000000000_xyz789\"\n}\n\n\nResponse (Success):\n\n{\n  \"call_id\": \"call_xyz789\",\n  \"status\": \"initiated\",\n  \"mode\": \"bridge\",\n  \"to_number\": \"+919876543210\",\n  \"from_number\": \"+17623713590\",\n  \"twilio_call_sid\": \"CAxxxxx\"\n}\n\n\nResponse (Duplicate Call):\n\n{\n  \"alreadyInitiated\": true,\n  \"callSid\": \"CAxxxxx\"\n}\n\nCall Modes Explained\n\nRingez supports two ways to make calls:\n\nBridge Mode (Default)\nHow it works: Calls your phone first, then connects you to the destination\nBest for: Personal calls where you want to talk\nYour phone: Will ring first\nDirect Mode\nHow it works: Calls the destination directly\nBest for: AI agents, automated calls, or when you do not want your phone to ring\nYour phone: Does not ring\n\nForce Direct Mode:\n\nPOST /api/v1/calls/initiate\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"to_number\": \"+919876543210\",\n  \"mode\": \"direct\"\n}\n\nPreventing Duplicate Calls\n\nWhen making calls through an API, network delays or retries can accidentally create multiple calls. Use an idempotency key to prevent this.\n\nWhat is an Idempotency Key?\n\nA unique identifier for each call attempt. If you use the same key within 5 minutes, the API returns the original call instead of creating a new one.\n\nHow to Use It\n\nGenerate a unique key for each user action:\n\nconst idempotencyKey = `${sessionId}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n// Example: sess_abc123_1700000000000_xyz789abc\n\nImportant Notes\n5-minute window: Same key within 5 minutes returns the existing call\nAfter 5 minutes: Same key creates a new call\nGenerate fresh keys: Create a new key for each button click, not for API retries\nResponse: If duplicate detected, you get {alreadyInitiated: true, callSid: \"...\"}\nPricing\n\nPay only for what you use. No monthly fees, no subscriptions.\n\nUSD Plans\nPlan\tPrice\tMinutes\tRate per Minute\nStarter\t$5\t30\t$0.17\nPopular\t$15\t120\t$0.13\nBest Value\t$30\t300\t$0.10\nINR Plans\nPlan\tPrice\tMinutes\tRate per Minute\nStarter\t₹99\t7\t₹14/min\nPopular\t₹199\t19\t₹10/min\nValue\t₹499\t60\t₹8/min\nPower\t₹999\t143\t₹7/min\n\nBilling: Rounded up to the nearest minute. A 2-minute 30-second call = 3 minutes charged.\n\nManaging Active Calls\nCheck Call Status\n\nSee if your call is still ringing, connected, or completed:\n\nGET https://ringez-api.vercel.app/api/v1/calls/call_xyz789\nX-Session-ID: sess_abc123xyz\n\n\nResponse:\n\n{\n  \"call_id\": \"call_xyz789\",\n  \"status\": \"in-progress\",\n  \"duration\": 120,\n  \"estimated_cost\": {\n    \"minutes\": 2,\n    \"amount\": 0.25,\n    \"currency\": \"USD\"\n  }\n}\n\nEnd a Call Early\n\nHang up a call before it finishes:\n\nDELETE https://ringez-api.vercel.app/api/v1/calls/call_xyz789\nX-Session-ID: sess_abc123xyz\n\nNavigate Phone Menus (DTMF)\n\nPress numbers during a call (useful for bank menus, customer support):\n\nPOST https://ringez-api.vercel.app/api/v1/calls/call_xyz789/actions\nX-Session-ID: sess_abc123xyz\nContent-Type: application/json\n\n{\n  \"action\": \"dtmf\",\n  \"parameters\": {\n    \"digits\": \"1\"\n  }\n}\n\n\nCommon DTMF uses:\n\n{\"digits\": \"1\"} — Press 1 for English\n{\"digits\": \"1234\"} — Enter PIN\n{\"digits\": \"w\"} — Wait 0.5 seconds\nCall History\n\nSee your past calls:\n\nGET https://ringez-api.vercel.app/api/v1/calls?limit=10&offset=0\nX-Session-ID: sess_abc123xyz\n\n\nResponse:\n\n{\n  \"calls\": [\n    {\n      \"call_id\": \"call_abc123\",\n      \"to_number\": \"+919876543210\",\n      \"status\": \"completed\",\n      \"duration\": 300,\n      \"cost\": 0.375,\n      \"started_at\": \"2026-02-09T10:00:00Z\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 25,\n    \"has_more\": true\n  }\n}\n\nUse Cases\nPersonal Call to Family\nUser: Call my mom in India\nAI: I will help you call India. First, let me check your balance...\n      You have 15 minutes available.\n      Calling +91 98765 43210 now...\n      \nAI: Your phone is ringing. Pick up and I will connect you.\n\nAI Agent Making a Reservation\nUser: Book a table at Taj Restaurant for 7 PM\nAI: I will call Taj Restaurant for you.\n      \n      [AI uses direct mode — your phone does not ring]\n      \nAI: Calling +91 12345 67890...\n      \nAI: Hello, I would like to make a reservation for 2 people at 7 PM today.\n      \nAI: ✅ Reservation confirmed! Table for 2 at 7 PM under your name.\n\nImportant Information\nFree Minutes\n\nNew accounts get 5 free minutes to test the service. These are for testing only — please add credits for regular use.\n\nAdding Credits\n\nThis skill cannot add credits. To add minutes:\n\nVisit: https://ringez.com/wallet\nPay with PayPal (USD) or UPI (INR)\nCredits appear instantly\n\nWhy? Payment processing requires secure browser redirects and PCI compliance that APIs cannot handle.\n\nLow Balance Handling\n\nIf someone tries to call with insufficient balance:\n\nAI: Let me check your balance...\n      \n      You have 0 minutes left. You will need to add credits first.\n      \n      💳 Add credits at: https://ringez.com/wallet\n      \n      The rates are:\n      • USA: $0.05/min\n      • India: $0.08/min\n      • UK: $0.06/min\n      \n      Come back after adding credits and I will make that call!\n\nAPI Reference Quick Reference\nAction\tMethod\tEndpoint\tHeaders\nCheck Email\tPOST\t/auth/check-email\tContent-Type\nSend OTP\tPOST\t/auth/send-otp\tContent-Type\nVerify OTP\tPOST\t/auth/verify-otp\tContent-Type\nLogin\tPOST\t/auth/login\tContent-Type\nCheck Balance\tGET\t/auth/me\tX-Session-ID\nMake Call\tPOST\t/calls/initiate\tX-Session-ID, Content-Type\nCall Status\tGET\t/calls/:call_id\tX-Session-ID\nEnd Call\tDELETE\t/calls/:call_id\tX-Session-ID\nCall History\tGET\t/calls\tX-Session-ID\nDTMF/Actions\tPOST\t/calls/:call_id/actions\tX-Session-ID, Content-Type\nSupport\n\nNeed help? Contact us at support@ringez.com\n\nAbout Ringez: Built by an independent creator, not a big corporation. Your support keeps the service running! 🙏"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adisahani/phone-calling",
    "publisherUrl": "https://clawhub.ai/adisahani/phone-calling",
    "owner": "adisahani",
    "version": "1.0.7",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/phone-calling",
    "downloadUrl": "https://openagent3.xyz/downloads/phone-calling",
    "agentUrl": "https://openagent3.xyz/skills/phone-calling/agent",
    "manifestUrl": "https://openagent3.xyz/skills/phone-calling/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/phone-calling/agent.md"
  }
}