{"id":"11a1168c-31e4-4e55-994c-68f5ed27c29f","entityType":"agent","slug":"clawhub-hith3sh-salesforce-ops","name":"Salesforce","canonicalUrl":"https://www.xpersona.co/agent/clawhub-hith3sh-salesforce-ops","canonicalPath":"/agent/clawhub-hith3sh-salesforce-ops","generatedAt":"2026-10-09T18:10:08.414Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":null},"description":"Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... Skill: Salesforce Owner: hith3sh Summary: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... Tags: latest:1.0.5 Version history: v1.0.5 | 2026-06-09T07:17:14.817Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic sou","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.8K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s173vws87a7ss71xf9rq53k5gd8568kv:salesforce-ops","sourceUrl":"https://clawhub.ai/hith3sh/salesforce-ops","homepage":"https://clawhub.ai/hith3sh/skills/salesforce-ops","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/hith3sh/salesforce-ops","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/hith3sh/skills/salesforce-ops","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":69,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":null},"stars":null,"forks":null,"downloads":2767,"packageName":null,"latestVersion":"1.0.5","tractionLabel":"2.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T11:38:51.433Z","lastCrawledAt":"2026-10-09T11:38:51.433Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T11:38:51.433Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.5","createdAt":"2026-06-09T07:17:14.817Z","changelog":"Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic source.","fileCount":3,"zipByteSize":8069},{"version":"1.0.4","createdAt":"2026-06-09T05:03:58.381Z","changelog":"- Removed the skill-card.md file. - No user-facing features or tool changes; this update only affects documentation assets.","fileCount":3,"zipByteSize":8038},{"version":"1.0.1","createdAt":"2026-06-08T16:41:53.670Z","changelog":"- Added a Salesforce logo image to SKILL.md for improved branding. - Minor content reformatting and cleanup in SKILL.md for better readability. - Removed the redundant skill-card.md file.","fileCount":3,"zipByteSize":7997},{"version":"0.1.11","createdAt":"2026-06-07T13:35:42.158Z","changelog":"Full rewrite to new standard: added tool reference tables, 3-step GIF table, architecture diagram, code examples, error handling, and troubleshooting.","fileCount":3,"zipByteSize":8033},{"version":"0.1.10","createdAt":"2026-05-02T20:30:54.971Z","changelog":"Update dashboard deep links to simpler /dashboard?add= format","fileCount":3,"zipByteSize":3667},{"version":"0.1.3","createdAt":"2026-04-29T18:03:09.524Z","changelog":"Fix display name","fileCount":2,"zipByteSize":2186},{"version":"0.1.2","createdAt":"2026-04-29T18:00:35.518Z","changelog":"Remove pricing language from skill descriptions","fileCount":2,"zipByteSize":2186},{"version":"0.1.1","createdAt":"2026-04-29T17:57:33.572Z","changelog":"Add ClawLink setup flow: plugin install, API key, connection instructions, ClawHub metadata compliance, and paid-service disclosure","fileCount":2,"zipByteSize":2229}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173vws87a7ss71xf9rq53k5gd8568kv:salesforce-ops","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T18:10:08.410Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-salesforce-ops/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":null},"readme":"Skill: Salesforce\n\nOwner: hith3sh\n\nSummary: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records...\n\nTags: latest:1.0.5\n\nVersion history:\n\nv1.0.5 | 2026-06-09T07:17:14.817Z | user\n\nAdd UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic source.\n\nv1.0.4 | 2026-06-09T05:03:58.381Z | auto\n\n- Removed the skill-card.md file.\n- No user-facing features or tool changes; this update only affects documentation assets.\n\nv1.0.1 | 2026-06-08T16:41:53.670Z | auto\n\n- Added a Salesforce logo image to SKILL.md for improved branding.\n- Minor content reformatting and cleanup in SKILL.md for better readability.\n- Removed the redundant skill-card.md file.\n\nv0.1.11 | 2026-06-07T13:35:42.158Z | user\n\nFull rewrite to new standard: added tool reference tables, 3-step GIF table, architecture diagram, code examples, error handling, and troubleshooting.\n\nv0.1.10 | 2026-05-02T20:30:54.971Z | user\n\nUpdate dashboard deep links to simpler /dashboard?add= format\n\nv0.1.3 | 2026-04-29T18:03:09.524Z | user\n\nFix display name\n\nv0.1.2 | 2026-04-29T18:00:35.518Z | user\n\nRemove pricing language from skill descriptions\n\nv0.1.1 | 2026-04-29T17:57:33.572Z | user\n\nAdd ClawLink setup flow: plugin install, API key, connection instructions, ClawHub metadata compliance, and paid-service disclosure\n\nv0.1.0 | 2026-04-28T10:44:00.908Z | user\n\nInitial provider-first Salesforce skill publish.\n\nArchive index:\n\nArchive v1.0.5: 3 files, 8069 bytes\n\nFiles: skill-card.md (3156b), SKILL.md (21295b), _meta.json (133b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n---\n\n# Salesforce\n\n![Salesforce](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/salesforce.svg)\n\nConnect to Salesforce to manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, and SObject records. Query data with SOQL, create and update records, manage files and attachments, and work with Salesforce objects via the REST API.\n\nThis skill uses [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops) for hosted connection flows and credentials so you do not need to configure Salesforce OAuth access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Salesforce |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Salesforce |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Salesforce again.\"\n\n## Quick Start\n\n```bash\n# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across objects with SOSL\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" --params '{\"query\": \"FIND {Alice*} RETURNING Contact\"}'\n\n# Create a new lead\nclawlink_call_tool --tool \"salesforce_create_lead\" --params '{\"last_name\": \"Smith\", \"company\": \"Acme Corp\", \"email\": \"alice@acme.com\"}'\n```\n\n## Authentication\n\nAll Salesforce tool calls are authenticated automatically by ClawLink using the user's connected Salesforce account via OAuth.\n\n**No OAuth setup is required in chat.** ClawLink manages the OAuth flow and token refresh automatically.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=salesforce and connect Salesforce via OAuth.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `salesforce` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration salesforce\n```\n\n**Response:** Returns the live tool catalog for Salesforce.\n\n### Reconnect\n\nIf Salesforce tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=salesforce\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration salesforce`\n\n## Security & Permissions\n\n- Access is scoped to the Salesforce org and OAuth scopes granted during connection.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Destructive actions (delete account, delete lead, delete opportunity) are marked as high-impact and must be confirmed.\n- SOQL and SOSL queries read data without modification — no confirmation required for read operations.\n\n## Tool Reference\n\n### Account Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_account` | Retrieve a specific account by ID with all available fields | Read |\n| `salesforce_create_account` | Create a new account in Salesforce (returns ID at `data.response_data.id`) | Write |\n| `salesforce_delete_account` | Permanently delete an account from Salesforce | Write |\n| `salesforce_associate_contact_to_account` | Associate a contact with an account by updating its AccountId field | Write |\n\n### Contact & Lead Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_contact` | Retrieve a specific contact by ID with all available fields | Read |\n| `salesforce_get_lead` | Retrieve a specific lead by ID with all available fields | Read |\n| `salesforce_create_contact` | Create a new contact in Salesforce | Write |\n| `salesforce_create_lead` | Create a new lead (`LastName` and `Company` required; org validation may require additional fields) | Write |\n| `salesforce_delete_contact` | Permanently delete a contact from Salesforce | Write |\n| `salesforce_delete_lead` | Permanently delete a lead from Salesforce | Write |\n| `salesforce_add_contact_to_campaign` | Add a contact to a campaign by creating a CampaignMember record | Write |\n| `salesforce_add_lead_to_campaign` | Add a lead to a campaign (both IDs must reference active, existing records) | Write |\n| `salesforce_apply_lead_assignment_rules` | Apply configured lead assignment rules to route a lead to the appropriate owner | Write |\n\n### Opportunity Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_opportunity` | Retrieve a specific opportunity by ID with all available fields | Read |\n| `salesforce_create_opportunity` | Create a new opportunity in Salesforce | Write |\n| `salesforce_delete_opportunity` | Permanently delete an opportunity from Salesforce | Write |\n| `salesforce_clone_opportunity_with_products` | Clone an opportunity and optionally its line items | Write |\n| `salesforce_add_opportunity_line_item` | Add a product (line item) to an opportunity | Write |\n\n### Campaign Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_campaign` | Retrieve a specific campaign by ID with all available fields | Read |\n| `salesforce_create_campaign` | Create a new campaign (`name` required; `type`, `status`, `start_date`, `end_date` often required by org validation) | Write |\n| `salesforce_delete_campaign` | Permanently delete a campaign from Salesforce | Write |\n\n### Task Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_task` | Create a new task to track activities related to contacts, leads, or other records | Write |\n| `salesforce_complete_task` | Mark a task as completed with optional completion notes | Write |\n\n### Notes & Attachments\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_note` | Retrieve a specific note by ID (private notes require sufficient permissions) | Read |\n| `salesforce_create_note` | Create a new note attached to a Salesforce record (no deduplication — identical calls create duplicates) | Write |\n| `salesforce_delete_note` | Permanently delete a note from Salesforce | Write |\n\n### Files & Collaboration\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_file_information` | Retrieve comprehensive metadata for a file (ownership, sharing, download URLs, rendition status) | Read |\n| `salesforce_get_file_content` | Return binary content of a Salesforce file for download or retrieval | Read |\n| `salesforce_get_file_shares` | Get information about objects with which a file has been shared | Read |\n| `salesforce_delete_file` | Permanently delete a file from Salesforce | Write |\n| `salesforce_get_chatter_resources` | Access Chatter resources directory (feeds, groups, users, emojis, streams) | Read |\n\n### Search & Query\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_execute_sosl_search` | Execute a SOSL search to search across multiple Salesforce objects simultaneously | Read |\n| `salesforce_get_query_job_results` | Retrieve results for a completed Bulk API v2 query job in CSV format | Read |\n| `salesforce_get_sobject_by_external_id` | Retrieve a Salesforce record by matching an external ID field value | Read |\n\n### SObject & Record Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_s_object_record` | Retrieve a single Salesforce record by ID from any sObject type | Read |\n| `salesforce_get_a_batch_of_records` | Retrieve multiple Salesforce records in a single request (up to 200 records) | Read |\n| `salesforce_create_s_object_record` | Create a new record of any standard or custom Salesforce object type | Write |\n| `salesforce_delete_sobject` | Delete a single Salesforce record by its ID (idempotent — deleting same record multiple times returns success) | Write |\n| `salesforce_delete_sobject_collections` | Delete up to 200 records in one request with optional rollback | Write |\n| `salesforce_clone_record` | Clone an existing Salesforce record (optionally apply field updates to the clone) | Write |\n| `salesforce_create_sobject_tree` | Create nested parent-child record hierarchies in a single atomic operation (up to 200 records, 5 levels deep) | Write |\n| `salesforce_execute_sobject_quick_action` | Execute a specific quick action on an sObject to create records with pre-configured defaults | Write |\n\n### Bulk Data Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_job_failed_record_results` | Get records that failed during a Bulk API 2.0 ingest operation | Read |\n| `salesforce_get_job_successful_record_results` | Get records successfully processed during a bulk operation | Read |\n| `salesforce_get_job_unprocessed_record_results` | Get records not processed during a bulk operation (job aborted or interrupted) | Read |\n| `salesforce_close_or_abort_job` | Close (state: UploadComplete) or abort (state: Aborted) a Bulk API v2 ingest job | Write |\n\n### Metadata & Discovery\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_all_custom_objects` | Retrieve all Salesforce objects (standard and custom) with metadata | Read |\n| `salesforce_get_all_fields_for_object` | Retrieve all fields (standard and custom) for a Salesforce object | Read |\n| `salesforce_get_api` | Discover available REST API resources for a specified Salesforce API version | Read |\n| `salesforce_get_org_limits` | Retrieve organization limits with max and remaining allocations | Read |\n| `salesforce_get_record_counts` | Get total record counts for specified Salesforce objects | Read |\n| `salesforce_get_object_list_views` | Discover available filtered views of records for an object | Read |\n| `salesforce_get_compact_layouts` | Retrieve compact layout information for multiple Salesforce objects | Read |\n\n### List Views & Records\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_list_view_results` | Retrieve results of a list view for a specified sObject (2,000 record limit) | Read |\n| `salesforce_get_list_view_records_by_id` | Return record data for a list view by its ID | Read |\n| `salesforce_get_list_view_records_by_name` | Retrieve paginated records matching a list view's filters and sorting | Read |\n| `salesforce_get_mru_list_view_records` | Get records from the most recently used (MRU) list view for an object | Read |\n| `salesforce_get_child_records` | Get child records for a parent record and child relationship name | Read |\n| `salesforce_get_related_list_records_contacts` | Retrieve related list records with filtering and pagination parameters | Read |\n\n### Reports & Dashboards\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_dashboard` | Get detailed metadata for a specific dashboard (components, layout, filters) | Read |\n\n### Custom Fields & Objects\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_custom_field` | Create a custom field on a Salesforce object using the Tooling API | Write |\n| `salesforce_create_custom_object` | Create a custom object in Salesforce using the Metadata API | Write |\n\n## Code Examples\n\n### Get an account by ID\n\n```bash\nclawlink_call_tool --tool \"salesforce_get_account\" \\\n  --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n```\n\n### Create a new lead\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_lead\" \\\n  --params '{\n    \"last_name\": \"Smith\",\n    \"company\": \"Acme Corp\",\n    \"email\": \"alice@acme.com\",\n    \"lead_source\": \"Web\"\n  }'\n```\n\n### Create a task\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_task\" \\\n  --params '{\n    \"subject\": \"Follow up with Alice\",\n    \"status\": \"Not Started\",\n    \"priority\": \"High\",\n    \"who_id\": \"CONTACT_ID\",\n    \"what_id\": \"ACCOUNT_ID\"\n  }'\n```\n\n### Search for contacts with SOSL\n\n```bash\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" \\\n  --params '{\"query\": \"FIND {Alice*} RETURNING Contact(Id, Name, Email)\"}'\n```\n\n### Clone a record\n\n```bash\nclawlink_call_tool --tool \"salesforce_clone_record\" \\\n  --params '{\"record_id\": \"YOUR_RECORD_ID\"}'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Salesforce is connected.\n2. Call `clawlink_list_tools --integration salesforce` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `salesforce`.\n5. If no Salesforce tools appear, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → describe → call                      │\n│                                                             │\n│  Example: Get account → List contacts → Show results         │\n└─────────────────────────────────────────────────────────────┘\n                               │\n                               ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview changes → User approves   │\n│           → Execute create                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer read, list, search, and get operations before writes when that reduces ambiguity.\n4. For writes or anything marked as requiring confirmation, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- SOQL queries (`salesforce_query`) return JSON results; SOSL searches (`salesforce_execute_sosl_search`) return search result objects.\n- IDs for records must reference existing records — names or emails cannot be substituted for IDs in create operations.\n- Org-level validation rules may require additional fields beyond the tool's documented minimums — check error responses for failing fields.\n- The Bulk API v2 requires closing (`state: UploadComplete`) or aborting (`state: Aborted`) ingest jobs for processing to begin.\n- SOQL date literals: `LAST_N_DAYS:n`, `NEXT_N_DAYS:n`, `THIS_WEEK`, `THIS_MONTH`, `THIS_QUARTER`, `THIS_YEAR`.\n- `sObject` names in tool parameters use the API name (e.g., `Account`, `Contact`, `Lead`, `Opportunity`).\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration salesforce`. |\n| Missing connection | Salesforce is not connected. Direct the user to https://claw-link.dev/dashboard?add=salesforce. |\n| `INVALID_FIELD` | The specified field does not exist on the sObject. Use `salesforce_get_all_fields_for_object` to discover valid fields. |\n| `INVALID_ID` | The provided record ID does not exist or is not accessible. |\n| `REQUIRED_FIELD_MISSING` | A required field is missing from the request. Check the tool schema with `clawlink_describe_tool`. |\n| `ENTITY_IS_DELETED` | The target record has been deleted and cannot be modified. |\n| `WRITE_REJECTED` | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `salesforce`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n4. Verify record IDs exist before using them in write operations — use read tools to confirm IDs first.\n\n## Resources\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- ClawLink: https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n## Related Skills\n\n- [HubSpot CRM](https://clawhub.ai/hith3sh/hubspot-crm) — For inbound marketing and CRM\n- [Microsoft Dynamics 365](https://clawhub.ai/hith3sh/microsoft-dynamics-365) — For Microsoft CRM integration\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1780989434817\n}\n\nFile v1.0.5:skill-card.md\n\n## Description:\n\nSalesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hith3sh](https://clawhub.ai/user/hith3sh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSales and operations users use this skill to work with Salesforce CRM records, queries, reports, files, and metadata from an agent conversation. It supports read workflows and write workflows for accounts, contacts, leads, opportunities, campaigns, tasks, notes, files, SObjects, bulk jobs, custom fields, and custom objects.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires installing and allowlisting a third-party ClawLink plugin that can access and change sensitive Salesforce CRM data.\n\nMitigation: Review the ClawLink plugin publisher and package provenance before installing, and allow only the plugin needed for this Salesforce workflow.\n\nRisk: Salesforce OAuth access may expose more CRM data or write capability than the user intends.\n\nMitigation: Connect Salesforce with the narrowest OAuth scopes practical and revoke the Salesforce OAuth connection if it is no longer needed.\n\nRisk: Create, update, delete, clone, bulk, and custom object actions can modify or remove Salesforce records.\n\nMitigation: Use preview and explicit confirmation before write or destructive operations, and verify target record IDs before execution.\n\n## Reference(s):\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops)\n- [ClawLink Docs](https://docs.claw-link.dev/openclaw)\n- [ClawLink Verification](https://claw-link.dev/verify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance, API calls]\n\n**Output Format:** [Markdown with inline bash commands and JSON parameters]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs may include Salesforce record data, query results, previews for write actions, connection guidance, and troubleshooting steps.]\n\n## Skill Version(s):\n\n1.0.5 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.4: 3 files, 8038 bytes\n\nFiles: skill-card.md (3240b), SKILL.md (21094b), _meta.json (133b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n---\n\n# Salesforce\n\n![Salesforce](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/salesforce.svg)\n\nConnect to Salesforce to manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, and SObject records. Query data with SOQL, create and update records, manage files and attachments, and work with Salesforce objects via the REST API.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Salesforce OAuth access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Salesforce |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Salesforce |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Salesforce again.\"\n\n## Quick Start\n\n```bash\n# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across objects with SOSL\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" --params '{\"query\": \"FIND {Alice*} RETURNING Contact\"}'\n\n# Create a new lead\nclawlink_call_tool --tool \"salesforce_create_lead\" --params '{\"last_name\": \"Smith\", \"company\": \"Acme Corp\", \"email\": \"alice@acme.com\"}'\n```\n\n## Authentication\n\nAll Salesforce tool calls are authenticated automatically by ClawLink using the user's connected Salesforce account via OAuth.\n\n**No OAuth setup is required in chat.** ClawLink manages the OAuth flow and token refresh automatically.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=salesforce and connect Salesforce via OAuth.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `salesforce` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration salesforce\n```\n\n**Response:** Returns the live tool catalog for Salesforce.\n\n### Reconnect\n\nIf Salesforce tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=salesforce\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration salesforce`\n\n## Security & Permissions\n\n- Access is scoped to the Salesforce org and OAuth scopes granted during connection.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Destructive actions (delete account, delete lead, delete opportunity) are marked as high-impact and must be confirmed.\n- SOQL and SOSL queries read data without modification — no confirmation required for read operations.\n\n## Tool Reference\n\n### Account Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_account` | Retrieve a specific account by ID with all available fields | Read |\n| `salesforce_create_account` | Create a new account in Salesforce (returns ID at `data.response_data.id`) | Write |\n| `salesforce_delete_account` | Permanently delete an account from Salesforce | Write |\n| `salesforce_associate_contact_to_account` | Associate a contact with an account by updating its AccountId field | Write |\n\n### Contact & Lead Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_contact` | Retrieve a specific contact by ID with all available fields | Read |\n| `salesforce_get_lead` | Retrieve a specific lead by ID with all available fields | Read |\n| `salesforce_create_contact` | Create a new contact in Salesforce | Write |\n| `salesforce_create_lead` | Create a new lead (`LastName` and `Company` required; org validation may require additional fields) | Write |\n| `salesforce_delete_contact` | Permanently delete a contact from Salesforce | Write |\n| `salesforce_delete_lead` | Permanently delete a lead from Salesforce | Write |\n| `salesforce_add_contact_to_campaign` | Add a contact to a campaign by creating a CampaignMember record | Write |\n| `salesforce_add_lead_to_campaign` | Add a lead to a campaign (both IDs must reference active, existing records) | Write |\n| `salesforce_apply_lead_assignment_rules` | Apply configured lead assignment rules to route a lead to the appropriate owner | Write |\n\n### Opportunity Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_opportunity` | Retrieve a specific opportunity by ID with all available fields | Read |\n| `salesforce_create_opportunity` | Create a new opportunity in Salesforce | Write |\n| `salesforce_delete_opportunity` | Permanently delete an opportunity from Salesforce | Write |\n| `salesforce_clone_opportunity_with_products` | Clone an opportunity and optionally its line items | Write |\n| `salesforce_add_opportunity_line_item` | Add a product (line item) to an opportunity | Write |\n\n### Campaign Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_campaign` | Retrieve a specific campaign by ID with all available fields | Read |\n| `salesforce_create_campaign` | Create a new campaign (`name` required; `type`, `status`, `start_date`, `end_date` often required by org validation) | Write |\n| `salesforce_delete_campaign` | Permanently delete a campaign from Salesforce | Write |\n\n### Task Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_task` | Create a new task to track activities related to contacts, leads, or other records | Write |\n| `salesforce_complete_task` | Mark a task as completed with optional completion notes | Write |\n\n### Notes & Attachments\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_note` | Retrieve a specific note by ID (private notes require sufficient permissions) | Read |\n| `salesforce_create_note` | Create a new note attached to a Salesforce record (no deduplication — identical calls create duplicates) | Write |\n| `salesforce_delete_note` | Permanently delete a note from Salesforce | Write |\n\n### Files & Collaboration\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_file_information` | Retrieve comprehensive metadata for a file (ownership, sharing, download URLs, rendition status) | Read |\n| `salesforce_get_file_content` | Return binary content of a Salesforce file for download or retrieval | Read |\n| `salesforce_get_file_shares` | Get information about objects with which a file has been shared | Read |\n| `salesforce_delete_file` | Permanently delete a file from Salesforce | Write |\n| `salesforce_get_chatter_resources` | Access Chatter resources directory (feeds, groups, users, emojis, streams) | Read |\n\n### Search & Query\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_execute_sosl_search` | Execute a SOSL search to search across multiple Salesforce objects simultaneously | Read |\n| `salesforce_get_query_job_results` | Retrieve results for a completed Bulk API v2 query job in CSV format | Read |\n| `salesforce_get_sobject_by_external_id` | Retrieve a Salesforce record by matching an external ID field value | Read |\n\n### SObject & Record Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_s_object_record` | Retrieve a single Salesforce record by ID from any sObject type | Read |\n| `salesforce_get_a_batch_of_records` | Retrieve multiple Salesforce records in a single request (up to 200 records) | Read |\n| `salesforce_create_s_object_record` | Create a new record of any standard or custom Salesforce object type | Write |\n| `salesforce_delete_sobject` | Delete a single Salesforce record by its ID (idempotent — deleting same record multiple times returns success) | Write |\n| `salesforce_delete_sobject_collections` | Delete up to 200 records in one request with optional rollback | Write |\n| `salesforce_clone_record` | Clone an existing Salesforce record (optionally apply field updates to the clone) | Write |\n| `salesforce_create_sobject_tree` | Create nested parent-child record hierarchies in a single atomic operation (up to 200 records, 5 levels deep) | Write |\n| `salesforce_execute_sobject_quick_action` | Execute a specific quick action on an sObject to create records with pre-configured defaults | Write |\n\n### Bulk Data Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_job_failed_record_results` | Get records that failed during a Bulk API 2.0 ingest operation | Read |\n| `salesforce_get_job_successful_record_results` | Get records successfully processed during a bulk operation | Read |\n| `salesforce_get_job_unprocessed_record_results` | Get records not processed during a bulk operation (job aborted or interrupted) | Read |\n| `salesforce_close_or_abort_job` | Close (state: UploadComplete) or abort (state: Aborted) a Bulk API v2 ingest job | Write |\n\n### Metadata & Discovery\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_all_custom_objects` | Retrieve all Salesforce objects (standard and custom) with metadata | Read |\n| `salesforce_get_all_fields_for_object` | Retrieve all fields (standard and custom) for a Salesforce object | Read |\n| `salesforce_get_api` | Discover available REST API resources for a specified Salesforce API version | Read |\n| `salesforce_get_org_limits` | Retrieve organization limits with max and remaining allocations | Read |\n| `salesforce_get_record_counts` | Get total record counts for specified Salesforce objects | Read |\n| `salesforce_get_object_list_views` | Discover available filtered views of records for an object | Read |\n| `salesforce_get_compact_layouts` | Retrieve compact layout information for multiple Salesforce objects | Read |\n\n### List Views & Records\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_list_view_results` | Retrieve results of a list view for a specified sObject (2,000 record limit) | Read |\n| `salesforce_get_list_view_records_by_id` | Return record data for a list view by its ID | Read |\n| `salesforce_get_list_view_records_by_name` | Retrieve paginated records matching a list view's filters and sorting | Read |\n| `salesforce_get_mru_list_view_records` | Get records from the most recently used (MRU) list view for an object | Read |\n| `salesforce_get_child_records` | Get child records for a parent record and child relationship name | Read |\n| `salesforce_get_related_list_records_contacts` | Retrieve related list records with filtering and pagination parameters | Read |\n\n### Reports & Dashboards\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_dashboard` | Get detailed metadata for a specific dashboard (components, layout, filters) | Read |\n\n### Custom Fields & Objects\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_custom_field` | Create a custom field on a Salesforce object using the Tooling API | Write |\n| `salesforce_create_custom_object` | Create a custom object in Salesforce using the Metadata API | Write |\n\n## Code Examples\n\n### Get an account by ID\n\n```bash\nclawlink_call_tool --tool \"salesforce_get_account\" \\\n  --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n```\n\n### Create a new lead\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_lead\" \\\n  --params '{\n    \"last_name\": \"Smith\",\n    \"company\": \"Acme Corp\",\n    \"email\": \"alice@acme.com\",\n    \"lead_source\": \"Web\"\n  }'\n```\n\n### Create a task\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_task\" \\\n  --params '{\n    \"subject\": \"Follow up with Alice\",\n    \"status\": \"Not Started\",\n    \"priority\": \"High\",\n    \"who_id\": \"CONTACT_ID\",\n    \"what_id\": \"ACCOUNT_ID\"\n  }'\n```\n\n### Search for contacts with SOSL\n\n```bash\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" \\\n  --params '{\"query\": \"FIND {Alice*} RETURNING Contact(Id, Name, Email)\"}'\n```\n\n### Clone a record\n\n```bash\nclawlink_call_tool --tool \"salesforce_clone_record\" \\\n  --params '{\"record_id\": \"YOUR_RECORD_ID\"}'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Salesforce is connected.\n2. Call `clawlink_list_tools --integration salesforce` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `salesforce`.\n5. If no Salesforce tools appear, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → describe → call                      │\n│                                                             │\n│  Example: Get account → List contacts → Show results         │\n└─────────────────────────────────────────────────────────────┘\n                               │\n                               ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview changes → User approves   │\n│           → Execute create                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer read, list, search, and get operations before writes when that reduces ambiguity.\n4. For writes or anything marked as requiring confirmation, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- SOQL queries (`salesforce_query`) return JSON results; SOSL searches (`salesforce_execute_sosl_search`) return search result objects.\n- IDs for records must reference existing records — names or emails cannot be substituted for IDs in create operations.\n- Org-level validation rules may require additional fields beyond the tool's documented minimums — check error responses for failing fields.\n- The Bulk API v2 requires closing (`state: UploadComplete`) or aborting (`state: Aborted`) ingest jobs for processing to begin.\n- SOQL date literals: `LAST_N_DAYS:n`, `NEXT_N_DAYS:n`, `THIS_WEEK`, `THIS_MONTH`, `THIS_QUARTER`, `THIS_YEAR`.\n- `sObject` names in tool parameters use the API name (e.g., `Account`, `Contact`, `Lead`, `Opportunity`).\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration salesforce`. |\n| Missing connection | Salesforce is not connected. Direct the user to https://claw-link.dev/dashboard?add=salesforce. |\n| `INVALID_FIELD` | The specified field does not exist on the sObject. Use `salesforce_get_all_fields_for_object` to discover valid fields. |\n| `INVALID_ID` | The provided record ID does not exist or is not accessible. |\n| `REQUIRED_FIELD_MISSING` | A required field is missing from the request. Check the tool schema with `clawlink_describe_tool`. |\n| `ENTITY_IS_DELETED` | The target record has been deleted and cannot be modified. |\n| `WRITE_REJECTED` | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `salesforce`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n4. Verify record IDs exist before using them in write operations — use read tools to confirm IDs first.\n\n## Resources\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n## Related Skills\n\n- [HubSpot CRM](https://clawhub.ai/hith3sh/hubspot-crm) — For inbound marketing and CRM\n- [Microsoft Dynamics 365](https://clawhub.ai/hith3sh/microsoft-dynamics-365) — For Microsoft CRM integration\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1780981438381\n}\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nSalesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nSales, support, operations, and CRM teams use this skill to work with Salesforce data through an agent, including reading records, running SOQL or SOSL searches, and creating or updating CRM objects after confirmation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can perform Salesforce write or destructive actions when the connected account has permission. <br>\nMitigation: Preview and confirm every create, update, delete, clone, bulk, or other write operation before execution, including the target record and expected effect. <br>\nRisk: Salesforce access depends on OAuth credentials and the scopes granted to the connected account. <br>\nMitigation: Use only the intended ClawLink Salesforce connection and avoid approving access or account changes unless they match the user's requested task. <br>\nRisk: Invalid object names, field names, IDs, or organization validation rules can cause failed or unintended Salesforce requests. <br>\nMitigation: Use discovery, describe, list, get, and preview flows before writes, and verify record IDs and field schemas against the live Salesforce catalog. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Salesforce Skill](https://clawhub.ai/hith3sh/salesforce-ops) <br>\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/) <br>\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm) <br>\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm) <br>\n- [Salesforce SObject REST Resources](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm) <br>\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm) <br>\n- [ClawLink Documentation](https://docs.claw-link.dev/openclaw) <br>\n- [ClawLink Verification](https://claw-link.dev/verify) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, API calls, text] <br>\n**Output Format:** [Markdown with inline shell commands and JSON tool parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a connected Salesforce account through ClawLink OAuth; write and destructive operations require explicit user confirmation.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 3 files, 7997 bytes\n\nFiles: skill-card.md (3162b), SKILL.md (21094b), _meta.json (133b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n---\n\n# Salesforce\n\n![Salesforce](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/salesforce.svg)\n\nConnect to Salesforce to manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, and SObject records. Query data with SOQL, create and update records, manage files and attachments, and work with Salesforce objects via the REST API.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Salesforce OAuth access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Salesforce |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Salesforce |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Salesforce again.\"\n\n## Quick Start\n\n```bash\n# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across objects with SOSL\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" --params '{\"query\": \"FIND {Alice*} RETURNING Contact\"}'\n\n# Create a new lead\nclawlink_call_tool --tool \"salesforce_create_lead\" --params '{\"last_name\": \"Smith\", \"company\": \"Acme Corp\", \"email\": \"alice@acme.com\"}'\n```\n\n## Authentication\n\nAll Salesforce tool calls are authenticated automatically by ClawLink using the user's connected Salesforce account via OAuth.\n\n**No OAuth setup is required in chat.** ClawLink manages the OAuth flow and token refresh automatically.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=salesforce and connect Salesforce via OAuth.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `salesforce` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration salesforce\n```\n\n**Response:** Returns the live tool catalog for Salesforce.\n\n### Reconnect\n\nIf Salesforce tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=salesforce\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration salesforce`\n\n## Security & Permissions\n\n- Access is scoped to the Salesforce org and OAuth scopes granted during connection.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Destructive actions (delete account, delete lead, delete opportunity) are marked as high-impact and must be confirmed.\n- SOQL and SOSL queries read data without modification — no confirmation required for read operations.\n\n## Tool Reference\n\n### Account Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_account` | Retrieve a specific account by ID with all available fields | Read |\n| `salesforce_create_account` | Create a new account in Salesforce (returns ID at `data.response_data.id`) | Write |\n| `salesforce_delete_account` | Permanently delete an account from Salesforce | Write |\n| `salesforce_associate_contact_to_account` | Associate a contact with an account by updating its AccountId field | Write |\n\n### Contact & Lead Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_contact` | Retrieve a specific contact by ID with all available fields | Read |\n| `salesforce_get_lead` | Retrieve a specific lead by ID with all available fields | Read |\n| `salesforce_create_contact` | Create a new contact in Salesforce | Write |\n| `salesforce_create_lead` | Create a new lead (`LastName` and `Company` required; org validation may require additional fields) | Write |\n| `salesforce_delete_contact` | Permanently delete a contact from Salesforce | Write |\n| `salesforce_delete_lead` | Permanently delete a lead from Salesforce | Write |\n| `salesforce_add_contact_to_campaign` | Add a contact to a campaign by creating a CampaignMember record | Write |\n| `salesforce_add_lead_to_campaign` | Add a lead to a campaign (both IDs must reference active, existing records) | Write |\n| `salesforce_apply_lead_assignment_rules` | Apply configured lead assignment rules to route a lead to the appropriate owner | Write |\n\n### Opportunity Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_opportunity` | Retrieve a specific opportunity by ID with all available fields | Read |\n| `salesforce_create_opportunity` | Create a new opportunity in Salesforce | Write |\n| `salesforce_delete_opportunity` | Permanently delete an opportunity from Salesforce | Write |\n| `salesforce_clone_opportunity_with_products` | Clone an opportunity and optionally its line items | Write |\n| `salesforce_add_opportunity_line_item` | Add a product (line item) to an opportunity | Write |\n\n### Campaign Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_campaign` | Retrieve a specific campaign by ID with all available fields | Read |\n| `salesforce_create_campaign` | Create a new campaign (`name` required; `type`, `status`, `start_date`, `end_date` often required by org validation) | Write |\n| `salesforce_delete_campaign` | Permanently delete a campaign from Salesforce | Write |\n\n### Task Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_task` | Create a new task to track activities related to contacts, leads, or other records | Write |\n| `salesforce_complete_task` | Mark a task as completed with optional completion notes | Write |\n\n### Notes & Attachments\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_note` | Retrieve a specific note by ID (private notes require sufficient permissions) | Read |\n| `salesforce_create_note` | Create a new note attached to a Salesforce record (no deduplication — identical calls create duplicates) | Write |\n| `salesforce_delete_note` | Permanently delete a note from Salesforce | Write |\n\n### Files & Collaboration\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_file_information` | Retrieve comprehensive metadata for a file (ownership, sharing, download URLs, rendition status) | Read |\n| `salesforce_get_file_content` | Return binary content of a Salesforce file for download or retrieval | Read |\n| `salesforce_get_file_shares` | Get information about objects with which a file has been shared | Read |\n| `salesforce_delete_file` | Permanently delete a file from Salesforce | Write |\n| `salesforce_get_chatter_resources` | Access Chatter resources directory (feeds, groups, users, emojis, streams) | Read |\n\n### Search & Query\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_execute_sosl_search` | Execute a SOSL search to search across multiple Salesforce objects simultaneously | Read |\n| `salesforce_get_query_job_results` | Retrieve results for a completed Bulk API v2 query job in CSV format | Read |\n| `salesforce_get_sobject_by_external_id` | Retrieve a Salesforce record by matching an external ID field value | Read |\n\n### SObject & Record Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_s_object_record` | Retrieve a single Salesforce record by ID from any sObject type | Read |\n| `salesforce_get_a_batch_of_records` | Retrieve multiple Salesforce records in a single request (up to 200 records) | Read |\n| `salesforce_create_s_object_record` | Create a new record of any standard or custom Salesforce object type | Write |\n| `salesforce_delete_sobject` | Delete a single Salesforce record by its ID (idempotent — deleting same record multiple times returns success) | Write |\n| `salesforce_delete_sobject_collections` | Delete up to 200 records in one request with optional rollback | Write |\n| `salesforce_clone_record` | Clone an existing Salesforce record (optionally apply field updates to the clone) | Write |\n| `salesforce_create_sobject_tree` | Create nested parent-child record hierarchies in a single atomic operation (up to 200 records, 5 levels deep) | Write |\n| `salesforce_execute_sobject_quick_action` | Execute a specific quick action on an sObject to create records with pre-configured defaults | Write |\n\n### Bulk Data Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_job_failed_record_results` | Get records that failed during a Bulk API 2.0 ingest operation | Read |\n| `salesforce_get_job_successful_record_results` | Get records successfully processed during a bulk operation | Read |\n| `salesforce_get_job_unprocessed_record_results` | Get records not processed during a bulk operation (job aborted or interrupted) | Read |\n| `salesforce_close_or_abort_job` | Close (state: UploadComplete) or abort (state: Aborted) a Bulk API v2 ingest job | Write |\n\n### Metadata & Discovery\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_all_custom_objects` | Retrieve all Salesforce objects (standard and custom) with metadata | Read |\n| `salesforce_get_all_fields_for_object` | Retrieve all fields (standard and custom) for a Salesforce object | Read |\n| `salesforce_get_api` | Discover available REST API resources for a specified Salesforce API version | Read |\n| `salesforce_get_org_limits` | Retrieve organization limits with max and remaining allocations | Read |\n| `salesforce_get_record_counts` | Get total record counts for specified Salesforce objects | Read |\n| `salesforce_get_object_list_views` | Discover available filtered views of records for an object | Read |\n| `salesforce_get_compact_layouts` | Retrieve compact layout information for multiple Salesforce objects | Read |\n\n### List Views & Records\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_list_view_results` | Retrieve results of a list view for a specified sObject (2,000 record limit) | Read |\n| `salesforce_get_list_view_records_by_id` | Return record data for a list view by its ID | Read |\n| `salesforce_get_list_view_records_by_name` | Retrieve paginated records matching a list view's filters and sorting | Read |\n| `salesforce_get_mru_list_view_records` | Get records from the most recently used (MRU) list view for an object | Read |\n| `salesforce_get_child_records` | Get child records for a parent record and child relationship name | Read |\n| `salesforce_get_related_list_records_contacts` | Retrieve related list records with filtering and pagination parameters | Read |\n\n### Reports & Dashboards\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_dashboard` | Get detailed metadata for a specific dashboard (components, layout, filters) | Read |\n\n### Custom Fields & Objects\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_custom_field` | Create a custom field on a Salesforce object using the Tooling API | Write |\n| `salesforce_create_custom_object` | Create a custom object in Salesforce using the Metadata API | Write |\n\n## Code Examples\n\n### Get an account by ID\n\n```bash\nclawlink_call_tool --tool \"salesforce_get_account\" \\\n  --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n```\n\n### Create a new lead\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_lead\" \\\n  --params '{\n    \"last_name\": \"Smith\",\n    \"company\": \"Acme Corp\",\n    \"email\": \"alice@acme.com\",\n    \"lead_source\": \"Web\"\n  }'\n```\n\n### Create a task\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_task\" \\\n  --params '{\n    \"subject\": \"Follow up with Alice\",\n    \"status\": \"Not Started\",\n    \"priority\": \"High\",\n    \"who_id\": \"CONTACT_ID\",\n    \"what_id\": \"ACCOUNT_ID\"\n  }'\n```\n\n### Search for contacts with SOSL\n\n```bash\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" \\\n  --params '{\"query\": \"FIND {Alice*} RETURNING Contact(Id, Name, Email)\"}'\n```\n\n### Clone a record\n\n```bash\nclawlink_call_tool --tool \"salesforce_clone_record\" \\\n  --params '{\"record_id\": \"YOUR_RECORD_ID\"}'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Salesforce is connected.\n2. Call `clawlink_list_tools --integration salesforce` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `salesforce`.\n5. If no Salesforce tools appear, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → describe → call                      │\n│                                                             │\n│  Example: Get account → List contacts → Show results         │\n└─────────────────────────────────────────────────────────────┘\n                               │\n                               ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview changes → User approves   │\n│           → Execute create                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer read, list, search, and get operations before writes when that reduces ambiguity.\n4. For writes or anything marked as requiring confirmation, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- SOQL queries (`salesforce_query`) return JSON results; SOSL searches (`salesforce_execute_sosl_search`) return search result objects.\n- IDs for records must reference existing records — names or emails cannot be substituted for IDs in create operations.\n- Org-level validation rules may require additional fields beyond the tool's documented minimums — check error responses for failing fields.\n- The Bulk API v2 requires closing (`state: UploadComplete`) or aborting (`state: Aborted`) ingest jobs for processing to begin.\n- SOQL date literals: `LAST_N_DAYS:n`, `NEXT_N_DAYS:n`, `THIS_WEEK`, `THIS_MONTH`, `THIS_QUARTER`, `THIS_YEAR`.\n- `sObject` names in tool parameters use the API name (e.g., `Account`, `Contact`, `Lead`, `Opportunity`).\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration salesforce`. |\n| Missing connection | Salesforce is not connected. Direct the user to https://claw-link.dev/dashboard?add=salesforce. |\n| `INVALID_FIELD` | The specified field does not exist on the sObject. Use `salesforce_get_all_fields_for_object` to discover valid fields. |\n| `INVALID_ID` | The provided record ID does not exist or is not accessible. |\n| `REQUIRED_FIELD_MISSING` | A required field is missing from the request. Check the tool schema with `clawlink_describe_tool`. |\n| `ENTITY_IS_DELETED` | The target record has been deleted and cannot be modified. |\n| `WRITE_REJECTED` | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `salesforce`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n4. Verify record IDs exist before using them in write operations — use read tools to confirm IDs first.\n\n## Resources\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n## Related Skills\n\n- [HubSpot CRM](https://clawhub.ai/hith3sh/hubspot-crm) — For inbound marketing and CRM\n- [Microsoft Dynamics 365](https://clawhub.ai/hith3sh/microsoft-dynamics-365) — For Microsoft CRM integration\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1780936913670\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nSalesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nEmployees, operators, and developers use this skill to inspect and manage Salesforce CRM records through ClawLink-managed OAuth. It supports account, contact, lead, opportunity, campaign, task, report, SOQL, SOSL, SObject, file, and bulk data workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Salesforce OAuth access can expose CRM data and account permissions through the connected integration. <br>\nMitigation: Install only if ClawLink is trusted, review OAuth scopes during connection, and use the least-privileged Salesforce account practical. <br>\nRisk: Write or delete operations can create, modify, or permanently remove Salesforce records. <br>\nMitigation: Confirm the target resource and intended effect before any create, update, or delete call, and preview unfamiliar or high-impact operations first. <br>\nRisk: Incorrect Salesforce record IDs, fields, or object names can cause failed calls or unintended record targeting. <br>\nMitigation: Use read, list, describe, and field-discovery tools before writes, and verify IDs reference existing accessible records. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Salesforce skill page](https://clawhub.ai/hith3sh/salesforce-ops) <br>\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/) <br>\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm) <br>\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm) <br>\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm) <br>\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm) <br>\n- [ClawLink Docs](https://docs.claw-link.dev/openclaw) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, API calls, text, markdown] <br>\n**Output Format:** [Markdown with inline shell commands and JSON tool parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include Salesforce record identifiers, SOQL or SOSL queries, tool-call parameters, and confirmation prompts for write or delete operations.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.11: 3 files, 8033 bytes\n\nFiles: skill-card.md (3377b), SKILL.md (20977b), _meta.json (134b)\n\nFile v0.1.11:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n---\n\n# Salesforce\n\nConnect to Salesforce to manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, and SObject records. Query data with SOQL, create and update records, manage files and attachments, and work with Salesforce objects via the REST API.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Salesforce OAuth access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Salesforce |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Salesforce |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Salesforce again.\"\n\n## Quick Start\n\n```bash\n# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across objects with SOSL\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" --params '{\"query\": \"FIND {Alice*} RETURNING Contact\"}'\n\n# Create a new lead\nclawlink_call_tool --tool \"salesforce_create_lead\" --params '{\"last_name\": \"Smith\", \"company\": \"Acme Corp\", \"email\": \"alice@acme.com\"}'\n```\n\n## Authentication\n\nAll Salesforce tool calls are authenticated automatically by ClawLink using the user's connected Salesforce account via OAuth.\n\n**No OAuth setup is required in chat.** ClawLink manages the OAuth flow and token refresh automatically.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=salesforce and connect Salesforce via OAuth.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `salesforce` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration salesforce\n```\n\n**Response:** Returns the live tool catalog for Salesforce.\n\n### Reconnect\n\nIf Salesforce tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=salesforce\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration salesforce`\n\n## Security & Permissions\n\n- Access is scoped to the Salesforce org and OAuth scopes granted during connection.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Destructive actions (delete account, delete lead, delete opportunity) are marked as high-impact and must be confirmed.\n- SOQL and SOSL queries read data without modification — no confirmation required for read operations.\n\n## Tool Reference\n\n### Account Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_account` | Retrieve a specific account by ID with all available fields | Read |\n| `salesforce_create_account` | Create a new account in Salesforce (returns ID at `data.response_data.id`) | Write |\n| `salesforce_delete_account` | Permanently delete an account from Salesforce | Write |\n| `salesforce_associate_contact_to_account` | Associate a contact with an account by updating its AccountId field | Write |\n\n### Contact & Lead Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_contact` | Retrieve a specific contact by ID with all available fields | Read |\n| `salesforce_get_lead` | Retrieve a specific lead by ID with all available fields | Read |\n| `salesforce_create_contact` | Create a new contact in Salesforce | Write |\n| `salesforce_create_lead` | Create a new lead (`LastName` and `Company` required; org validation may require additional fields) | Write |\n| `salesforce_delete_contact` | Permanently delete a contact from Salesforce | Write |\n| `salesforce_delete_lead` | Permanently delete a lead from Salesforce | Write |\n| `salesforce_add_contact_to_campaign` | Add a contact to a campaign by creating a CampaignMember record | Write |\n| `salesforce_add_lead_to_campaign` | Add a lead to a campaign (both IDs must reference active, existing records) | Write |\n| `salesforce_apply_lead_assignment_rules` | Apply configured lead assignment rules to route a lead to the appropriate owner | Write |\n\n### Opportunity Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_opportunity` | Retrieve a specific opportunity by ID with all available fields | Read |\n| `salesforce_create_opportunity` | Create a new opportunity in Salesforce | Write |\n| `salesforce_delete_opportunity` | Permanently delete an opportunity from Salesforce | Write |\n| `salesforce_clone_opportunity_with_products` | Clone an opportunity and optionally its line items | Write |\n| `salesforce_add_opportunity_line_item` | Add a product (line item) to an opportunity | Write |\n\n### Campaign Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_campaign` | Retrieve a specific campaign by ID with all available fields | Read |\n| `salesforce_create_campaign` | Create a new campaign (`name` required; `type`, `status`, `start_date`, `end_date` often required by org validation) | Write |\n| `salesforce_delete_campaign` | Permanently delete a campaign from Salesforce | Write |\n\n### Task Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_task` | Create a new task to track activities related to contacts, leads, or other records | Write |\n| `salesforce_complete_task` | Mark a task as completed with optional completion notes | Write |\n\n### Notes & Attachments\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_note` | Retrieve a specific note by ID (private notes require sufficient permissions) | Read |\n| `salesforce_create_note` | Create a new note attached to a Salesforce record (no deduplication — identical calls create duplicates) | Write |\n| `salesforce_delete_note` | Permanently delete a note from Salesforce | Write |\n\n### Files & Collaboration\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_file_information` | Retrieve comprehensive metadata for a file (ownership, sharing, download URLs, rendition status) | Read |\n| `salesforce_get_file_content` | Return binary content of a Salesforce file for download or retrieval | Read |\n| `salesforce_get_file_shares` | Get information about objects with which a file has been shared | Read |\n| `salesforce_delete_file` | Permanently delete a file from Salesforce | Write |\n| `salesforce_get_chatter_resources` | Access Chatter resources directory (feeds, groups, users, emojis, streams) | Read |\n\n### Search & Query\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_execute_sosl_search` | Execute a SOSL search to search across multiple Salesforce objects simultaneously | Read |\n| `salesforce_get_query_job_results` | Retrieve results for a completed Bulk API v2 query job in CSV format | Read |\n| `salesforce_get_sobject_by_external_id` | Retrieve a Salesforce record by matching an external ID field value | Read |\n\n### SObject & Record Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_s_object_record` | Retrieve a single Salesforce record by ID from any sObject type | Read |\n| `salesforce_get_a_batch_of_records` | Retrieve multiple Salesforce records in a single request (up to 200 records) | Read |\n| `salesforce_create_s_object_record` | Create a new record of any standard or custom Salesforce object type | Write |\n| `salesforce_delete_sobject` | Delete a single Salesforce record by its ID (idempotent — deleting same record multiple times returns success) | Write |\n| `salesforce_delete_sobject_collections` | Delete up to 200 records in one request with optional rollback | Write |\n| `salesforce_clone_record` | Clone an existing Salesforce record (optionally apply field updates to the clone) | Write |\n| `salesforce_create_sobject_tree` | Create nested parent-child record hierarchies in a single atomic operation (up to 200 records, 5 levels deep) | Write |\n| `salesforce_execute_sobject_quick_action` | Execute a specific quick action on an sObject to create records with pre-configured defaults | Write |\n\n### Bulk Data Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_job_failed_record_results` | Get records that failed during a Bulk API 2.0 ingest operation | Read |\n| `salesforce_get_job_successful_record_results` | Get records successfully processed during a bulk operation | Read |\n| `salesforce_get_job_unprocessed_record_results` | Get records not processed during a bulk operation (job aborted or interrupted) | Read |\n| `salesforce_close_or_abort_job` | Close (state: UploadComplete) or abort (state: Aborted) a Bulk API v2 ingest job | Write |\n\n### Metadata & Discovery\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_all_custom_objects` | Retrieve all Salesforce objects (standard and custom) with metadata | Read |\n| `salesforce_get_all_fields_for_object` | Retrieve all fields (standard and custom) for a Salesforce object | Read |\n| `salesforce_get_api` | Discover available REST API resources for a specified Salesforce API version | Read |\n| `salesforce_get_org_limits` | Retrieve organization limits with max and remaining allocations | Read |\n| `salesforce_get_record_counts` | Get total record counts for specified Salesforce objects | Read |\n| `salesforce_get_object_list_views` | Discover available filtered views of records for an object | Read |\n| `salesforce_get_compact_layouts` | Retrieve compact layout information for multiple Salesforce objects | Read |\n\n### List Views & Records\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_list_view_results` | Retrieve results of a list view for a specified sObject (2,000 record limit) | Read |\n| `salesforce_get_list_view_records_by_id` | Return record data for a list view by its ID | Read |\n| `salesforce_get_list_view_records_by_name` | Retrieve paginated records matching a list view's filters and sorting | Read |\n| `salesforce_get_mru_list_view_records` | Get records from the most recently used (MRU) list view for an object | Read |\n| `salesforce_get_child_records` | Get child records for a parent record and child relationship name | Read |\n| `salesforce_get_related_list_records_contacts` | Retrieve related list records with filtering and pagination parameters | Read |\n\n### Reports & Dashboards\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_get_dashboard` | Get detailed metadata for a specific dashboard (components, layout, filters) | Read |\n\n### Custom Fields & Objects\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `salesforce_create_custom_field` | Create a custom field on a Salesforce object using the Tooling API | Write |\n| `salesforce_create_custom_object` | Create a custom object in Salesforce using the Metadata API | Write |\n\n## Code Examples\n\n### Get an account by ID\n\n```bash\nclawlink_call_tool --tool \"salesforce_get_account\" \\\n  --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n```\n\n### Create a new lead\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_lead\" \\\n  --params '{\n    \"last_name\": \"Smith\",\n    \"company\": \"Acme Corp\",\n    \"email\": \"alice@acme.com\",\n    \"lead_source\": \"Web\"\n  }'\n```\n\n### Create a task\n\n```bash\nclawlink_call_tool --tool \"salesforce_create_task\" \\\n  --params '{\n    \"subject\": \"Follow up with Alice\",\n    \"status\": \"Not Started\",\n    \"priority\": \"High\",\n    \"who_id\": \"CONTACT_ID\",\n    \"what_id\": \"ACCOUNT_ID\"\n  }'\n```\n\n### Search for contacts with SOSL\n\n```bash\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" \\\n  --params '{\"query\": \"FIND {Alice*} RETURNING Contact(Id, Name, Email)\"}'\n```\n\n### Clone a record\n\n```bash\nclawlink_call_tool --tool \"salesforce_clone_record\" \\\n  --params '{\"record_id\": \"YOUR_RECORD_ID\"}'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Salesforce is connected.\n2. Call `clawlink_list_tools --integration salesforce` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `salesforce`.\n5. If no Salesforce tools appear, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → describe → call                      │\n│                                                             │\n│  Example: Get account → List contacts → Show results         │\n└─────────────────────────────────────────────────────────────┘\n                               │\n                               ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview changes → User approves   │\n│           → Execute create                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer read, list, search, and get operations before writes when that reduces ambiguity.\n4. For writes or anything marked as requiring confirmation, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- SOQL queries (`salesforce_query`) return JSON results; SOSL searches (`salesforce_execute_sosl_search`) return search result objects.\n- IDs for records must reference existing records — names or emails cannot be substituted for IDs in create operations.\n- Org-level validation rules may require additional fields beyond the tool's documented minimums — check error responses for failing fields.\n- The Bulk API v2 requires closing (`state: UploadComplete`) or aborting (`state: Aborted`) ingest jobs for processing to begin.\n- SOQL date literals: `LAST_N_DAYS:n`, `NEXT_N_DAYS:n`, `THIS_WEEK`, `THIS_MONTH`, `THIS_QUARTER`, `THIS_YEAR`.\n- `sObject` names in tool parameters use the API name (e.g., `Account`, `Contact`, `Lead`, `Opportunity`).\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration salesforce`. |\n| Missing connection | Salesforce is not connected. Direct the user to https://claw-link.dev/dashboard?add=salesforce. |\n| `INVALID_FIELD` | The specified field does not exist on the sObject. Use `salesforce_get_all_fields_for_object` to discover valid fields. |\n| `INVALID_ID` | The provided record ID does not exist or is not accessible. |\n| `REQUIRED_FIELD_MISSING` | A required field is missing from the request. Check the tool schema with `clawlink_describe_tool`. |\n| `ENTITY_IS_DELETED` | The target record has been deleted and cannot be modified. |\n| `WRITE_REJECTED` | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `salesforce`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n4. Verify record IDs exist before using them in write operations — use read tools to confirm IDs first.\n\n## Resources\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n## Related Skills\n\n- [HubSpot CRM](https://clawhub.ai/hith3sh/hubspot-crm) — For inbound marketing and CRM\n- [Microsoft Dynamics 365](https://clawhub.ai/hith3sh/microsoft-dynamics-365) — For Microsoft CRM integration\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v0.1.11:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.11\",\n  \"publishedAt\": 1780839342158\n}\n\nFile v0.1.11:skill-card.md\n\n## Description: <br>\nSalesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nSales, customer-success, RevOps, and developer users can use this skill to inspect and manage Salesforce CRM data through a connected ClawLink account. It supports read workflows, record creation and updates, search, reports, object metadata, files, and bulk-operation follow-up when the user's Salesforce permissions allow those actions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires connecting a Salesforce account through ClawLink and enabling the ClawLink plugin in OpenClaw. <br>\nMitigation: Install only when that connection path is acceptable, review the OAuth scopes during connection, and verify the Salesforce integration is active before use. <br>\nRisk: Approved actions can create, update, delete, or bulk-modify Salesforce CRM records and files. <br>\nMitigation: Preview and confirm write or delete operations carefully, including the target resource and intended effect, before execution. <br>\nRisk: The skill can access sensitive CRM data according to the connected user's Salesforce permissions. <br>\nMitigation: Use an account with appropriate least-privilege Salesforce access and avoid requesting or exposing records outside the user's business need. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/hith3sh/salesforce-ops) <br>\n- [ClawHub Publisher Profile](https://clawhub.ai/user/hith3sh) <br>\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/) <br>\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm) <br>\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm) <br>\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm) <br>\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm) <br>\n- [ClawLink](https://claw-link.dev) <br>\n- [ClawLink Docs](https://docs.claw-link.dev/openclaw) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, API calls, Markdown] <br>\n**Output Format:** [Markdown with inline shell commands and JSON tool parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Tool calls operate through a connected Salesforce account and may return Salesforce records, metadata, files, reports, search results, or operation status.] <br>\n\n## Skill Version(s): <br>\n0.1.11 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.10: 3 files, 3667 bytes\n\nFiles: skill-card.md (2517b), SKILL.md (5244b), _meta.json (134b)\n\nFile v0.1.10:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Search Salesforce records, inspect objects, query CRM data, and work with accounts, contacts, leads, opportunities, and cases — powered by ClawLink.\n---\n\n# Salesforce via ClawLink\n\nWork with Salesforce CRM from chat — search records, manage contacts, leads, accounts, opportunities, cases, and more.\n\nPowered by [ClawLink](https://claw-link.dev), an integration hub for OpenClaw that handles hosted connection flows and credentials so you don't need to configure Salesforce API access yourself.\n\n## Quick start\n\n1. Install the verified ClawLink plugin: `openclaw plugins install clawhub:clawlink-plugin`\n2. Start a fresh OpenClaw chat if the plugin was just installed and ClawLink tools are not visible yet\n3. If ClawLink is not configured, call `clawlink_begin_pairing`\n4. Tell the user to open the returned pairing URL, sign in to ClawLink if needed, and approve the device\n5. After the user confirms approval, call `clawlink_get_pairing_status`\n6. Tell the user to connect Salesforce at [claw-link.dev/dashboard?add=salesforce](https://claw-link.dev/dashboard?add=salesforce)\n7. When the user confirms Salesforce is connected, call `clawlink_list_integrations` and then `clawlink_list_tools` with the `salesforce` integration slug\n\n## Setup details\n\n### Installing the plugin\n\nIf the ClawLink plugin is not installed yet, tell the user to run:\n\n```\nopenclaw plugins install clawhub:clawlink-plugin\n```\n\nIf the current chat started before the plugin was installed and ClawLink tools are still unavailable, tell the user to start a fresh chat so OpenClaw reloads the plugin tool catalog.\n\n### Pairing ClawLink\n\nIf ClawLink reports that the plugin is not configured, the plugin has not been paired with the user's ClawLink account yet.\n\n1. Call `clawlink_begin_pairing`.\n2. Tell the user to open the returned pairing URL in their browser.\n3. The user signs in to ClawLink if needed and approves the OpenClaw device.\n4. After the user confirms approval, call `clawlink_get_pairing_status` to finish local setup.\n\nThe resulting device credential is stored locally in OpenClaw's plugin config and is only sent to `claw-link.dev`. The user should not paste raw credentials into chat.\n\n### Connecting Salesforce\n\nTell the user to open https://claw-link.dev/dashboard?add=salesforce and connect Salesforce there. The page opens the add-connection panel filtered to Salesforce. ClawLink's hosted page runs the Salesforce connection flow — the user clicks through Salesforce sign-in and consent. When they confirm it is done, call `clawlink_list_integrations` to verify, then call `clawlink_list_tools` with integration `salesforce`.\n\n## Using Salesforce tools\n\nClawLink provides tools dynamically based on what the user has connected. You do not need to know tool names or schemas in advance.\n\n### Discovery\n\n1. Call `clawlink_list_integrations` to confirm Salesforce is connected.\n2. Call `clawlink_list_tools` with integration `salesforce`.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `salesforce`.\n5. If no Salesforce tools appear, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n\n### Execution\n\n1. Call `clawlink_describe_tool` before using an unfamiliar tool, before any write, or when the request is ambiguous.\n2. Use the returned schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups`.\n3. Prefer read, list, search, and get operations before writes.\n4. For record creates, updates, deletes, bulk actions, or anything marked as requiring confirmation, call `clawlink_preview_tool` first, then confirm with the user.\n5. Execute with `clawlink_call_tool`.\n6. If it fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## What you can do\n\nTypical Salesforce tasks (actual availability depends on the user's connected account, permissions, scopes, and current ClawLink tool catalog):\n\n- Find contacts, leads, or accounts by name or email\n- Search opportunities by customer or stage\n- Look up open cases\n- Inspect supported Salesforce objects\n- Create, update, or delete records when those actions are available\n- Run Salesforce queries when supported\n\n## Rules\n\n- Always use ClawLink tools for Salesforce. Do not ask the user for separate Salesforce credentials.\n- Do not claim a capability is missing without checking the live ClawLink catalog in the current turn.\n- Do not invent slash commands or ask the user to paste raw credentials.\n- Ask for confirmation before destructive, external-facing, or bulk write actions.\n- If Salesforce is not connected, direct the user to https://claw-link.dev/dashboard?add=salesforce.\n- Never echo or repeat the user's ClawLink credential.\n\n## Resources\n\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n- ClawLink Source: https://github.com/hith3sh/clawlink\n- Salesforce REST API: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest\n\nFile v0.1.10:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.10\",\n  \"publishedAt\": 1777753854971\n}\n\nFile v0.1.10:skill-card.md\n\n## Description: <br>\nSearch Salesforce records, inspect objects, query CRM data, and work with accounts, contacts, leads, opportunities, and cases - powered by ClawLink. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to connect OpenClaw to Salesforce through ClawLink, discover available Salesforce tools, and safely perform CRM searches, queries, and record operations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Salesforce access through ClawLink can expose CRM data or enable record changes if consent scopes or accounts are broader than intended. <br>\nMitigation: Install only when ClawLink is trusted, review Salesforce consent scopes, and prefer least-privilege Salesforce accounts. <br>\nRisk: Create, update, delete, bulk, or external-facing Salesforce actions can change CRM state. <br>\nMitigation: Preview risky ClawLink tool calls and approve them only when the proposed changes match the user's intent. <br>\nRisk: Raw credentials or pairing secrets could be exposed if pasted into chat or repeated in responses. <br>\nMitigation: Use the hosted ClawLink pairing and Salesforce connection flow, do not request raw Salesforce credentials, and never echo ClawLink credentials. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/hith3sh/salesforce-ops) <br>\n- [ClawLink](https://claw-link.dev) <br>\n- [ClawLink Docs](https://docs.claw-link.dev/openclaw) <br>\n- [ClawLink Verification](https://claw-link.dev/verify) <br>\n- [Salesforce REST API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration instructions] <br>\n**Output Format:** [Markdown with inline shell commands and ClawLink tool names] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses the live ClawLink tool catalog as the source of truth for available Salesforce actions.] <br>\n\n## Skill Version(s): <br>\n0.1.10 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.3: 2 files, 2186 bytes\n\nFiles: SKILL.md (4472b), _meta.json (133b)\n\nFile v0.1.3:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Search Salesforce records, inspect objects, query CRM data, and perform actions for accounts, contacts, leads, opportunities, and cases — powered by ClawLink.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - CLAWLINK_API_KEY\n    primaryEnv: CLAWLINK_API_KEY\n    homepage: https://claw-link.dev\n---\n\n# Salesforce via ClawLink\n\nWork with Salesforce CRM from chat — search records, manage contacts, leads, accounts, opportunities, cases, and more.\n\nPowered by [ClawLink](https://claw-link.dev), an integration hub for OpenClaw that handles OAuth and credentials so you don't need to configure Salesforce API access yourself.\n\n## Quick start\n\n1. Install the ClawLink plugin: `openclaw plugins install @useclawlink/openclaw-plugin`\n2. Create a free account at [claw-link.dev](https://claw-link.dev)\n3. Get your API key at [claw-link.dev/dashboard/settings?tab=api](https://claw-link.dev/dashboard/settings?tab=api)\n4. The dashboard shows a ready-to-paste `/clawlink login <key>` command — copy it and paste it into OpenClaw\n5. Connect Salesforce from [claw-link.dev/dashboard](https://claw-link.dev/dashboard)\n6. Done — ask OpenClaw to work with your Salesforce data\n\n## Setup details\n\n### Installing the plugin\n\nIf the ClawLink plugin is not installed yet, tell the user to run:\n\n```\nopenclaw plugins install @useclawlink/openclaw-plugin\n```\n\n### Adding the API key\n\nIf ClawLink reports that the plugin is not configured, the user has not added their API key yet.\n\n1. Sign up or sign in at https://claw-link.dev\n2. Go to https://claw-link.dev/dashboard/settings?tab=api and create an API key\n3. The dashboard shows a ready-to-paste `/clawlink login <key>` command — tell the user to **copy that line from the dashboard and paste it into OpenClaw**. They are copy-pasting, not typing.\n4. Alternatively, if the OpenClaw client shows a plugin settings UI, they can paste the key into the `apiKey` field.\n\nThe key is stored locally in `~/.openclaw/openclaw.json` and is only sent to `claw-link.dev`. Never echo or repeat the key.\n\n### Connecting Salesforce\n\nTell the user to open https://claw-link.dev/dashboard and connect Salesforce there. The dashboard handles OAuth — the user clicks through the Salesforce login and grant screen. When they confirm it is done, call `clawlink_list_integrations` to verify.\n\n## Using Salesforce tools\n\nClawLink provides tools dynamically based on what the user has connected. You do not need to know the tool names in advance.\n\n### Discovery (always start here)\n\n1. Call `clawlink_list_tools` to see available Salesforce tools.\n2. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n3. If no Salesforce tools appear, call `clawlink_list_integrations` to check whether Salesforce is connected.\n4. If it is not connected, direct the user to the dashboard.\n\n### Execution\n\n1. Call `clawlink_describe_tool` before using an unfamiliar tool, before any write, or when the request is ambiguous.\n2. Prefer read and search operations before writes.\n3. For writes or destructive actions, call `clawlink_preview_tool` first, then confirm with the user.\n4. Execute with `clawlink_call_tool`.\n5. If it fails, report the real error — do not invent results.\n\n## What you can do\n\nTypical Salesforce tasks (actual availability depends on the user's connected account and permissions):\n\n- Find contacts, leads, or accounts by name or email\n- Search opportunities by customer or stage\n- Look up open cases\n- Inspect supported Salesforce objects\n- Create, update, or delete records when those actions are available\n- Run SOQL-style queries when supported\n\n## Rules\n\n- Always use ClawLink tools for Salesforce. Do not ask the user for separate Salesforce credentials.\n- Do not claim a capability is missing without calling `clawlink_list_tools` first.\n- Do not invent slash commands. The only slash command is the copy-pasted `/clawlink login <key>` during setup.\n- Ask for confirmation before destructive or bulk write actions.\n- If Salesforce is not connected, direct the user to https://claw-link.dev/dashboard.\n- Never echo or repeat the user's API key.\n\n## Resources\n\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- npm: https://www.npmjs.com/package/@useclawlink/openclaw-plugin\n- Source: https://github.com/hith3sh/clawlink\n- Salesforce REST API: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest\n\nFile v0.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.3\",\n  \"publishedAt\": 1777485789524\n}\n\nArchive v0.1.2: 2 files, 2186 bytes\n\nFiles: SKILL.md (4472b), _meta.json (133b)\n\nFile v0.1.2:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Search Salesforce records, inspect objects, query CRM data, and perform actions for accounts, contacts, leads, opportunities, and cases — powered by ClawLink.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - CLAWLINK_API_KEY\n    primaryEnv: CLAWLINK_API_KEY\n    homepage: https://claw-link.dev\n---\n\n# Salesforce via ClawLink\n\nWork with Salesforce CRM from chat — search records, manage contacts, leads, accounts, opportunities, cases, and more.\n\nPowered by [ClawLink](https://claw-link.dev), an integration hub for OpenClaw that handles OAuth and credentials so you don't need to configure Salesforce API access yourself.\n\n## Quick start\n\n1. Install the ClawLink plugin: `openclaw plugins install @useclawlink/openclaw-plugin`\n2. Create a free account at [claw-link.dev](https://claw-link.dev)\n3. Get your API key at [claw-link.dev/dashboard/settings?tab=api](https://claw-link.dev/dashboard/settings?tab=api)\n4. The dashboard shows a ready-to-paste `/clawlink login <key>` command — copy it and paste it into OpenClaw\n5. Connect Salesforce from [claw-link.dev/dashboard](https://claw-link.dev/dashboard)\n6. Done — ask OpenClaw to work with your Salesforce data\n\n## Setup details\n\n### Installing the plugin\n\nIf the ClawLink plugin is not installed yet, tell the user to run:\n\n```\nopenclaw plugins install @useclawlink/openclaw-plugin\n```\n\n### Adding the API key\n\nIf ClawLink reports that the plugin is not configured, the user has not added their API key yet.\n\n1. Sign up or sign in at https://claw-link.dev\n2. Go to https://claw-link.dev/dashboard/settings?tab=api and create an API key\n3. The dashboard shows a ready-to-paste `/clawlink login <key>` command — tell the user to **copy that line from the dashboard and paste it into OpenClaw**. They are copy-pasting, not typing.\n4. Alternatively, if the OpenClaw client shows a plugin settings UI, they can paste the key into the `apiKey` field.\n\nThe key is stored locally in `~/.openclaw/openclaw.json` and is only sent to `claw-link.dev`. Never echo or repeat the key.\n\n### Connecting Salesforce\n\nTell the user to open https://claw-link.dev/dashboard and connect Salesforce there. The dashboard handles OAuth — the user clicks through the Salesforce login and grant screen. When they confirm it is done, call `clawlink_list_integrations` to verify.\n\n## Using Salesforce tools\n\nClawLink provides tools dynamically based on what the user has connected. You do not need to know the tool names in advance.\n\n### Discovery (always start here)\n\n1. Call `clawlink_list_tools` to see available Salesforce tools.\n2. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n3. If no Salesforce tools appear, call `clawlink_list_integrations` to check whether Salesforce is connected.\n4. If it is not connected, direct the user to the dashboard.\n\n### Execution\n\n1. Call `clawlink_describe_tool` before using an unfamiliar tool, before any write, or when the request is ambiguous.\n2. Prefer read and search operations before writes.\n3. For writes or destructive actions, call `clawlink_preview_tool` first, then confirm with the user.\n4. Execute with `clawlink_call_tool`.\n5. If it fails, report the real error — do not invent results.\n\n## What you can do\n\nTypical Salesforce tasks (actual availability depends on the user's connected account and permissions):\n\n- Find contacts, leads, or accounts by name or email\n- Search opportunities by customer or stage\n- Look up open cases\n- Inspect supported Salesforce objects\n- Create, update, or delete records when those actions are available\n- Run SOQL-style queries when supported\n\n## Rules\n\n- Always use ClawLink tools for Salesforce. Do not ask the user for separate Salesforce credentials.\n- Do not claim a capability is missing without calling `clawlink_list_tools` first.\n- Do not invent slash commands. The only slash command is the copy-pasted `/clawlink login <key>` during setup.\n- Ask for confirmation before destructive or bulk write actions.\n- If Salesforce is not connected, direct the user to https://claw-link.dev/dashboard.\n- Never echo or repeat the user's API key.\n\n## Resources\n\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- npm: https://www.npmjs.com/package/@useclawlink/openclaw-plugin\n- Source: https://github.com/hith3sh/clawlink\n- Salesforce REST API: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest\n\nFile v0.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.2\",\n  \"publishedAt\": 1777485635518\n}\n\nArchive v0.1.1: 2 files, 2229 bytes\n\nFiles: SKILL.md (4576b), _meta.json (133b)\n\nFile v0.1.1:SKILL.md\n\n---\nname: salesforce-ops\ndescription: Search Salesforce records, inspect objects, query CRM data, and perform actions for accounts, contacts, leads, opportunities, and cases — powered by ClawLink.\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - CLAWLINK_API_KEY\n    primaryEnv: CLAWLINK_API_KEY\n    homepage: https://claw-link.dev\n---\n\n# Salesforce via ClawLink\n\nWork with Salesforce CRM from chat — search records, manage contacts, leads, accounts, opportunities, cases, and more.\n\nPowered by [ClawLink](https://claw-link.dev), an integration hub for OpenClaw that handles OAuth and credentials so you don't need to configure Salesforce API access yourself. Your first integration is free. Additional integrations require a ClawLink subscription (~$7.99/month).\n\n## Quick start\n\n1. Install the ClawLink plugin: `openclaw plugins install @useclawlink/openclaw-plugin`\n2. Create a free account at [claw-link.dev](https://claw-link.dev)\n3. Get your API key at [claw-link.dev/dashboard/settings?tab=api](https://claw-link.dev/dashboard/settings?tab=api)\n4. The dashboard shows a ready-to-paste `/clawlink login <key>` command — copy it and paste it into OpenClaw\n5. Connect Salesforce from [claw-link.dev/dashboard](https://claw-link.dev/dashboard)\n6. Done — ask OpenClaw to work with your Salesforce data\n\n## Setup details\n\n### Installing the plugin\n\nIf the ClawLink plugin is not installed yet, tell the user to run:\n\n```\nopenclaw plugins install @useclawlink/openclaw-plugin\n```\n\n### Adding the API key\n\nIf ClawLink reports that the plugin is not configured, the user has not added their API key yet.\n\n1. Sign up or sign in at https://claw-link.dev\n2. Go to https://claw-link.dev/dashboard/settings?tab=api and create an API key\n3. The dashboard shows a ready-to-paste `/clawlink login <key>` command — tell the user to **copy that line from the dashboard and paste it into OpenClaw**. They are copy-pasting, not typing.\n4. Alternatively, if the OpenClaw client shows a plugin settings UI, they can paste the key into the `apiKey` field.\n\nThe key is stored locally in `~/.openclaw/openclaw.json` and is only sent to `claw-link.dev`. Never echo or repeat the key.\n\n### Connecting Salesforce\n\nTell the user to open https://claw-link.dev/dashboard and connect Salesforce there. The dashboard handles OAuth — the user clicks through the Salesforce login and grant screen. When they confirm it is done, call `clawlink_list_integrations` to verify.\n\n## Using Salesforce tools\n\nClawLink provides tools dynamically based on what the user has connected. You do not need to know the tool names in advance.\n\n### Discovery (always start here)\n\n1. Call `clawlink_list_tools` to see available Salesforce tools.\n2. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n3. If no Salesforce tools appear, call `clawlink_list_integrations` to check whether Salesforce is connected.\n4. If it is not connected, direct the user to the dashboard.\n\n### Execution\n\n1. Call `clawlink_describe_tool` before using an unfamiliar tool, before any write, or when the request is ambiguous.\n2. Prefer read and search operations before writes.\n3. For writes or destructive actions, call `clawlink_preview_tool` first, then confirm with the user.\n4. Execute with `clawlink_call_tool`.\n5. If it fails, report the real error — do not invent results.\n\n## What you can do\n\nTypical Salesforce tasks (actual availability depends on the user's connected account and permissions):\n\n- Find contacts, leads, or accounts by name or email\n- Search opportunities by customer or stage\n- Look up open cases\n- Inspect supported Salesforce objects\n- Create, update, or delete records when those actions are available\n- Run SOQL-style queries when supported\n\n## Rules\n\n- Always use ClawLink tools for Salesforce. Do not ask the user for separate Salesforce credentials.\n- Do not claim a capability is missing without calling `clawlink_list_tools` first.\n- Do not invent slash commands. The only slash command is the copy-pasted `/clawlink login <key>` during setup.\n- Ask for confirmation before destructive or bulk write actions.\n- If Salesforce is not connected, direct the user to https://claw-link.dev/dashboard.\n- Never echo or repeat the user's API key.\n\n## Resources\n\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- npm: https://www.npmjs.com/package/@useclawlink/openclaw-plugin\n- Source: https://github.com/hith3sh/clawlink\n- Salesforce REST API: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest\n\nFile v0.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.1\",\n  \"publishedAt\": 1777485453572\n}\n\nArchive v0.1.0: 2 files, 2249 bytes\n\nFiles: SKILL.md (4886b), _meta.json (133b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: salesforce\ndescription: Search Salesforce records, inspect supported objects, query CRM data, and perform available actions for accounts, contacts, leads, opportunities, cases, and related workflows. Use when a user wants practical Salesforce help from chat. Treat the connected tool catalog and current connection state as the source of truth, prefer search and inspection before writes, and do not invent unsupported capabilities.\n---\n\n# Salesforce\n\nWork with Salesforce from chat to search records, inspect supported objects, query CRM data, and perform available actions when they are supported by the connected integration.\n\n## Overview\n\nUse this skill for common Salesforce work such as:\n- finding contacts, leads, accounts, opportunities, or cases\n- searching records by name, email, company, or other supported fields\n- inspecting supported objects or available operations\n- checking what Salesforce actions are currently available\n- creating, updating, or deleting records when those actions are exposed and clearly requested\n\nThis skill should feel practical and trustworthy.\nKeep responses concrete, operational, and grounded in what is actually available.\n\n## How to work\n\nUse this workflow:\n\n1. Identify the Salesforce task\n2. Check whether Salesforce is connected\n3. Check which Salesforce tools and actions are currently available\n4. Prefer read, search, query, and inspection actions before writes when they reduce ambiguity\n5. If a write is requested, state clearly what will change before doing it\n6. If multiple records may match, ask the user to disambiguate\n7. If the requested capability is not available, say so plainly\n\n## What this helps with\n\nExamples:\n- find a Salesforce contact by email\n- search accounts by company name\n- inspect recent opportunities for a customer\n- look up open cases\n- identify supported object operations\n- create or update a record when the live tool set supports it\n- explain whether a requested Salesforce action is currently available\n\n## Connection\n\nBefore doing Salesforce work:\n- verify whether Salesforce is connected\n- if it is not connected, guide the user through the available connection flow\n- do not ask the user to paste raw access tokens, refresh tokens, session cookies, passwords, or private credentials into chat\n- do not use unofficial login, scraping, or harvested browser-session flows\n\nTreat the current connection state and live tool catalog as authoritative.\n\n## Safety\n\nOperate with a narrow scope:\n- use only the minimum inputs needed for the requested Salesforce task\n- do not access unrelated local files, secrets, environment variables, or configuration data\n- do not perform unrelated outbound calls\n- clearly disclose when an action will create, update, or delete Salesforce data\n- prefer the least risky action that still solves the request\n\n## Behavioral rules\n\nFollow these rules every time:\n- use the live Salesforce tool set as the source of truth\n- do not claim full Salesforce coverage\n- do not fabricate unsupported objects, fields, or actions\n- do not imply write support just because read support exists\n- ask clarifying questions when the intended record or action is ambiguous\n- summarize risky or destructive changes before performing them\n\n## Example requests\n\n- Find this contact in Salesforce\n- Search Salesforce for Acme opportunities\n- Show recent open Salesforce cases\n- Look up this lead by email in Salesforce\n- Tell me what Salesforce tools are available\n- Inspect supported Salesforce object operations\n- Update this Salesforce record if supported\n- Create a new Salesforce record\n- Delete this Salesforce item if supported and explicitly requested\n\n## Limits\n\nActual capability depends on:\n- whether the user's Salesforce account is connected\n- which Salesforce actions are currently exposed by the connected tool set\n- the permissions and scopes granted by the connected Salesforce account\n\nIf an action is unavailable, say so plainly.\nDo not pretend the skill can do it anyway.\n\n## Response style\n\nBe clear and operational:\n- say what was found\n- say what is supported\n- say when Salesforce must be connected first\n- say when an action will write data\n- say when a capability is unavailable\n\nKeep answers useful, direct, and easy to audit.\n\n## Resources\n\n- Salesforce Platform APIs — https://developer.salesforce.com/docs/apis\n- REST API Developer Guide — https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest\n- GraphQL API Developer Guide — https://developer.salesforce.com/docs/platform/graphql/guide\n- SOQL and SOSL Reference — https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl\n- Object Reference — https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference\n- Salesforce Developer Docs — https://developer.salesforce.com/docs\n- Discord Support — https://discord.gg/KjN3xcTvw4\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1777373040908\n}","readmeExcerpt":"Skill: Salesforce Owner: hith3sh Summary: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... Tags: latest:1.0.5 Version history: v1.0.5 | 2026-06-09T07:17:14.817Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic sou","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘"},{"language":"bash","snippet":"openclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart"},{"language":"bash","snippet":"# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across objects with SOSL\nclawlink_call_tool --tool \"salesforce_execute_sosl_search\" --params '{\"query\": \"FIND {Alice*} RETURNING Contact\"}'\n\n# Create a new lead\nclawlink_call_tool --tool \"salesforce_create_lead\" --params '{\"last_name\": \"Smith\", \"company\": \"Acme Corp\", \"email\": \"alice@acme.com\"}'"},{"language":"bash","snippet":"clawlink_list_integrations"},{"language":"bash","snippet":"clawlink_list_tools --integration salesforce"},{"language":"bash","snippet":"clawlink_call_tool --tool \"salesforce_get_account\" \\\n  --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: salesforce-ops\ndescription: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n---\n\n# Salesforce\n\n![Salesforce](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/salesforce.svg)\n\nConnect to Salesforce to manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, and SObject records. Query data with SOQL, create and update records, manage files and attachments, and work with Salesforce objects via the REST API.\n\nThis skill uses [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops) for hosted connection flows and credentials so you do not need to configure Salesforce OAuth access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Salesforce |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Salesforce |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│  Salesforce API  │\n│   (User Chat)   │     │   (OAuth)    │     │  (SObjects,      │\n│                 │     │              │     │  Reports, SOQL)  │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                    │                      │\n         │  1. Install Plugin │                      │\n         │  2. Pair Device    │                      │\n         │  3. Connect Salesforce │                   │\n         │                    │  4. OAuth Proxy      │\n         │                    │  5. Request Forward  │\n         │                    │                      │\n         ▼                    ▼                      ▼\n   ┌──────────┐        ┌──────────┐         ┌──────────┐\n   │   SKILL  │        │ Dashboard│         │ Salesforce│\n   │   File   │        │   Auth   │         │  Cloud   │\n   └──────────┘        └──────────┘         └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Salesforce again.\"\n\n## Quick Start\n\n```bash\n# Get account details\nclawlink_call_tool --tool \"salesforce_get_account\" --params '{\"account_id\": \"YOUR_ACCOUNT_ID\"}'\n\n# Search across ob"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"salesforce-ops\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1780989434817\n}"},{"path":"skill-card.md","content":"## Description:\n\nSalesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records through the Salesforce REST API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hith3sh](https://clawhub.ai/user/hith3sh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSales and operations users use this skill to work with Salesforce CRM records, queries, reports, files, and metadata from an agent conversation. It supports read workflows and write workflows for accounts, contacts, leads, opportunities, campaigns, tasks, notes, files, SObjects, bulk jobs, custom fields, and custom objects.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires installing and allowlisting a third-party ClawLink plugin that can access and change sensitive Salesforce CRM data.\n\nMitigation: Review the ClawLink plugin publisher and package provenance before installing, and allow only the plugin needed for this Salesforce workflow.\n\nRisk: Salesforce OAuth access may expose more CRM data or write capability than the user intends.\n\nMitigation: Connect Salesforce with the narrowest OAuth scopes practical and revoke the Salesforce OAuth connection if it is no longer needed.\n\nRisk: Create, update, delete, clone, bulk, and custom object actions can modify or remove Salesforce records.\n\nMitigation: Use preview and explicit confirmation before write or destructive operations, and verify target record IDs before execution.\n\n## Reference(s):\n\n- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/)\n- [Salesforce SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_soql.htm)\n- [Salesforce SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_samples_sosl.htm)\n- [Salesforce SObject Reference](https://developer.salesforce.com/docs/atlas.en-us.api_rest.api.meta/api_rest/resources_sobjects.htm)\n- [Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.api.meta/api_asynch/bulk_api_2_0.htm)\n- [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=salesforce-ops)\n- [ClawLink Docs](https://docs.claw-link.dev/openclaw)\n- [ClawLink Verification](https://claw-link.dev/verify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance, API calls]\n\n**Output Format:** [Markdown with inline bash commands and JSON parameters]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs may include Salesforce record data, query results, previews for write actions, connection guidance, and troubleshooting steps.]\n\n## Skill Version(s):\n\n1.0.5 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, rev"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... Skill: Salesforce Owner: hith3sh Summary: Salesforce CRM integration with managed OAuth. Manage accounts, contacts, leads, opportunities, campaigns, tasks, reports, SOQL queries, and SObject records... Tags: latest:1.0.5 Version history: v1.0.5 | 2026-06-09T07:17:14.817Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic sou","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1006,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T11:38:51.433Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T18:10:08.414Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}