{
  "schemaVersion": "1.0",
  "item": {
    "slug": "kallyai-api",
    "name": "KallyAI Executive Assistant (Claude Code)",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sltelitsyn/kallyai-api",
    "canonicalUrl": "https://clawhub.ai/sltelitsyn/kallyai-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/kallyai-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=kallyai-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api-reference.md",
      "scripts/kallyai.py",
      "scripts/kallyai_call.py"
    ],
    "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/kallyai-api"
    },
    "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/kallyai-api",
    "agentPageUrl": "https://openagent3.xyz/skills/kallyai-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kallyai-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kallyai-api/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": "KallyAI Executive Assistant",
        "body": "KallyAI is an AI executive assistant that handles outbound + inbound calls, email, bookings, research, bills, rides, food orders, errands, multi-channel messaging, and phone number management — all from the terminal."
      },
      {
        "title": "Quick Start",
        "body": "# The 80% command — natural language, routes automatically\npython kallyai.py ask \"Book a table at Nobu for 4 tonight\"\npython kallyai.py ask \"Email Dr. Smith to reschedule my Thursday appointment\"\npython kallyai.py ask \"Find the best plumber near me and negotiate a quote\"\n\n# Check credits (NOT minutes — credits are the sole billing unit)\npython kallyai.py credits balance\n\n# Check your inbox\npython kallyai.py messages inbox\n\n# View incoming calls handled by your AI receptionist\npython kallyai.py inbound calls"
      },
      {
        "title": "Step 1: Gather Intent",
        "body": "Determine what the user needs. KallyAI covers 14 domains:\n\nDomainExamplesCoordination\"Book a table\", \"Handle this for me\", any multi-step requestCallsCall a business, check on a reservation, negotiateInboundView incoming calls, manage routing rules, voicemails, contactsPhoneProvision numbers, set up forwarding, manage caller IDActionsCalendar events, bookings, bill analysis, rides, food, errandsMessagesCheck inbox, read messages, view threadsSearchFind businesses, research options, compare pricesEmailSend emails, manage accounts, train voice profileChannelsManage WhatsApp, Telegram, email contacts, channel statusOutreachMulti-channel outreach tasks (call + email + messaging)BudgetEstimate costs, approve budgets, view breakdownsCreditsCheck balance, view history, spending breakdown, plansSubscriptionChange plan, view status, cancel pending changesReferralsGet referral code, view stats, track referrals\n\nFor most requests, use ask — it routes through the coordination AI automatically."
      },
      {
        "title": "Step 2: Authenticate",
        "body": "Authentication is automatic. First API call opens browser for Google/Apple sign-in.\n\npython kallyai.py login         # Force re-auth\npython kallyai.py logout        # Clear credentials\npython kallyai.py auth-status   # Check login"
      },
      {
        "title": "Step 3: Execute",
        "body": "Natural language (preferred):\n\npython kallyai.py ask \"Reserve a table for 4 at 8pm at Nobu\"\n\nDirect commands (when you know the domain):\n\npython kallyai.py calls make -p \"+15551234567\" -t \"Reserve table for 4 at 8pm\"\npython kallyai.py actions calendar create --title \"Dinner\" --start \"2026-02-14T20:00\"\npython kallyai.py search run \"best Italian restaurant downtown\"\npython kallyai.py inbound calls --status completed\npython kallyai.py phone list"
      },
      {
        "title": "Step 4: Monitor & Follow Up",
        "body": "# Check goal status\npython kallyai.py coord goals --status active\npython kallyai.py coord goal <GOAL_ID>\n\n# Review outbound call results\npython kallyai.py calls history\npython kallyai.py calls info <CALL_ID>\npython kallyai.py calls transcript <CALL_ID>\n\n# Review inbound calls handled by AI receptionist\npython kallyai.py inbound calls\npython kallyai.py inbound call <CALL_ID>\npython kallyai.py inbound transcript <CALL_ID>\n\n# Check inbox for responses\npython kallyai.py messages inbox --unread"
      },
      {
        "title": "ask — Natural Language (80% of usage)",
        "body": "python kallyai.py ask \"Your request in plain English\"\n\nRoutes through coordination AI. Creates goals, makes calls, sends emails — whatever is needed."
      },
      {
        "title": "coord — Coordination & Goals",
        "body": "coord message \"text\"           # Chat with coordination AI\ncoord goals [--status X]       # List goals\ncoord goal <id>                # Goal details\ncoord goal-tree <id>           # Goal + sub-goals\ncoord cancel-goal <id>         # Cancel goal\ncoord cascade-cancel <id>      # Cancel goal + sub-goals\ncoord escalate <id>            # Escalate for attention\ncoord approve-step <id>        # Approve next step\ncoord accept <id>              # Accept outcome\ncoord continue <id>            # Continue negotiating\ncoord archive <id>             # Archive goal\ncoord batch-archive <id>...    # Archive multiple\ncoord budget <id>              # Goal budget details\ncoord history                  # Conversation history\ncoord conversations            # List conversations\ncoord new                      # New conversation"
      },
      {
        "title": "calls — Outbound Phone Calls",
        "body": "calls make -p \"+1...\" -t \"task\"  # Make a call\ncalls history                     # List calls\ncalls info <id>                   # Call details\ncalls transcript <id>             # Transcript\ncalls recording <id>              # Recording URL\ncalls calendar <id>               # Calendar .ics\ncalls cancel <id>                 # Cancel call\ncalls reschedule <id>             # Reschedule\ncalls stop <id>                   # Stop active call"
      },
      {
        "title": "inbound — AI Receptionist (Incoming Calls)",
        "body": "inbound calls [--status X]          # List incoming calls\ninbound call <id>                    # Call details\ninbound transcript <id>              # Call transcript\ninbound recording <id>               # Call recording\ninbound summary                      # Incoming call summary/stats\ninbound analytics [--from X --to X]  # Call analytics\ninbound transfer <id> --to \"+1...\"   # Transfer call\ninbound takeover <id>                # Take over live call\ninbound reject <id> [--reason X]     # Reject call\ninbound rules                        # List routing rules\ninbound add-rule --name \"...\" --action \"...\" # Create rule\ninbound update-rule <id> ...         # Update rule\ninbound delete-rule <id>             # Delete rule\ninbound voicemails                   # List voicemails\ninbound voicemail <id>               # Voicemail details\ninbound voicemail-playback <id>      # Voicemail audio\ninbound contacts                     # List contacts\ninbound add-contact --name \"...\" --phone \"+1...\" # Add contact\ninbound update-contact <id> ...      # Update contact\ninbound delete-contact <id>          # Delete contact\ninbound import-contacts <file>       # Import contacts\ninbound events [--from X --to X]     # Event log"
      },
      {
        "title": "phone — Phone Number Management",
        "body": "phone list                           # List your numbers\nphone info <id>                      # Number details\nphone countries                      # Supported countries\nphone available --country US         # Search available numbers\nphone provision --country US         # Provision new number\nphone forwarding <id> --target \"+1...\" # Set call forwarding\nphone remove-forwarding <id>         # Remove forwarding\nphone verify-start <number>          # Start verification\nphone verify-check <number> --code X # Check verification code\nphone caller-id <id> --name \"...\"    # Set caller ID\nphone release <id>                   # Release number"
      },
      {
        "title": "actions — Autonomous Actions",
        "body": "actions calendar create --title \"...\" --start \"...\"\nactions calendar slots [--date X]\nactions calendar sync\nactions calendar delete <id>\nactions restaurant search \"query\" [--location X]\nactions booking create --type restaurant [--date X]\nactions booking cancel <id>\nactions bill analyze \"description\" [--amount X]\nactions bill dispute \"description\" [--reason X]\nactions ride --pickup \"...\" --destination \"...\"\nactions food \"order description\" [--address X]\nactions errand \"errand description\"\nactions email send --to \"...\" --subject \"...\" \"body\"\nactions email approve <id>\nactions email cancel <id>\nactions email outbox\nactions email replies <id>\nactions log [--type X]\nactions undo <id>"
      },
      {
        "title": "messages — Unified Inbox",
        "body": "messages inbox [--channel email|sms|call|chat] [--unread]\nmessages read <id>\nmessages thread <conversation_id>\nmessages mark-read <id> [<id>...]"
      },
      {
        "title": "search — Research",
        "body": "search run \"query\" [--location X]\nsearch quick \"query\"\nsearch history\nsearch sources"
      },
      {
        "title": "email — Email Account Management",
        "body": "email accounts                          # List connected\nemail connect gmail|outlook             # Connect provider\nemail disconnect <id>                   # Disconnect\nemail list [--classification important] # List messages\nemail read <id>                         # Read email\nemail respond <id> [instructions]       # Respond\nemail voice-profile                     # Get voice profile\nemail train-voice                       # Train from samples"
      },
      {
        "title": "channels — Multi-Channel Management",
        "body": "channels status                  # All channel statuses\nchannels email-add <address>     # Add email contact\nchannels email-list              # List email contacts\nchannels email-update <id> ...   # Update email contact\nchannels email-delete <id>       # Delete email contact\nchannels email-verify <token>    # Verify email\nchannels mailbox                 # Get KallyAI mailbox address\nchannels connect <channel>       # Connect WhatsApp/Telegram\nchannels test <channel>          # Test channel connection\nchannels disconnect <channel>    # Disconnect channel"
      },
      {
        "title": "outreach — Multi-Channel Outreach",
        "body": "outreach tasks [--status X]      # List outreach tasks\noutreach task <id>               # Task details\noutreach create --channel call --target \"+1...\" \"description\"\noutreach retry <id>              # Retry failed task\noutreach cancel <id>             # Cancel task"
      },
      {
        "title": "budget — Cost Management",
        "body": "budget estimate --type call \"description\"\nbudget approve <goal_id>\nbudget breakdown <goal_id>\nbudget ack-cap <goal_id>"
      },
      {
        "title": "credits — Balance & Usage",
        "body": "credits balance     # Current balance (credits, NOT minutes)\ncredits history     # Usage history\ncredits breakdown   # Spending breakdown by action type\ncredits costs       # Credit cost reference\ncredits plans       # Available credit plans"
      },
      {
        "title": "subscription — Plan Management",
        "body": "subscription status               # Current plan status\nsubscription change-plan <plan>   # Change to new plan\nsubscription cancel-change        # Cancel pending plan change"
      },
      {
        "title": "referrals — Referral Program",
        "body": "referrals code        # Get your referral code\nreferrals stats       # Referral statistics\nreferrals history     # Referral history"
      },
      {
        "title": "notifications — Notifications",
        "body": "notifications pending   # Check pending notification counts"
      },
      {
        "title": "Output Format",
        "body": "Default output is JSON (machine-readable for Claude Code). Add --human for formatted tables.\n\npython kallyai.py credits balance              # JSON\npython kallyai.py credits balance --human      # Pretty table"
      },
      {
        "title": "Backward Compatibility",
        "body": "Old flags still work — they map to new subcommands:\n\npython kallyai.py --phone \"+1...\" --task \"...\"   → calls make\npython kallyai.py --usage                         → credits balance\npython kallyai.py --history                       → calls history\npython kallyai.py --call-info ID                  → calls info ID\npython kallyai.py --transcript ID                 → calls transcript ID"
      },
      {
        "title": "Security",
        "body": "Tokens stored in ~/.kallyai_token.json with 0600 permissions\nOnly localhost redirect URIs accepted for CLI auth\nCSRF protection via state parameter\nTokens expire after 1 hour, auto-refresh supported"
      },
      {
        "title": "Common Errors",
        "body": "CodeHTTPActionquota_exceeded402User needs more credits — kallyai.com/pricingmissing_phone_number422Ask user for phone numberemergency_number422Cannot call emergency servicescountry_restriction403Country not supportedbudget_exceeded402Goal over budget — approve or cancelemail_not_connected400Need to connect email account firstphone_not_provisioned400Need to provision a phone number first"
      },
      {
        "title": "Full API Reference",
        "body": "See references/api-reference.md for complete endpoint documentation."
      }
    ],
    "body": "KallyAI Executive Assistant\n\nKallyAI is an AI executive assistant that handles outbound + inbound calls, email, bookings, research, bills, rides, food orders, errands, multi-channel messaging, and phone number management — all from the terminal.\n\nQuick Start\n# The 80% command — natural language, routes automatically\npython kallyai.py ask \"Book a table at Nobu for 4 tonight\"\npython kallyai.py ask \"Email Dr. Smith to reschedule my Thursday appointment\"\npython kallyai.py ask \"Find the best plumber near me and negotiate a quote\"\n\n# Check credits (NOT minutes — credits are the sole billing unit)\npython kallyai.py credits balance\n\n# Check your inbox\npython kallyai.py messages inbox\n\n# View incoming calls handled by your AI receptionist\npython kallyai.py inbound calls\n\nComplete Workflow\nStep 1: Gather Intent\n\nDetermine what the user needs. KallyAI covers 14 domains:\n\nDomain\tExamples\nCoordination\t\"Book a table\", \"Handle this for me\", any multi-step request\nCalls\tCall a business, check on a reservation, negotiate\nInbound\tView incoming calls, manage routing rules, voicemails, contacts\nPhone\tProvision numbers, set up forwarding, manage caller ID\nActions\tCalendar events, bookings, bill analysis, rides, food, errands\nMessages\tCheck inbox, read messages, view threads\nSearch\tFind businesses, research options, compare prices\nEmail\tSend emails, manage accounts, train voice profile\nChannels\tManage WhatsApp, Telegram, email contacts, channel status\nOutreach\tMulti-channel outreach tasks (call + email + messaging)\nBudget\tEstimate costs, approve budgets, view breakdowns\nCredits\tCheck balance, view history, spending breakdown, plans\nSubscription\tChange plan, view status, cancel pending changes\nReferrals\tGet referral code, view stats, track referrals\n\nFor most requests, use ask — it routes through the coordination AI automatically.\n\nStep 2: Authenticate\n\nAuthentication is automatic. First API call opens browser for Google/Apple sign-in.\n\npython kallyai.py login         # Force re-auth\npython kallyai.py logout        # Clear credentials\npython kallyai.py auth-status   # Check login\n\nStep 3: Execute\n\nNatural language (preferred):\n\npython kallyai.py ask \"Reserve a table for 4 at 8pm at Nobu\"\n\n\nDirect commands (when you know the domain):\n\npython kallyai.py calls make -p \"+15551234567\" -t \"Reserve table for 4 at 8pm\"\npython kallyai.py actions calendar create --title \"Dinner\" --start \"2026-02-14T20:00\"\npython kallyai.py search run \"best Italian restaurant downtown\"\npython kallyai.py inbound calls --status completed\npython kallyai.py phone list\n\nStep 4: Monitor & Follow Up\n# Check goal status\npython kallyai.py coord goals --status active\npython kallyai.py coord goal <GOAL_ID>\n\n# Review outbound call results\npython kallyai.py calls history\npython kallyai.py calls info <CALL_ID>\npython kallyai.py calls transcript <CALL_ID>\n\n# Review inbound calls handled by AI receptionist\npython kallyai.py inbound calls\npython kallyai.py inbound call <CALL_ID>\npython kallyai.py inbound transcript <CALL_ID>\n\n# Check inbox for responses\npython kallyai.py messages inbox --unread\n\nDomain Command Reference\nask — Natural Language (80% of usage)\npython kallyai.py ask \"Your request in plain English\"\n\n\nRoutes through coordination AI. Creates goals, makes calls, sends emails — whatever is needed.\n\ncoord — Coordination & Goals\ncoord message \"text\"           # Chat with coordination AI\ncoord goals [--status X]       # List goals\ncoord goal <id>                # Goal details\ncoord goal-tree <id>           # Goal + sub-goals\ncoord cancel-goal <id>         # Cancel goal\ncoord cascade-cancel <id>      # Cancel goal + sub-goals\ncoord escalate <id>            # Escalate for attention\ncoord approve-step <id>        # Approve next step\ncoord accept <id>              # Accept outcome\ncoord continue <id>            # Continue negotiating\ncoord archive <id>             # Archive goal\ncoord batch-archive <id>...    # Archive multiple\ncoord budget <id>              # Goal budget details\ncoord history                  # Conversation history\ncoord conversations            # List conversations\ncoord new                      # New conversation\n\ncalls — Outbound Phone Calls\ncalls make -p \"+1...\" -t \"task\"  # Make a call\ncalls history                     # List calls\ncalls info <id>                   # Call details\ncalls transcript <id>             # Transcript\ncalls recording <id>              # Recording URL\ncalls calendar <id>               # Calendar .ics\ncalls cancel <id>                 # Cancel call\ncalls reschedule <id>             # Reschedule\ncalls stop <id>                   # Stop active call\n\ninbound — AI Receptionist (Incoming Calls)\ninbound calls [--status X]          # List incoming calls\ninbound call <id>                    # Call details\ninbound transcript <id>              # Call transcript\ninbound recording <id>               # Call recording\ninbound summary                      # Incoming call summary/stats\ninbound analytics [--from X --to X]  # Call analytics\ninbound transfer <id> --to \"+1...\"   # Transfer call\ninbound takeover <id>                # Take over live call\ninbound reject <id> [--reason X]     # Reject call\ninbound rules                        # List routing rules\ninbound add-rule --name \"...\" --action \"...\" # Create rule\ninbound update-rule <id> ...         # Update rule\ninbound delete-rule <id>             # Delete rule\ninbound voicemails                   # List voicemails\ninbound voicemail <id>               # Voicemail details\ninbound voicemail-playback <id>      # Voicemail audio\ninbound contacts                     # List contacts\ninbound add-contact --name \"...\" --phone \"+1...\" # Add contact\ninbound update-contact <id> ...      # Update contact\ninbound delete-contact <id>          # Delete contact\ninbound import-contacts <file>       # Import contacts\ninbound events [--from X --to X]     # Event log\n\nphone — Phone Number Management\nphone list                           # List your numbers\nphone info <id>                      # Number details\nphone countries                      # Supported countries\nphone available --country US         # Search available numbers\nphone provision --country US         # Provision new number\nphone forwarding <id> --target \"+1...\" # Set call forwarding\nphone remove-forwarding <id>         # Remove forwarding\nphone verify-start <number>          # Start verification\nphone verify-check <number> --code X # Check verification code\nphone caller-id <id> --name \"...\"    # Set caller ID\nphone release <id>                   # Release number\n\nactions — Autonomous Actions\nactions calendar create --title \"...\" --start \"...\"\nactions calendar slots [--date X]\nactions calendar sync\nactions calendar delete <id>\nactions restaurant search \"query\" [--location X]\nactions booking create --type restaurant [--date X]\nactions booking cancel <id>\nactions bill analyze \"description\" [--amount X]\nactions bill dispute \"description\" [--reason X]\nactions ride --pickup \"...\" --destination \"...\"\nactions food \"order description\" [--address X]\nactions errand \"errand description\"\nactions email send --to \"...\" --subject \"...\" \"body\"\nactions email approve <id>\nactions email cancel <id>\nactions email outbox\nactions email replies <id>\nactions log [--type X]\nactions undo <id>\n\nmessages — Unified Inbox\nmessages inbox [--channel email|sms|call|chat] [--unread]\nmessages read <id>\nmessages thread <conversation_id>\nmessages mark-read <id> [<id>...]\n\nsearch — Research\nsearch run \"query\" [--location X]\nsearch quick \"query\"\nsearch history\nsearch sources\n\nemail — Email Account Management\nemail accounts                          # List connected\nemail connect gmail|outlook             # Connect provider\nemail disconnect <id>                   # Disconnect\nemail list [--classification important] # List messages\nemail read <id>                         # Read email\nemail respond <id> [instructions]       # Respond\nemail voice-profile                     # Get voice profile\nemail train-voice                       # Train from samples\n\nchannels — Multi-Channel Management\nchannels status                  # All channel statuses\nchannels email-add <address>     # Add email contact\nchannels email-list              # List email contacts\nchannels email-update <id> ...   # Update email contact\nchannels email-delete <id>       # Delete email contact\nchannels email-verify <token>    # Verify email\nchannels mailbox                 # Get KallyAI mailbox address\nchannels connect <channel>       # Connect WhatsApp/Telegram\nchannels test <channel>          # Test channel connection\nchannels disconnect <channel>    # Disconnect channel\n\noutreach — Multi-Channel Outreach\noutreach tasks [--status X]      # List outreach tasks\noutreach task <id>               # Task details\noutreach create --channel call --target \"+1...\" \"description\"\noutreach retry <id>              # Retry failed task\noutreach cancel <id>             # Cancel task\n\nbudget — Cost Management\nbudget estimate --type call \"description\"\nbudget approve <goal_id>\nbudget breakdown <goal_id>\nbudget ack-cap <goal_id>\n\ncredits — Balance & Usage\ncredits balance     # Current balance (credits, NOT minutes)\ncredits history     # Usage history\ncredits breakdown   # Spending breakdown by action type\ncredits costs       # Credit cost reference\ncredits plans       # Available credit plans\n\nsubscription — Plan Management\nsubscription status               # Current plan status\nsubscription change-plan <plan>   # Change to new plan\nsubscription cancel-change        # Cancel pending plan change\n\nreferrals — Referral Program\nreferrals code        # Get your referral code\nreferrals stats       # Referral statistics\nreferrals history     # Referral history\n\nnotifications — Notifications\nnotifications pending   # Check pending notification counts\n\nOutput Format\n\nDefault output is JSON (machine-readable for Claude Code). Add --human for formatted tables.\n\npython kallyai.py credits balance              # JSON\npython kallyai.py credits balance --human      # Pretty table\n\nBackward Compatibility\n\nOld flags still work — they map to new subcommands:\n\npython kallyai.py --phone \"+1...\" --task \"...\"   → calls make\npython kallyai.py --usage                         → credits balance\npython kallyai.py --history                       → calls history\npython kallyai.py --call-info ID                  → calls info ID\npython kallyai.py --transcript ID                 → calls transcript ID\n\nSecurity\nTokens stored in ~/.kallyai_token.json with 0600 permissions\nOnly localhost redirect URIs accepted for CLI auth\nCSRF protection via state parameter\nTokens expire after 1 hour, auto-refresh supported\nCommon Errors\nCode\tHTTP\tAction\nquota_exceeded\t402\tUser needs more credits — kallyai.com/pricing\nmissing_phone_number\t422\tAsk user for phone number\nemergency_number\t422\tCannot call emergency services\ncountry_restriction\t403\tCountry not supported\nbudget_exceeded\t402\tGoal over budget — approve or cancel\nemail_not_connected\t400\tNeed to connect email account first\nphone_not_provisioned\t400\tNeed to provision a phone number first\nFull API Reference\n\nSee references/api-reference.md for complete endpoint documentation."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sltelitsyn/kallyai-api",
    "publisherUrl": "https://clawhub.ai/sltelitsyn/kallyai-api",
    "owner": "sltelitsyn",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/kallyai-api",
    "downloadUrl": "https://openagent3.xyz/downloads/kallyai-api",
    "agentUrl": "https://openagent3.xyz/skills/kallyai-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kallyai-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kallyai-api/agent.md"
  }
}