{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sophiie",
    "name": "Sophiie AI Office Manager",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/tomc98/sophiie",
    "canonicalUrl": "https://clawhub.ai/tomc98/sophiie",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sophiie",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sophiie",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/sophiie.sh"
    ],
    "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-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/sophiie"
    },
    "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/sophiie",
    "agentPageUrl": "https://openagent3.xyz/skills/sophiie/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sophiie/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sophiie/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": "Sophiie — Sales Pipeline Management",
        "body": "Sophiie is a B2B SaaS platform for sales pipeline management. Organizations get AI-powered virtual assistant agents that handle calls, SMS, and lead management. This skill lets you manage your Sophiie pipeline via natural language."
      },
      {
        "title": "Authentication",
        "body": "All requests use Authorization: Bearer <key> where the key is SOPHIIE_API_KEY. Keys are prefixed sk_live_* (production) or sk_test_* (sandbox).\n\nBase URL: https://api.sophiie.ai\nRate limit: 60 requests/minute\nAll responses: JSON"
      },
      {
        "title": "External Endpoints",
        "body": "MethodURLData SentGEThttps://api.sophiie.ai/v1/leadsQuery: page, limitGEThttps://api.sophiie.ai/v1/leads/{id}NonePOSThttps://api.sophiie.ai/v1/leadsBody: firstName, lastName, email, phone, suburb, businessName, socialsPUThttps://api.sophiie.ai/v1/leads/{id}Body: firstName, lastName, email, phone, suburb, businessName, socialsDELETEhttps://api.sophiie.ai/v1/leads/{id}NoneGEThttps://api.sophiie.ai/v1/leads/{id}/notesQuery: page, limitGEThttps://api.sophiie.ai/v1/leads/{id}/activitiesQuery: page, limitGEThttps://api.sophiie.ai/v1/inquiriesQuery: page, limit, leadId, expandGEThttps://api.sophiie.ai/v1/inquiries/{id}NoneGEThttps://api.sophiie.ai/v1/appointmentsQuery: page, limit, leadIdPOSThttps://api.sophiie.ai/v1/callsBody: name, phoneNumber, mode, custom_instructionsPOSThttps://api.sophiie.ai/v1/smsBody: userId, leadId, message, messageThreadIdGEThttps://api.sophiie.ai/v1/faqsQuery: page, limitPOSThttps://api.sophiie.ai/v1/faqsBody: question, answer, isActivePUThttps://api.sophiie.ai/v1/faqs/{id}Body: question, answer, isActiveDELETEhttps://api.sophiie.ai/v1/faqs/{id}NoneGEThttps://api.sophiie.ai/v1/policiesQuery: page, limitPOSThttps://api.sophiie.ai/v1/policiesBody: title, content, isActivePUThttps://api.sophiie.ai/v1/policies/{id}Body: title, content, isActiveDELETEhttps://api.sophiie.ai/v1/policies/{id}NoneGEThttps://api.sophiie.ai/v1/membersQuery: page, limitGEThttps://api.sophiie.ai/v1/organizationNoneGEThttps://api.sophiie.ai/v1/organization/availabilityNoneGEThttps://api.sophiie.ai/v1/organization/membersQuery: page, limitGEThttps://api.sophiie.ai/v1/organization/servicesNoneGEThttps://api.sophiie.ai/v1/organization/productsNone"
      },
      {
        "title": "Security & Privacy",
        "body": "The SOPHIIE_API_KEY is never logged, printed, or echoed in output\nAll requests use HTTPS only\nNo data is cached locally — every command fetches live from the API\nAll user input is sanitized via jq -n (never string-interpolated into JSON bodies)\nThe skill has read-only access to SOPHIIE_API_KEY — it cannot modify or delete the environment variable"
      },
      {
        "title": "Command Reference",
        "body": "All commands are run via scripts/sophiie.sh <domain> <action> [options]."
      },
      {
        "title": "Leads",
        "body": "leads list — List all leads in the pipeline\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user wants to see their pipeline, check leads, or browse contacts.\n\nleads get <id> — Get full details for a specific lead\nUse when the user asks about a specific lead by name or ID. Lead IDs start with ld_.\n\nleads create — Create a new lead\n\n--firstName <name>      Required (min 2 chars)\n--suburb <suburb>       Required\n--lastName <name>       Optional\n--email <email>         Optional (valid email)\n--phone <number>        Optional (E.164 format, e.g. +61412345678)\n--businessName <name>   Optional\n--instagram <handle>    Optional\n--facebook <handle>     Optional\n\nUse when the user wants to add a new contact or lead to their pipeline.\n\nleads update <id> — Update an existing lead\nSame options as create, but all are optional. At least one field must be provided.\nUse when the user wants to change lead details.\n\nleads delete <id> — Delete a lead (soft delete)\nUse when the user explicitly asks to remove a lead. Always confirm before deleting.\n\nleads notes <id> — List notes for a lead\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user asks about notes or history on a specific lead.\n\nleads activities <id> — List activity log for a lead\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user wants to see what happened with a lead (timeline, events)."
      },
      {
        "title": "Inquiries",
        "body": "inquiries list — List all inquiries\n\n--page <n>       Page number (default: 1)\n--limit <n>      Items per page (default: 50, max: 100)\n--leadId <id>    Filter by lead ID (ld_...)\n--expand <type>  Expand related data: \"external\", \"lead\", or \"both\"\n\nUse when the user asks about incoming inquiries, messages, or calls received.\n\ninquiries get <id> — Get full inquiry details with source data\nReturns the inquiry with expanded source data (call transcripts, SMS messages, webform submissions, etc.) depending on the inquiry source type (CALL, SMS, EMAIL, CHATBOT, WEBFORM).\nUse when the user wants details on a specific inquiry."
      },
      {
        "title": "FAQs",
        "body": "faqs list — List all FAQs\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user wants to see their knowledge base or FAQ entries.\n\nfaqs create — Create a new FAQ\n\n--question <text>    Required (max 255 chars)\n--answer <text>      Required\n--isActive <bool>    Optional (true/false)\n\nUse when the user wants to add to their AI agent's knowledge base.\n\nfaqs update <id> — Update an FAQ (ID is a number)\nSame options as create, all optional.\nUse when the user wants to change an existing FAQ entry.\n\nfaqs delete <id> — Delete an FAQ (soft delete)\nAlways confirm before deleting."
      },
      {
        "title": "Policies",
        "body": "policies list — List all policies\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user asks about their business policies.\n\npolicies create — Create a new policy\n\n--title <text>      Required (min 2, max 255 chars)\n--content <text>    Required (min 2 chars)\n--isActive <bool>   Optional (true/false)\n\nUse when the user wants to add a business policy for their AI agent.\n\npolicies update <id> — Update a policy (ID is a number)\nSame options as create, all optional.\n\npolicies delete <id> — Delete a policy (soft delete)\nAlways confirm before deleting."
      },
      {
        "title": "Communication",
        "body": "calls send — Initiate an outbound AI call\n\n--name <name>                 Required — name of person being called\n--phoneNumber <number>        Required — E.164 format (e.g. +61412345678)\n--mode <mode>                 Optional — \"normal\" (default) or \"transfer_only\"\n--custom_instructions <text>  Optional — required when mode is \"transfer_only\"\n\nUse when the user wants to call someone. Always confirm the phone number before calling.\n\nsms send — Send an SMS message\n\n--userId <id>             Required — sender user ID (usr_...)\n--leadId <id>             Required — recipient lead ID (ld_...)\n--message <text>          Required — message text (min 2 chars)\n--messageThreadId <n>     Optional — existing thread ID (number); omit to start new thread\n\nUse when the user wants to text a lead. You need to know the userId — use members list first if needed."
      },
      {
        "title": "Appointments",
        "body": "appointments list — List all appointments\n\n--page <n>       Page number (default: 1)\n--limit <n>      Items per page (default: 50, max: 100)\n--leadId <id>    Filter by lead ID (ld_...)\n\nUse when the user asks about upcoming appointments or scheduled meetings."
      },
      {
        "title": "Organization",
        "body": "org get — Get organization details (name, timezone, currency, etc.)\nUse when the user asks about their org settings or business info.\n\norg availability — Get business hours / availability schedules\nUse when the user asks about working hours or availability.\n\norg members — List organization members with roles\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when the user asks about team members (returns membership-level data with positions/avatars).\n\norg services — List services offered (grouped by category)\nUse when the user asks about their service offerings.\n\norg products — List products offered (grouped by category)\nUse when the user asks about their product catalog."
      },
      {
        "title": "Members",
        "body": "members list — List all organization members\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\nUse when you need user IDs (usr_...) for operations like sending SMS. Returns user-level data with roles."
      },
      {
        "title": "Decision Guide",
        "body": "User intentCommand(s)\"Check my pipeline\" / \"Show leads\"leads list\"Tell me about [lead name]\"leads list → find by name → leads get <id>\"Add a new lead\" / \"New contact\"leads create\"Update [lead]'s phone number\"leads update <id> --phone <number>\"Remove this lead\"leads delete <id> (confirm first)\"What inquiries came in?\"inquiries list\"Show me that call transcript\"inquiries get <id>\"Any appointments today?\"appointments list\"Call [person]\" / \"Ring [number]\"calls send (confirm number first)\"Text [lead] about [topic]\"members list → get userId → sms send\"Update the knowledge base\"faqs list → then faqs create or faqs update\"Add a refund policy\"policies create\"What are our business hours?\"org availability\"Who's on the team?\"members list or org members\"What services do we offer?\"org services"
      },
      {
        "title": "Pagination",
        "body": "All list endpoints return paginated responses:\n\n{\n  \"items\": [...],\n  \"totalPages\": 5,\n  \"currentPage\": 1,\n  \"totalCount\": 237\n}\n\nDefault: page 1, 50 items per page\nMaximum: 100 items per page\nAlways check totalPages — if there are more pages, tell the user and offer to fetch the next page"
      },
      {
        "title": "Error Reference",
        "body": "CodeMeaningWhat to tell the user401Invalid or missing API key\"Your API key appears to be invalid. Check SOPHIIE_API_KEY.\"404Resource not found\"That [lead/inquiry/etc.] wasn't found. Double-check the ID.\"409Conflict (duplicate lead)\"A lead with that info already exists.\"429Rate limited\"Too many requests. Wait a moment and try again.\"500Server error\"Something went wrong on Sophiie's end. Try again shortly.\"\n\nError responses have this shape:\n\n{\n  \"success\": false,\n  \"message\": \"...\",\n  \"error\": { \"status\": 401, \"message\": \"...\" }\n}"
      }
    ],
    "body": "Sophiie — Sales Pipeline Management\n\nSophiie is a B2B SaaS platform for sales pipeline management. Organizations get AI-powered virtual assistant agents that handle calls, SMS, and lead management. This skill lets you manage your Sophiie pipeline via natural language.\n\nAuthentication\n\nAll requests use Authorization: Bearer <key> where the key is SOPHIIE_API_KEY. Keys are prefixed sk_live_* (production) or sk_test_* (sandbox).\n\nBase URL: https://api.sophiie.ai\nRate limit: 60 requests/minute\nAll responses: JSON\nExternal Endpoints\nMethod\tURL\tData Sent\nGET\thttps://api.sophiie.ai/v1/leads\tQuery: page, limit\nGET\thttps://api.sophiie.ai/v1/leads/{id}\tNone\nPOST\thttps://api.sophiie.ai/v1/leads\tBody: firstName, lastName, email, phone, suburb, businessName, socials\nPUT\thttps://api.sophiie.ai/v1/leads/{id}\tBody: firstName, lastName, email, phone, suburb, businessName, socials\nDELETE\thttps://api.sophiie.ai/v1/leads/{id}\tNone\nGET\thttps://api.sophiie.ai/v1/leads/{id}/notes\tQuery: page, limit\nGET\thttps://api.sophiie.ai/v1/leads/{id}/activities\tQuery: page, limit\nGET\thttps://api.sophiie.ai/v1/inquiries\tQuery: page, limit, leadId, expand\nGET\thttps://api.sophiie.ai/v1/inquiries/{id}\tNone\nGET\thttps://api.sophiie.ai/v1/appointments\tQuery: page, limit, leadId\nPOST\thttps://api.sophiie.ai/v1/calls\tBody: name, phoneNumber, mode, custom_instructions\nPOST\thttps://api.sophiie.ai/v1/sms\tBody: userId, leadId, message, messageThreadId\nGET\thttps://api.sophiie.ai/v1/faqs\tQuery: page, limit\nPOST\thttps://api.sophiie.ai/v1/faqs\tBody: question, answer, isActive\nPUT\thttps://api.sophiie.ai/v1/faqs/{id}\tBody: question, answer, isActive\nDELETE\thttps://api.sophiie.ai/v1/faqs/{id}\tNone\nGET\thttps://api.sophiie.ai/v1/policies\tQuery: page, limit\nPOST\thttps://api.sophiie.ai/v1/policies\tBody: title, content, isActive\nPUT\thttps://api.sophiie.ai/v1/policies/{id}\tBody: title, content, isActive\nDELETE\thttps://api.sophiie.ai/v1/policies/{id}\tNone\nGET\thttps://api.sophiie.ai/v1/members\tQuery: page, limit\nGET\thttps://api.sophiie.ai/v1/organization\tNone\nGET\thttps://api.sophiie.ai/v1/organization/availability\tNone\nGET\thttps://api.sophiie.ai/v1/organization/members\tQuery: page, limit\nGET\thttps://api.sophiie.ai/v1/organization/services\tNone\nGET\thttps://api.sophiie.ai/v1/organization/products\tNone\nSecurity & Privacy\nThe SOPHIIE_API_KEY is never logged, printed, or echoed in output\nAll requests use HTTPS only\nNo data is cached locally — every command fetches live from the API\nAll user input is sanitized via jq -n (never string-interpolated into JSON bodies)\nThe skill has read-only access to SOPHIIE_API_KEY — it cannot modify or delete the environment variable\nCommand Reference\n\nAll commands are run via scripts/sophiie.sh <domain> <action> [options].\n\nLeads\n\nleads list — List all leads in the pipeline\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user wants to see their pipeline, check leads, or browse contacts.\n\nleads get <id> — Get full details for a specific lead Use when the user asks about a specific lead by name or ID. Lead IDs start with ld_.\n\nleads create — Create a new lead\n\n--firstName <name>      Required (min 2 chars)\n--suburb <suburb>       Required\n--lastName <name>       Optional\n--email <email>         Optional (valid email)\n--phone <number>        Optional (E.164 format, e.g. +61412345678)\n--businessName <name>   Optional\n--instagram <handle>    Optional\n--facebook <handle>     Optional\n\n\nUse when the user wants to add a new contact or lead to their pipeline.\n\nleads update <id> — Update an existing lead Same options as create, but all are optional. At least one field must be provided. Use when the user wants to change lead details.\n\nleads delete <id> — Delete a lead (soft delete) Use when the user explicitly asks to remove a lead. Always confirm before deleting.\n\nleads notes <id> — List notes for a lead\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user asks about notes or history on a specific lead.\n\nleads activities <id> — List activity log for a lead\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user wants to see what happened with a lead (timeline, events).\n\nInquiries\n\ninquiries list — List all inquiries\n\n--page <n>       Page number (default: 1)\n--limit <n>      Items per page (default: 50, max: 100)\n--leadId <id>    Filter by lead ID (ld_...)\n--expand <type>  Expand related data: \"external\", \"lead\", or \"both\"\n\n\nUse when the user asks about incoming inquiries, messages, or calls received.\n\ninquiries get <id> — Get full inquiry details with source data Returns the inquiry with expanded source data (call transcripts, SMS messages, webform submissions, etc.) depending on the inquiry source type (CALL, SMS, EMAIL, CHATBOT, WEBFORM). Use when the user wants details on a specific inquiry.\n\nFAQs\n\nfaqs list — List all FAQs\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user wants to see their knowledge base or FAQ entries.\n\nfaqs create — Create a new FAQ\n\n--question <text>    Required (max 255 chars)\n--answer <text>      Required\n--isActive <bool>    Optional (true/false)\n\n\nUse when the user wants to add to their AI agent's knowledge base.\n\nfaqs update <id> — Update an FAQ (ID is a number) Same options as create, all optional. Use when the user wants to change an existing FAQ entry.\n\nfaqs delete <id> — Delete an FAQ (soft delete) Always confirm before deleting.\n\nPolicies\n\npolicies list — List all policies\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user asks about their business policies.\n\npolicies create — Create a new policy\n\n--title <text>      Required (min 2, max 255 chars)\n--content <text>    Required (min 2 chars)\n--isActive <bool>   Optional (true/false)\n\n\nUse when the user wants to add a business policy for their AI agent.\n\npolicies update <id> — Update a policy (ID is a number) Same options as create, all optional.\n\npolicies delete <id> — Delete a policy (soft delete) Always confirm before deleting.\n\nCommunication\n\ncalls send — Initiate an outbound AI call\n\n--name <name>                 Required — name of person being called\n--phoneNumber <number>        Required — E.164 format (e.g. +61412345678)\n--mode <mode>                 Optional — \"normal\" (default) or \"transfer_only\"\n--custom_instructions <text>  Optional — required when mode is \"transfer_only\"\n\n\nUse when the user wants to call someone. Always confirm the phone number before calling.\n\nsms send — Send an SMS message\n\n--userId <id>             Required — sender user ID (usr_...)\n--leadId <id>             Required — recipient lead ID (ld_...)\n--message <text>          Required — message text (min 2 chars)\n--messageThreadId <n>     Optional — existing thread ID (number); omit to start new thread\n\n\nUse when the user wants to text a lead. You need to know the userId — use members list first if needed.\n\nAppointments\n\nappointments list — List all appointments\n\n--page <n>       Page number (default: 1)\n--limit <n>      Items per page (default: 50, max: 100)\n--leadId <id>    Filter by lead ID (ld_...)\n\n\nUse when the user asks about upcoming appointments or scheduled meetings.\n\nOrganization\n\norg get — Get organization details (name, timezone, currency, etc.) Use when the user asks about their org settings or business info.\n\norg availability — Get business hours / availability schedules Use when the user asks about working hours or availability.\n\norg members — List organization members with roles\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when the user asks about team members (returns membership-level data with positions/avatars).\n\norg services — List services offered (grouped by category) Use when the user asks about their service offerings.\n\norg products — List products offered (grouped by category) Use when the user asks about their product catalog.\n\nMembers\n\nmembers list — List all organization members\n\n--page <n>    Page number (default: 1)\n--limit <n>   Items per page (default: 50, max: 100)\n\n\nUse when you need user IDs (usr_...) for operations like sending SMS. Returns user-level data with roles.\n\nDecision Guide\nUser intent\tCommand(s)\n\"Check my pipeline\" / \"Show leads\"\tleads list\n\"Tell me about [lead name]\"\tleads list → find by name → leads get <id>\n\"Add a new lead\" / \"New contact\"\tleads create\n\"Update [lead]'s phone number\"\tleads update <id> --phone <number>\n\"Remove this lead\"\tleads delete <id> (confirm first)\n\"What inquiries came in?\"\tinquiries list\n\"Show me that call transcript\"\tinquiries get <id>\n\"Any appointments today?\"\tappointments list\n\"Call [person]\" / \"Ring [number]\"\tcalls send (confirm number first)\n\"Text [lead] about [topic]\"\tmembers list → get userId → sms send\n\"Update the knowledge base\"\tfaqs list → then faqs create or faqs update\n\"Add a refund policy\"\tpolicies create\n\"What are our business hours?\"\torg availability\n\"Who's on the team?\"\tmembers list or org members\n\"What services do we offer?\"\torg services\nPagination\n\nAll list endpoints return paginated responses:\n\n{\n  \"items\": [...],\n  \"totalPages\": 5,\n  \"currentPage\": 1,\n  \"totalCount\": 237\n}\n\nDefault: page 1, 50 items per page\nMaximum: 100 items per page\nAlways check totalPages — if there are more pages, tell the user and offer to fetch the next page\nError Reference\nCode\tMeaning\tWhat to tell the user\n401\tInvalid or missing API key\t\"Your API key appears to be invalid. Check SOPHIIE_API_KEY.\"\n404\tResource not found\t\"That [lead/inquiry/etc.] wasn't found. Double-check the ID.\"\n409\tConflict (duplicate lead)\t\"A lead with that info already exists.\"\n429\tRate limited\t\"Too many requests. Wait a moment and try again.\"\n500\tServer error\t\"Something went wrong on Sophiie's end. Try again shortly.\"\n\nError responses have this shape:\n\n{\n  \"success\": false,\n  \"message\": \"...\",\n  \"error\": { \"status\": 401, \"message\": \"...\" }\n}"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tomc98/sophiie",
    "publisherUrl": "https://clawhub.ai/tomc98/sophiie",
    "owner": "tomc98",
    "version": "0.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sophiie",
    "downloadUrl": "https://openagent3.xyz/downloads/sophiie",
    "agentUrl": "https://openagent3.xyz/skills/sophiie/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sophiie/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sophiie/agent.md"
  }
}