{"id":"6e918dbf-b61b-4c94-9beb-79a0cdc2373b","entityType":"agent","slug":"clawhub-leo-paz-outlit","name":"outlit","canonicalUrl":"https://www.xpersona.co/agent/clawhub-leo-paz-outlit","canonicalPath":"/agent/clawhub-leo-paz-outlit","generatedAt":"2026-10-09T21:35:40.963Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T20:20:17.829Z","emptyReason":null},"description":"Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access. Skill: outlit Owner: leo-paz Summary: Use when accessing Outlit customer intelligence through the outlit CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access. Tags: latest:1.0.11 Version history: v1","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s1719ryyr8azsrbf1erk7aem7x84mmzf:outlit","sourceUrl":"https://clawhub.ai/leo-paz/outlit","homepage":"https://clawhub.ai/leo-paz/skills/outlit","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/leo-paz/outlit","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/leo-paz/skills/outlit","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":51,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, works"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T20:20:17.829Z","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-09T20:20:17.829Z","emptyReason":null},"stars":null,"forks":null,"downloads":2031,"packageName":null,"latestVersion":"1.0.11","tractionLabel":"2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T20:20:17.829Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T20:20:17.829Z","lastCrawledAt":"2026-10-09T20:20:17.829Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T20:20:17.829Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.11","createdAt":"2026-09-29T03:37:23.637Z","changelog":"Automated publish from OutlitAI/skills@4d4013f22c7d497dd0f5cbbf9f4ca1257d0355ed after merged skill changes.","fileCount":5,"zipByteSize":12482},{"version":"1.0.10","createdAt":"2026-09-28T03:40:38.590Z","changelog":"Automated publish from OutlitAI/skills@e111a4e7c94c5e513e7c77a7e17a003c70d3bba9 after merged skill changes.","fileCount":5,"zipByteSize":12434},{"version":"1.0.9","createdAt":"2026-09-10T06:29:08.385Z","changelog":"Automated publish from OutlitAI/skills@9d4c1c8ab09ea1e22b931b3f236a935e223ef310 after merged skill changes.","fileCount":5,"zipByteSize":12884},{"version":"1.0.8","createdAt":"2026-08-26T22:42:19.879Z","changelog":"Automated publish from OutlitAI/skills@8d7f74f41d39918dc7c69a11683899dc693f09bd after merged skill changes.","fileCount":4,"zipByteSize":8602},{"version":"1.0.7","createdAt":"2026-08-11T19:11:52.206Z","changelog":"Automated publish from OutlitAI/outlit-agent-skills@e4108f583f0a82322b8d9fc9a83667526ac15c8d after merged skill changes.","fileCount":4,"zipByteSize":7493},{"version":"1.0.6","createdAt":"2026-06-26T03:15:25.808Z","changelog":"Automated publish from OutlitAI/outlit-agent-skills@702c8ae6d0d47edcc9482e4ed0470aca3fe83861 after merged skill changes.","fileCount":4,"zipByteSize":7746},{"version":"1.0.5","createdAt":"2026-06-25T22:06:02.811Z","changelog":"Refresh Outlit agent skill guidance for current CLI, MCP/Pi tools, source evidence, workspace users, notification destination IDs, integration setup/capabilities flows, and public SQL views.","fileCount":4,"zipByteSize":7687},{"version":"1.0.4","createdAt":"2026-05-05T23:02:00.549Z","changelog":"Version 1.0.4 - Added support for Pi tools and @outlit/tools in interface selection and documentation. - Expanded Quick Chooser table for both MCP/Pi tools and CLI commands. - Clarified fact type usage and guidance around public fact classes. - Introduced guidelines for notification actions, including tool and CLI options. - Improved setup and troubleshooting instructions for CLI, MCP, and Pi/tool agents. - Added integration management guidance and extended working rules for evidence handling.","fileCount":5,"zipByteSize":6634}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1719ryyr8azsrbf1erk7aem7x84mmzf:outlit","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-leo-paz-outlit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/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-09T21:35:40.958Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-leo-paz-outlit/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-09T20:20:17.829Z","emptyReason":null},"readme":"Skill: outlit\n\nOwner: leo-paz\n\nSummary: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\n\nTags: latest:1.0.11\n\nVersion history:\n\nv1.0.11 | 2026-09-29T03:37:23.637Z | user\n\nAutomated publish from OutlitAI/skills@4d4013f22c7d497dd0f5cbbf9f4ca1257d0355ed after merged skill changes.\n\nv1.0.10 | 2026-09-28T03:40:38.590Z | user\n\nAutomated publish from OutlitAI/skills@e111a4e7c94c5e513e7c77a7e17a003c70d3bba9 after merged skill changes.\n\nv1.0.9 | 2026-09-10T06:29:08.385Z | user\n\nAutomated publish from OutlitAI/skills@9d4c1c8ab09ea1e22b931b3f236a935e223ef310 after merged skill changes.\n\nv1.0.8 | 2026-08-26T22:42:19.879Z | user\n\nAutomated publish from OutlitAI/skills@8d7f74f41d39918dc7c69a11683899dc693f09bd after merged skill changes.\n\nv1.0.7 | 2026-08-11T19:11:52.206Z | user\n\nAutomated publish from OutlitAI/outlit-agent-skills@e4108f583f0a82322b8d9fc9a83667526ac15c8d after merged skill changes.\n\nv1.0.6 | 2026-06-26T03:15:25.808Z | user\n\nAutomated publish from OutlitAI/outlit-agent-skills@702c8ae6d0d47edcc9482e4ed0470aca3fe83861 after merged skill changes.\n\nv1.0.5 | 2026-06-25T22:06:02.811Z | user\n\nRefresh Outlit agent skill guidance for current CLI, MCP/Pi tools, source evidence, workspace users, notification destination IDs, integration setup/capabilities flows, and public SQL views.\n\nv1.0.4 | 2026-05-05T23:02:00.549Z | user\n\nVersion 1.0.4\n\n- Added support for Pi tools and @outlit/tools in interface selection and documentation.\n- Expanded Quick Chooser table for both MCP/Pi tools and CLI commands.\n- Clarified fact type usage and guidance around public fact classes.\n- Introduced guidelines for notification actions, including tool and CLI options.\n- Improved setup and troubleshooting instructions for CLI, MCP, and Pi/tool agents.\n- Added integration management guidance and extended working rules for evidence handling.\n\nv1.0.3 | 2026-04-11T23:23:53.993Z | user\n\n- Added SQL reference documentation: references/sql-reference.md\n- Expanded internal guidance on choosing between Outlit CLI and MCP interfaces\n- Updated usage recommendations, command mappings, and working rules for customer intelligence workflows\n- Clarified setup steps for both coding agents and MCP clients\n- Improved instructions on output formats and fact vs search vs timeline use cases\n\nv1.0.2 | 2026-03-03T09:08:08.923Z | user\n\n- Updated documentation to clarify and retitle the \"Key capabilities\" section as \"Signal extraction\".\n- Removed the \"Users\" capability section for conciseness.\n- No changes to code or installation; documentation only.\n\nv1.0.1 | 2026-03-03T08:50:54.435Z | user\n\n- Added detailed descriptions of key capabilities: Facts (AI-extracted structured signals), Search (semantic NL search across interactions), and Users (filter by journey stage/activity).\n- Expanded CLI command examples to include user journey stage and activity filters.\n- Clarified the output contract section by removing \"agent-friendly\" wording.\n- Updated section headers for clarity and conciseness. \n- No changes to installation steps or configuration.\n\nv1.0.0 | 2026-03-03T08:25:23.446Z | user\n\nOutlit 1.0.0 initial release:\n\n- Unified CLI for querying and visualizing customer data across products, billing, web, and conversations.\n- Structured JSON output with timestamps and source attribution; agent-friendly readable tables in TTY.\n- Core commands for customer lists, profiles, timelines, natural language search, facts, and SQL analytics.\n- Surfaces proactive churn-risk insights with recommended actions.\n- Includes MCP support and fast agent setup tools.\n- Comprehensive documentation links included for quick onboarding.\n\nArchive index:\n\nArchive v1.0.11: 5 files, 12482 bytes\n\nFiles: references/identity.md (6896b), references/sql-reference.md (1236b), skill-card.md (2374b), SKILL.md (17793b), _meta.json (126b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nOutlit joins product activity, conversations, billing, support, CRM, and web signals into customer profiles, timelines, facts, and source evidence for agents.\n\n## When to Use Outlit\n\nUse Outlit when the user needs real customer context for onboarding, adoption, retention, renewal, or expansion. Typical jobs include:\n\n- Find accounts with declining activity, renewal risk, expansion demand, or stalled onboarding.\n- Explain what changed for a customer and trace the answer to facts, events, conversations, or source records.\n- Prepare account research, customer-success follow-up, or custom analytics across customer data.\n- Inspect or configure an Outlit workspace capability when the user explicitly asks.\n\nDo not call Outlit for generic customer-success advice that does not need workspace data. Use the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If suitable `outlit_*` MCP or Pi tools are present, call them.\n2. Otherwise, if the `outlit` CLI is installed, use it.\n3. Otherwise, guide setup:\n   - Coding agents: run `outlit onboard --agent <agent> --json`. Outside CI, it can start browser approval when no key is available, install this skill, validate access, and return next actions.\n   - Skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace URL from **Settings > CLI & MCP** and complete OAuth in the client. Do not hardcode a shared endpoint, bearer header, or API key into remote MCP configuration.\n\n## Quick Chooser\n\nTool availability depends on the MCP server or Pi tool policy. If a named tool is absent, use the CLI only where your policy permits, or ask the user to enable the appropriate toolset.\n\n| Need | Tool when exposed | CLI |\n|------|-------------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse customer-associated users | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Current customer relationship | `outlit_get_customer_relationship` | `outlit customers relationship` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts`, `outlit_get_fact` | `outlit facts list/get` |\n| Source enumeration and retrieval | `outlit_list_sources`, `outlit_get_source` | `outlit sources list/get` |\n| Thematic or fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema`, then `outlit_query` | `outlit schema`, then `outlit sql` |\n| Customer ownership and access | `outlit_assign_customer_owner`, `outlit_grant_customer_access`, `outlit_update_customer_access`, `outlit_revoke_customer_access` | `outlit customers owner set`, `outlit customers grant/revoke` |\n| Browse automation destinations | `outlit_list_destinations`, `outlit_get_destination` | `outlit destinations list/get` |\n| Configure automation destinations | `outlit_create_destination`, `outlit_update_destination` | `outlit destinations create/update` |\n| Destination lifecycle | `outlit_enable_destination`, `outlit_disable_destination`, `outlit_archive_destination` | `outlit destinations enable/disable/archive` |\n| Integration readiness or setup | `outlit_get_integration_capabilities`, `outlit_begin_integration_setup`, `outlit_get_integration_setup_status`, `outlit_get_integration_status`, `outlit_setup_integration` | `outlit integrations setup/status` |\n| Activation setting | `outlit_get_customer_activation`, `outlit_preview_customer_activation`, `outlit_update_customer_activation` | `outlit activation get/preview/update/disable` |\n| Workspace timezone | `outlit_get_workspace_settings`, `outlit_update_workspace_settings` | `outlit settings get/update` |\n| Workspace Features | `outlit_list_features`, `outlit_create_feature`, `outlit_archive_feature` | `outlit features list/create/archive` |\n| Customer Feature usage | `outlit_get_customer_features` | `outlit customers features` |\n| Review current Attention items | `outlit_list_attention_items`, `outlit_get_attention_item` | `outlit attention list/get` |\n| Diagnose possible identity splits | `outlit_get_customer_identity` | `outlit customers identity <customerId>` |\n| Browse saved merge suggestions and history | `outlit_list_identity_merge_suggestions` | `outlit identity suggestions list` |\n| Reject a saved suggestion | `outlit_reject_identity_merge_suggestion` | `outlit identity suggestions reject <suggestionId>` |\n| Preview or execute a customer merge | `outlit_merge_customers` | `outlit customers merge <survivorId> <duplicateId>` |\n| Track a merge operation | `outlit_get_customer_merge_status` | `outlit customers merge-status <operationId>` |\n\n`outlit customers grant` also updates an existing collaborator's role; access commands are siblings of `owner`, not subcommands of it.\n\nCustomer-associated users belong to customer accounts. Workspace users are internal Outlit members used for ownership and access actions. Do not substitute one ID type for the other.\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions, and separate evidence from interpretation.\n- Cite the evidence kind: customer, user, workspace user, relationship item, timeline event, fact, search result, source, Attention item, Feature usage, or SQL result.\n- Say when data is sparse, stale, truncated, partial, or inconsistent and how that affects confidence.\n- Request only the fields or include sections needed.\n- Treat write operations as changes to the user's workspace. Assign owners, change access, configure integrations, reject merge suggestions, merge customer records, or mutate destinations, activation, settings, and Features only when the user explicitly asks.\n- Do not treat integration `ready` status as proof that a sync or backfill finished or that customer data is current.\n- When the user wants to share Outlit product feedback, use `outlit_submit_feedback` when available with `body` and optional `area`/`context`, or `outlit feedback --body \"...\" --json`. Feedback does not open a support ticket.\n\n## Facts, Search, Sources, and Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Public `factTypes` filters accept `CUSTOM`, `COMPANY_CHANGE`, `FUNDING_REVENUE`, `TECHNOLOGY`, `STRATEGY`, `COMPETITIVE`, `SENTIMENT`, `CHAMPION_RISK`, `EXPANSION`, `CHURN_RISK`, `TIMELINE`, `BUDGET`, `DECISION_MAKER`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CONTACT_INFO`, `CONTACT_PREFERENCE`, `CONTACT_DEPARTURE`, `CONTACT_POSITION_CHANGE`, and `CONTACT_DISENGAGEMENT`.\n- Public `factCategories` filters accept `MEMORY`, `RELATIONSHIP`, and `CUSTOM`.\n- Contact-transition facts are neutral, source-backed observations about a known contact:\n  - `CONTACT_DEPARTURE`: the contact left or is leaving the customer's company. Exclude temporary leave, ordinary out-of-office notices, candidates, and people discussed as part of the customer's own business.\n  - `CONTACT_POSITION_CHANGE`: the contact changed title, department, team, or professional responsibility at the customer's company. This is not an Outlit relationship-role change; use `CONTACT_DEPARTURE` if the person left the company.\n  - `CONTACT_DISENGAGEMENT`: the contact explicitly stopped participating, organizing, responding, or owning the initiative. A single unanswered message, scheduling friction, or an out-of-office notice is insufficient. It remains extractable but does not currently wake Churn; current contact-transition Churn signals cover only confirmed departures and position changes.\n- `CHAMPION_RISK` remains historical and readable, but new extraction uses the specific contact-transition types instead of inferring a broad relationship judgment.\n- Do not request internal anomaly-detector types such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF` as public fact filters.\n- Use `facts get` with a known fact ID for the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question or theme, including cross-customer questions. Search returns grouped source and fact artifacts, not raw vector chunks.\n- Use `sources list` for deterministic enumeration of emails, calls, calendar events, support tickets, CRM opportunities, or Slack messages.\n- Use `sources get` when another result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, `OPPORTUNITY`, and `SLACK`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## Identity and Customer Merges\n\nWhen calls or other communications exist but product usage is absent, use `outlit_get_customer_identity` for bounded split-record diagnosis alongside source readiness and usage checks. Candidates and shared participants are leads, not permission to combine evidence or proof of one company. Empty or incomplete identity results do not establish inactivity.\n\nMerging is dangerous and has no supported undo. Only execute when the user authorized it and the records are certainly the same customer. Similar names, related domains, shared participants, a suggested match, or parent/subsidiary relationships are insufficient. The merge command defaults to preview; execution requires explicit permission, the reviewed preview token, and a stable request ID. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion.\n\nRead [the identity and merge workflow](references/identity.md) before previewing, rejecting, executing, retrying, or tracking a merge. It includes the five tool contracts, CLI examples, and asynchronous status handling.\n\nOutlit-owned Churn and Renewal agents receive only the identity diagnostic for their assigned customer. Outlit-owned agents, including the Slack assistant acting for an admin, cannot reject suggestions or execute merges. Do not switch to CLI, API keys, or another identity to bypass an agent's tool policy or permissions. Customer-controlled agents may use the public tools within their granted authority.\n\n## Authorization\n\nOutlit API keys are independent workspace principals. They do not inherit their creator's human permissions or customer access. Key presets are Read only, Personal CLI, Full workspace access, and Custom. Browser onboarding issues a Personal CLI key with read access plus creator-bound integration setup; it does not grant general workspace integration administration.\n\nCurrent read grants are:\n\n- `customer_intelligence:read`\n- `workspace_members:read`\n- `analytics:read`\n- `activation:read`\n- `workspace_settings:read`\n\nCurrent write or setup grants are:\n\n- `destinations:manage`\n- `behavior_metrics:manage`\n- `integrations:connect_own`\n- `integrations:manage`\n- `activation:manage`\n- `workspace_settings:manage`\n- `customer_access:manage`\n- `customer_identity:review`\n- `customer_identity:merge`\n\nIdentity diagnostics, saved suggestions, merge previews, and merge status require `customer_intelligence:read` for API keys. Rejection requires `customer_identity:review`; execution requires `customer_identity:merge`. The merge grant is excluded from Full workspace access and default presets; an admin must explicitly select it in a Custom key. OAuth MCP inherits the user's current permissions and record access.\n\nA valid key can still receive `403` when it lacks the required grant. Do not retry that failure. Ask a workspace admin to review the key under **Settings > API Keys**. Remote MCP OAuth uses the signed-in user's current workspace authorization instead of an Outlit API key.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON or trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nInstall the CLI:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n# Alternatives:\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nCredential resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit onboard --agent <agent> --json\noutlit auth login --browser --json\noutlit auth status\noutlit auth whoami\noutlit doctor --json\n```\n\nPlain `outlit auth login` automatically selects browser approval in a noninteractive agent shell outside CI. CI requires a key. `outlit setup --yes` and `outlit setup skills` install skills but do not configure MCP clients or integrations.\n\nIf `onboard` is unavailable, run `outlit upgrade`, then use `outlit setup <agent>` or `outlit setup skills`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, and colors.\n- Piped output, `--json`, CI, or `TERM=dumb`: JSON.\n- Successful JSON is written to stdout. JSON errors are written to stderr with a nonzero exit status.\n\nAgents should check the exit status and capture stderr instead of assuming every JSON payload is on stdout.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP**:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth. Verify the connection with one of the tools actually exposed by the client.\n\n## Pi and Tool Packages\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers `defaultToolNames` unless a custom policy is supplied. SQL and the broader public catalog are not enabled by default. Use `analyticalToolNames` for the default reads plus SQL, or `piToolNames` for the Pi-supported public catalog only when the agent should receive those capabilities.\n\nFor custom TypeScript clients, `@outlit/tools` exports `publicToolContracts`, `publicToolNames`, `consumerToolPolicies`, `defaultToolNames`, `analyticalToolNames`, `piToolNames`, `cliToolNames`, `allPublicToolNames`, and `sqlToolNames`.\n\n## Integrations\n\nUse `setup` to connect or repair a data source; use `status` to inspect readiness. The current CLI exposes two commands:\n\n```text\noutlit integrations setup <provider>\noutlit integrations status [provider]\n```\n\nInteractive `setup` negotiates capabilities first. It can securely prompt for a credential, open a validated browser handoff, or ask the user to confirm a CRM or Mixpanel mapping.\n\nDo not ask the user to paste provider secrets into chat. Do not put secrets in model-visible tool calls, command arguments, logs, shell history, or process listings. When automation must supply provider configuration, have the user run the command in a trusted local terminal and send one strict JSON object through stdin:\n\n```bash\nprintf '%s\\n' '{\"credentials\":{\"apiKey\":\"<provider-api-key>\"}}' \\\n  | outlit integrations setup fireflies --config-stdin --json\n```\n\nUse `--accept-recommended` only to accept the exact CRM recommendation returned by the current setup response. Explicit mappings also go through `--config-stdin`.\n\nJSON mode never prompts, opens a browser, or polls. It returns the setup result, including any handoff or required next step. `status` reports configuration readiness as `not_connected`, `awaiting_auth`, `setup_required`, `ready`, or `requires_intervention`. It does not expose setup-session or synchronization metadata.\n\nDisconnect integrations through the Outlit web app. The CLI does not expose destructive integration removal.\n\n## Troubleshooting\n\n- Missing API key: use `outlit onboard --agent <agent> --json`, `outlit auth login`, or set `OUTLIT_API_KEY`. CI requires a key.\n- Valid key but `403`: inspect the key's grants under **Settings > API Keys**.\n- Setup issues: run `outlit doctor --json` and `outlit integrations status [provider] --json`.\n- Stale CLI or missing current commands: run `outlit upgrade`.\n- MCP auth issues: use the workspace URL and OAuth flow. Do not assume remote MCP requires an API key.\n- Empty data: inspect integration readiness and data freshness before concluding that a customer has no activity. If communications and usage disagree, check identity coverage too.\n\n## Docs\n\nStart with the [documentation index](https://docs.outlit.ai/llms.txt), then read the relevant pages for your task. The [Outlit docs](https://docs.outlit.ai/) cover the product, CLI, MCP, API, and Outlit SDKs.\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"Why does this account need attention?\"\n- \"What pricing objections show up in conversations?\"\n- \"Which Features are customers using before renewal?\"\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1790653043637\n}\n\nFile v1.0.11:references/identity.md\n\n# Customer identity and merge workflow\n\nUse the tool schemas exposed by the connected MCP server or installed CLI. Identity tools require a supporting server rollout and client version; documentation alone does not prove they are deployed. If a tool is absent, check the installed CLI help and available published upgrade. Do not invent a command or bypass an agent policy.\n\n## Diagnose before combining records\n\n`outlit_get_customer_identity` takes `{ customerId }` and returns candidate metadata and supporting references, a search window, timestamps, coverage, and limits. Its current search is bounded by call-participant domains, not every possible identity source. Candidates do not grant access to another customer's evidence. Treat an incomplete result as unknown coverage.\n\n```sh\noutlit customers identity <customerId> --json\n```\n\nInspect exact customer records and source evidence within your existing access. A shared consultant, similar company name, related domain, or parent/subsidiary relationship is not enough to establish that the records represent the same company. If uncertain, stop at diagnosis and explain the uncertainty.\n\n## Saved suggestions and existing work\n\n`outlit_list_identity_merge_suggestions` accepts optional `customerId`, `suggestionId`, `status`, `confidence`, `cursor`, and `limit`. It returns `{ suggestions, nextCursor, canManageIdentityMerges }`. The default limit is 50 and maximum is 100. Status filters are `suggested`, `processing`, `merged`, and `rejected`; confidence filters are `HIGH`, `MEDIUM`, and `LOW`.\n\n```sh\noutlit identity suggestions list --customer-id <customerId> --json\noutlit identity suggestions list --suggestion-id <suggestionId> --json\n```\n\nEach suggestion includes its `id`, survivor, duplicate, review details, impact, `canMerge`, `canReject`, and nullable `latestJob`. Inspect one suggestion through this list filter; there is no separate suggestion-get tool. Follow `nextCursor` using `--cursor` for more pages.\n\nWhen `latestJob.operationId` is non-null, pass it to the status tool. `latestJob.id` is a job ID, not an operation ID. A null operation ID means there is no matching tracked operation for that job; do not substitute the job ID or infer that no work has happened. An empty suggestion list does not rule out an unsuggested merge. Reuse an operation ID from an earlier execution response when available.\n\nIf a merge is already queued or running, track it rather than submitting a new request. If prior execution is uncertain, retry only the identical execution input with its original request ID. Do not generate a new ID to get around a conflict. If prior execution is uncertain and neither the original request ID nor operation ID is available, stop execution and report the unresolved state.\n\nTo reject a suggestion when the user asks, use `outlit_reject_identity_merge_suggestion` with `{ suggestionId, reviewNotes? }`. Its response is exactly `{ suggestionId, status: \"REJECTED\" }`; rejection keeps the records separate.\n\n```sh\noutlit identity suggestions reject <suggestionId> --review-notes \"Distinct companies\" --json\n```\n\n## Preview, execute, and track\n\n`outlit_merge_customers` is the single preview/execute tool. Input:\n\n- Required: `survivingCustomerId` and `duplicateCustomerId`, which must be distinct.\n- Optional: `suggestionId` and `reviewNotes`.\n- `dryRun` defaults to `true`.\n- Execution requires `dryRun: false`, the reviewed `previewToken`, and a stable `requestId`.\n\nWithout `suggestionId`, both records must be `COMPANY`. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion for that exact pair and survivor. A suggestion does not prove a match or grant merge authority.\n\nPreview first:\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --json\n```\n\nThe preview returns `kind: \"preview\"`, both customer IDs, `previewToken`, `evaluatedAt`, impact counts, and warnings. There is no `eligible` boolean; unsupported pairs fail. Add `--suggestion-id <suggestionId>` when using a saved suggestion, including for individual records. Review the survivor, identifiers, affected data, and access relationships before execution.\n\n**Execution is dangerous and has no supported undo.** Only execute with explicit user authorization, certainty that both records represent the same customer, and merge permission. A preview grants no authority. Preserve the reviewed pair and relevant options; the server rejects a stale identity preview.\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --execute \\\n  --preview-token <returnedToken> --request-id <stableRequestId> --json\n```\n\nInclude the same `--suggestion-id` and `--review-notes` if used. Retry with identical execution input and the same request ID. Never interpret a successful request as a completed merge.\n\nExecution and `outlit_get_customer_merge_status` return the same operation shape: `kind: \"operation\"`, `operationId`, both customer IDs, `status`, `phase`, and optional `error: { code, message }`. Status is `queued`, `running`, `completed`, or `failed`. The status tool takes `{ operationId }`:\n\n```sh\noutlit customers merge-status <operationId> --json\n```\n\nOnly `completed` reports completion. For `failed`, inspect the returned error; do not invent restart, cancel, or undo operations. Possessing an operation ID does not grant access. Rejection, preview, execution, and status are separate outcomes; a preview or queued operation has not merged the records.\n\n## Permissions and tool metadata\n\n- API keys: `customer_intelligence:read` for diagnosis, suggestions, previews, and status; `customer_identity:review` for rejection; `customer_identity:merge` for execution. A complete preview/execute/track workflow needs both read and merge grants. The merge grant requires an explicit Custom-key selection and is excluded from Full workspace access.\n- OAuth MCP: current user permissions and record access apply. Under the default member/admin roles, members can diagnose accessible customers; admins have identity management permissions.\n- Outlit-owned agents cannot perform identity writes, even when representing an admin. Churn and Renewal can diagnose only their assigned customer. Do not bypass this boundary through a different client or credential.\n- MCP merge metadata includes `readOnlyHint: false` and `destructiveHint: true`, reflecting its maximum effect even though preview is the default. Its description warns about permanent changes, certainty, permissions, and asynchronous execution. Hints do not enforce authorization; the server does.\n- CLI merge help uses that same canonical description. `--execute` is explicit and defaults off; `--preview-token` and `--request-id` are required with it. Check stderr and exit status for failures.\n- Pi's default and analytical toolsets do not automatically include these identity tools; custom selection is required. Inclusion does not confer permission.\n\nFile v1.0.11:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nGuides agents in using Outlit customer intelligence to investigate accounts, analyze customer data, and manage authorized workspace changes through available tools.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCustomer-success teams and developers use this skill to investigate onboarding, adoption, retention, renewal, and expansion using Outlit customer records and analytics. With explicit authorization, they can also configure workspace capabilities and review customer identity changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Piping a downloaded installer into a shell can execute unreviewed code.\n\nMitigation: Prefer the documented npm or Homebrew installation paths when practical.\n\nRisk: Workspace write grants can change access, destinations, integrations, activation, settings, Features, or identity records.\n\nMitigation: Confirm the intended change and grant only the permissions needed before allowing write actions.\n\nRisk: Customer merges are irreversible and can combine unrelated records.\n\nMitigation: Review the merge preview and execute only after clear authorization and confirmation that both records identify the same customer.\n\n## Reference(s):\n\n- [Outlit documentation](https://docs.outlit.ai/)\n- [Outlit documentation index](https://docs.outlit.ai/llms.txt)\n- [Outlit homepage](https://outlit.ai)\n- [Outlit ClawHub release](https://clawhub.ai/leo-paz/skills/outlit)\n- [Customer identity and merge workflow](references/identity.md)\n- [SQL reference](references/sql-reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, SQL, Configuration guidance]\n\n**Output Format:** [Markdown with inline commands and query examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Responses should distinguish evidence from interpretation; workspace changes require explicit authorization.]\n\n## Skill Version(s):\n\n1.0.11 (source: server-resolved ClawHub release)\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.10: 5 files, 12434 bytes\n\nFiles: references/identity.md (6896b), references/sql-reference.md (1236b), skill-card.md (2423b), SKILL.md (17567b), _meta.json (126b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nOutlit joins product activity, conversations, billing, support, CRM, and web signals into customer profiles, timelines, facts, and source evidence for agents.\n\n## When to Use Outlit\n\nUse Outlit when the user needs real customer context for onboarding, adoption, retention, renewal, or expansion. Typical jobs include:\n\n- Find accounts with declining activity, renewal risk, expansion demand, or stalled onboarding.\n- Explain what changed for a customer and trace the answer to facts, events, conversations, or source records.\n- Prepare account research, customer-success follow-up, or custom analytics across customer data.\n- Inspect or configure an Outlit workspace capability when the user explicitly asks.\n\nDo not call Outlit for generic customer-success advice that does not need workspace data. Use the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If suitable `outlit_*` MCP or Pi tools are present, call them.\n2. Otherwise, if the `outlit` CLI is installed, use it.\n3. Otherwise, guide setup:\n   - Coding agents: run `outlit onboard --agent <agent> --json`. Outside CI, it can start browser approval when no key is available, install this skill, validate access, and return next actions.\n   - Skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace URL from **Settings > CLI & MCP** and complete OAuth in the client. Do not hardcode a shared endpoint, bearer header, or API key into remote MCP configuration.\n\n## Quick Chooser\n\nTool availability depends on the MCP server or Pi tool policy. If a named tool is absent, use the CLI only where your policy permits, or ask the user to enable the appropriate toolset.\n\n| Need | Tool when exposed | CLI |\n|------|-------------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse customer-associated users | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Current customer relationship | `outlit_get_customer_relationship` | `outlit customers relationship` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts`, `outlit_get_fact` | `outlit facts list/get` |\n| Source enumeration and retrieval | `outlit_list_sources`, `outlit_get_source` | `outlit sources list/get` |\n| Thematic or fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema`, then `outlit_query` | `outlit schema`, then `outlit sql` |\n| Customer ownership and access | `outlit_assign_customer_owner`, `outlit_grant_customer_access`, `outlit_update_customer_access`, `outlit_revoke_customer_access` | `outlit customers owner set`, `outlit customers grant/revoke` |\n| Browse automation destinations | `outlit_list_destinations`, `outlit_get_destination` | `outlit destinations list/get` |\n| Configure automation destinations | `outlit_create_destination`, `outlit_update_destination` | `outlit destinations create/update` |\n| Destination lifecycle | `outlit_enable_destination`, `outlit_disable_destination`, `outlit_archive_destination` | `outlit destinations enable/disable/archive` |\n| Integration readiness or setup | `outlit_get_integration_capabilities`, `outlit_begin_integration_setup`, `outlit_get_integration_setup_status`, `outlit_get_integration_status`, `outlit_setup_integration` | `outlit integrations setup/status` |\n| Activation setting | `outlit_get_customer_activation`, `outlit_preview_customer_activation`, `outlit_update_customer_activation` | `outlit activation get/preview/update/disable` |\n| Workspace timezone | `outlit_get_workspace_settings`, `outlit_update_workspace_settings` | `outlit settings get/update` |\n| Workspace Features | `outlit_list_features`, `outlit_create_feature`, `outlit_archive_feature` | `outlit features list/create/archive` |\n| Customer Feature usage | `outlit_get_customer_features` | `outlit customers features` |\n| Review current Attention items | `outlit_list_attention_items`, `outlit_get_attention_item` | `outlit attention list/get` |\n| Diagnose possible identity splits | `outlit_get_customer_identity` | `outlit customers identity <customerId>` |\n| Browse saved merge suggestions and history | `outlit_list_identity_merge_suggestions` | `outlit identity suggestions list` |\n| Reject a saved suggestion | `outlit_reject_identity_merge_suggestion` | `outlit identity suggestions reject <suggestionId>` |\n| Preview or execute a customer merge | `outlit_merge_customers` | `outlit customers merge <survivorId> <duplicateId>` |\n| Track a merge operation | `outlit_get_customer_merge_status` | `outlit customers merge-status <operationId>` |\n\n`outlit customers grant` also updates an existing collaborator's role; access commands are siblings of `owner`, not subcommands of it.\n\nCustomer-associated users belong to customer accounts. Workspace users are internal Outlit members used for ownership and access actions. Do not substitute one ID type for the other.\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions, and separate evidence from interpretation.\n- Cite the evidence kind: customer, user, workspace user, relationship item, timeline event, fact, search result, source, Attention item, Feature usage, or SQL result.\n- Say when data is sparse, stale, truncated, partial, or inconsistent and how that affects confidence.\n- Request only the fields or include sections needed.\n- Treat write operations as changes to the user's workspace. Assign owners, change access, configure integrations, reject merge suggestions, merge customer records, or mutate destinations, activation, settings, and Features only when the user explicitly asks.\n- Do not treat integration `ready` status as proof that a sync or backfill finished or that customer data is current.\n\n## Facts, Search, Sources, and Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Public `factTypes` filters accept `CUSTOM`, `COMPANY_CHANGE`, `FUNDING_REVENUE`, `TECHNOLOGY`, `STRATEGY`, `COMPETITIVE`, `SENTIMENT`, `CHAMPION_RISK`, `EXPANSION`, `CHURN_RISK`, `TIMELINE`, `BUDGET`, `DECISION_MAKER`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CONTACT_INFO`, `CONTACT_PREFERENCE`, `CONTACT_DEPARTURE`, `CONTACT_POSITION_CHANGE`, and `CONTACT_DISENGAGEMENT`.\n- Public `factCategories` filters accept `MEMORY`, `RELATIONSHIP`, and `CUSTOM`.\n- Contact-transition facts are neutral, source-backed observations about a known contact:\n  - `CONTACT_DEPARTURE`: the contact left or is leaving the customer's company. Exclude temporary leave, ordinary out-of-office notices, candidates, and people discussed as part of the customer's own business.\n  - `CONTACT_POSITION_CHANGE`: the contact changed title, department, team, or professional responsibility at the customer's company. This is not an Outlit relationship-role change; use `CONTACT_DEPARTURE` if the person left the company.\n  - `CONTACT_DISENGAGEMENT`: the contact explicitly stopped participating, organizing, responding, or owning the initiative. A single unanswered message, scheduling friction, or an out-of-office notice is insufficient. It remains extractable but does not currently wake Churn; current contact-transition Churn signals cover only confirmed departures and position changes.\n- `CHAMPION_RISK` remains historical and readable, but new extraction uses the specific contact-transition types instead of inferring a broad relationship judgment.\n- Do not request internal anomaly-detector types such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF` as public fact filters.\n- Use `facts get` with a known fact ID for the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question or theme, including cross-customer questions. Search returns grouped source and fact artifacts, not raw vector chunks.\n- Use `sources list` for deterministic enumeration of emails, calls, calendar events, support tickets, CRM opportunities, or Slack messages.\n- Use `sources get` when another result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, `OPPORTUNITY`, and `SLACK`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## Identity and Customer Merges\n\nWhen calls or other communications exist but product usage is absent, use `outlit_get_customer_identity` for bounded split-record diagnosis alongside source readiness and usage checks. Candidates and shared participants are leads, not permission to combine evidence or proof of one company. Empty or incomplete identity results do not establish inactivity.\n\nMerging is dangerous and has no supported undo. Only execute when the user authorized it and the records are certainly the same customer. Similar names, related domains, shared participants, a suggested match, or parent/subsidiary relationships are insufficient. The merge command defaults to preview; execution requires explicit permission, the reviewed preview token, and a stable request ID. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion.\n\nRead [the identity and merge workflow](references/identity.md) before previewing, rejecting, executing, retrying, or tracking a merge. It includes the five tool contracts, CLI examples, and asynchronous status handling.\n\nOutlit-owned Churn and Renewal agents receive only the identity diagnostic for their assigned customer. Outlit-owned agents, including the Slack assistant acting for an admin, cannot reject suggestions or execute merges. Do not switch to CLI, API keys, or another identity to bypass an agent's tool policy or permissions. Customer-controlled agents may use the public tools within their granted authority.\n\n## Authorization\n\nOutlit API keys are independent workspace principals. They do not inherit their creator's human permissions or customer access. Key presets are Read only, Personal CLI, Full workspace access, and Custom. Browser onboarding issues a Personal CLI key with read access plus creator-bound integration setup; it does not grant general workspace integration administration.\n\nCurrent read grants are:\n\n- `customer_intelligence:read`\n- `workspace_members:read`\n- `analytics:read`\n- `activation:read`\n- `workspace_settings:read`\n\nCurrent write or setup grants are:\n\n- `destinations:manage`\n- `behavior_metrics:manage`\n- `integrations:connect_own`\n- `integrations:manage`\n- `activation:manage`\n- `workspace_settings:manage`\n- `customer_access:manage`\n- `customer_identity:review`\n- `customer_identity:merge`\n\nIdentity diagnostics, saved suggestions, merge previews, and merge status require `customer_intelligence:read` for API keys. Rejection requires `customer_identity:review`; execution requires `customer_identity:merge`. The merge grant is excluded from Full workspace access and default presets; an admin must explicitly select it in a Custom key. OAuth MCP inherits the user's current permissions and record access.\n\nA valid key can still receive `403` when it lacks the required grant. Do not retry that failure. Ask a workspace admin to review the key under **Settings > API Keys**. Remote MCP OAuth uses the signed-in user's current workspace authorization instead of an Outlit API key.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON or trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nInstall the CLI:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n# Alternatives:\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nCredential resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit onboard --agent <agent> --json\noutlit auth login --browser --json\noutlit auth status\noutlit auth whoami\noutlit doctor --json\n```\n\nPlain `outlit auth login` automatically selects browser approval in a noninteractive agent shell outside CI. CI requires a key. `outlit setup --yes` and `outlit setup skills` install skills but do not configure MCP clients or integrations.\n\nIf `onboard` is unavailable, run `outlit upgrade`, then use `outlit setup <agent>` or `outlit setup skills`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, and colors.\n- Piped output, `--json`, CI, or `TERM=dumb`: JSON.\n- Successful JSON is written to stdout. JSON errors are written to stderr with a nonzero exit status.\n\nAgents should check the exit status and capture stderr instead of assuming every JSON payload is on stdout.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP**:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth. Verify the connection with one of the tools actually exposed by the client.\n\n## Pi and Tool Packages\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers `defaultToolNames` unless a custom policy is supplied. SQL and the broader public catalog are not enabled by default. Use `analyticalToolNames` for the default reads plus SQL, or `piToolNames` for the Pi-supported public catalog only when the agent should receive those capabilities.\n\nFor custom TypeScript clients, `@outlit/tools` exports `publicToolContracts`, `publicToolNames`, `consumerToolPolicies`, `defaultToolNames`, `analyticalToolNames`, `piToolNames`, `cliToolNames`, `allPublicToolNames`, and `sqlToolNames`.\n\n## Integrations\n\nUse `setup` to connect or repair a data source; use `status` to inspect readiness. The current CLI exposes two commands:\n\n```text\noutlit integrations setup <provider>\noutlit integrations status [provider]\n```\n\nInteractive `setup` negotiates capabilities first. It can securely prompt for a credential, open a validated browser handoff, or ask the user to confirm a CRM or Mixpanel mapping.\n\nDo not ask the user to paste provider secrets into chat. Do not put secrets in model-visible tool calls, command arguments, logs, shell history, or process listings. When automation must supply provider configuration, have the user run the command in a trusted local terminal and send one strict JSON object through stdin:\n\n```bash\nprintf '%s\\n' '{\"credentials\":{\"apiKey\":\"<provider-api-key>\"}}' \\\n  | outlit integrations setup fireflies --config-stdin --json\n```\n\nUse `--accept-recommended` only to accept the exact CRM recommendation returned by the current setup response. Explicit mappings also go through `--config-stdin`.\n\nJSON mode never prompts, opens a browser, or polls. It returns the setup result, including any handoff or required next step. `status` reports configuration readiness as `not_connected`, `awaiting_auth`, `setup_required`, `ready`, or `requires_intervention`. It does not expose setup-session or synchronization metadata.\n\nDisconnect integrations through the Outlit web app. The CLI does not expose destructive integration removal.\n\n## Troubleshooting\n\n- Missing API key: use `outlit onboard --agent <agent> --json`, `outlit auth login`, or set `OUTLIT_API_KEY`. CI requires a key.\n- Valid key but `403`: inspect the key's grants under **Settings > API Keys**.\n- Setup issues: run `outlit doctor --json` and `outlit integrations status [provider] --json`.\n- Stale CLI or missing current commands: run `outlit upgrade`.\n- MCP auth issues: use the workspace URL and OAuth flow. Do not assume remote MCP requires an API key.\n- Empty data: inspect integration readiness and data freshness before concluding that a customer has no activity. If communications and usage disagree, check identity coverage too.\n\n## Docs\n\nStart with the [documentation index](https://docs.outlit.ai/llms.txt), then read the relevant pages for your task. The [Outlit docs](https://docs.outlit.ai/) cover the product, CLI, MCP, API, and Outlit SDKs.\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"Why does this account need attention?\"\n- \"What pricing objections show up in conversations?\"\n- \"Which Features are customers using before renewal?\"\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1790566838590\n}\n\nFile v1.0.10:references/identity.md\n\n# Customer identity and merge workflow\n\nUse the tool schemas exposed by the connected MCP server or installed CLI. Identity tools require a supporting server rollout and client version; documentation alone does not prove they are deployed. If a tool is absent, check the installed CLI help and available published upgrade. Do not invent a command or bypass an agent policy.\n\n## Diagnose before combining records\n\n`outlit_get_customer_identity` takes `{ customerId }` and returns candidate metadata and supporting references, a search window, timestamps, coverage, and limits. Its current search is bounded by call-participant domains, not every possible identity source. Candidates do not grant access to another customer's evidence. Treat an incomplete result as unknown coverage.\n\n```sh\noutlit customers identity <customerId> --json\n```\n\nInspect exact customer records and source evidence within your existing access. A shared consultant, similar company name, related domain, or parent/subsidiary relationship is not enough to establish that the records represent the same company. If uncertain, stop at diagnosis and explain the uncertainty.\n\n## Saved suggestions and existing work\n\n`outlit_list_identity_merge_suggestions` accepts optional `customerId`, `suggestionId`, `status`, `confidence`, `cursor`, and `limit`. It returns `{ suggestions, nextCursor, canManageIdentityMerges }`. The default limit is 50 and maximum is 100. Status filters are `suggested`, `processing`, `merged`, and `rejected`; confidence filters are `HIGH`, `MEDIUM`, and `LOW`.\n\n```sh\noutlit identity suggestions list --customer-id <customerId> --json\noutlit identity suggestions list --suggestion-id <suggestionId> --json\n```\n\nEach suggestion includes its `id`, survivor, duplicate, review details, impact, `canMerge`, `canReject`, and nullable `latestJob`. Inspect one suggestion through this list filter; there is no separate suggestion-get tool. Follow `nextCursor` using `--cursor` for more pages.\n\nWhen `latestJob.operationId` is non-null, pass it to the status tool. `latestJob.id` is a job ID, not an operation ID. A null operation ID means there is no matching tracked operation for that job; do not substitute the job ID or infer that no work has happened. An empty suggestion list does not rule out an unsuggested merge. Reuse an operation ID from an earlier execution response when available.\n\nIf a merge is already queued or running, track it rather than submitting a new request. If prior execution is uncertain, retry only the identical execution input with its original request ID. Do not generate a new ID to get around a conflict. If prior execution is uncertain and neither the original request ID nor operation ID is available, stop execution and report the unresolved state.\n\nTo reject a suggestion when the user asks, use `outlit_reject_identity_merge_suggestion` with `{ suggestionId, reviewNotes? }`. Its response is exactly `{ suggestionId, status: \"REJECTED\" }`; rejection keeps the records separate.\n\n```sh\noutlit identity suggestions reject <suggestionId> --review-notes \"Distinct companies\" --json\n```\n\n## Preview, execute, and track\n\n`outlit_merge_customers` is the single preview/execute tool. Input:\n\n- Required: `survivingCustomerId` and `duplicateCustomerId`, which must be distinct.\n- Optional: `suggestionId` and `reviewNotes`.\n- `dryRun` defaults to `true`.\n- Execution requires `dryRun: false`, the reviewed `previewToken`, and a stable `requestId`.\n\nWithout `suggestionId`, both records must be `COMPANY`. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion for that exact pair and survivor. A suggestion does not prove a match or grant merge authority.\n\nPreview first:\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --json\n```\n\nThe preview returns `kind: \"preview\"`, both customer IDs, `previewToken`, `evaluatedAt`, impact counts, and warnings. There is no `eligible` boolean; unsupported pairs fail. Add `--suggestion-id <suggestionId>` when using a saved suggestion, including for individual records. Review the survivor, identifiers, affected data, and access relationships before execution.\n\n**Execution is dangerous and has no supported undo.** Only execute with explicit user authorization, certainty that both records represent the same customer, and merge permission. A preview grants no authority. Preserve the reviewed pair and relevant options; the server rejects a stale identity preview.\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --execute \\\n  --preview-token <returnedToken> --request-id <stableRequestId> --json\n```\n\nInclude the same `--suggestion-id` and `--review-notes` if used. Retry with identical execution input and the same request ID. Never interpret a successful request as a completed merge.\n\nExecution and `outlit_get_customer_merge_status` return the same operation shape: `kind: \"operation\"`, `operationId`, both customer IDs, `status`, `phase`, and optional `error: { code, message }`. Status is `queued`, `running`, `completed`, or `failed`. The status tool takes `{ operationId }`:\n\n```sh\noutlit customers merge-status <operationId> --json\n```\n\nOnly `completed` reports completion. For `failed`, inspect the returned error; do not invent restart, cancel, or undo operations. Possessing an operation ID does not grant access. Rejection, preview, execution, and status are separate outcomes; a preview or queued operation has not merged the records.\n\n## Permissions and tool metadata\n\n- API keys: `customer_intelligence:read` for diagnosis, suggestions, previews, and status; `customer_identity:review` for rejection; `customer_identity:merge` for execution. A complete preview/execute/track workflow needs both read and merge grants. The merge grant requires an explicit Custom-key selection and is excluded from Full workspace access.\n- OAuth MCP: current user permissions and record access apply. Under the default member/admin roles, members can diagnose accessible customers; admins have identity management permissions.\n- Outlit-owned agents cannot perform identity writes, even when representing an admin. Churn and Renewal can diagnose only their assigned customer. Do not bypass this boundary through a different client or credential.\n- MCP merge metadata includes `readOnlyHint: false` and `destructiveHint: true`, reflecting its maximum effect even though preview is the default. Its description warns about permanent changes, certainty, permissions, and asynchronous execution. Hints do not enforce authorization; the server does.\n- CLI merge help uses that same canonical description. `--execute` is explicit and defaults off; `--preview-token` and `--request-id` are required with it. Check stderr and exit status for failures.\n- Pi's default and analytical toolsets do not automatically include these identity tools; custom selection is required. Inclusion does not confer permission.\n\nFile v1.0.10:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nGuides agents in using Outlit tools and the CLI to investigate customer accounts, trace supporting evidence, run analytics, and manage explicitly requested workspace changes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCustomer-success teams and their agents use Outlit to research accounts, identify retention or expansion signals, and explain findings with customer records and source evidence. Authorized users can also request workspace setup and account changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Running a downloaded installer directly in a shell could execute unreviewed code.\n\nMitigation: Prefer the documented npm or Homebrew installation options; use the shell installer only after independently verifying and trusting it.\n\nRisk: Outlit credentials and customer data may be exposed if access is overly broad or secrets are shared in chat.\n\nMitigation: Use least-privilege credentials and do not paste API keys or integration secrets into chat.\n\nRisk: Workspace access changes, integration setup, or customer merges can have significant consequences.\n\nMitigation: Review proposed changes and require explicit user authorization before applying them; preview and confirm customer merges.\n\n## Reference(s):\n\n- [Outlit documentation index](https://docs.outlit.ai/llms.txt)\n- [Outlit documentation](https://docs.outlit.ai/)\n- [Outlit homepage](https://outlit.ai)\n- [Customer identity and merge workflow](references/identity.md)\n- [SQL reference](references/sql-reference.md)\n- [ClawHub skill listing](https://clawhub.ai/leo-paz/skills/outlit)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, SQL queries, Shell commands, Configuration guidance]\n\n**Output Format:** [Markdown responses with source references, commands, or SQL where relevant]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Customer conclusions should distinguish observed evidence from interpretation.]\n\n## Skill Version(s):\n\n1.0.10 (source: ClawHub release metadata)\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.9: 5 files, 12884 bytes\n\nFiles: references/identity.md (6896b), references/sql-reference.md (1236b), skill-card.md (3602b), SKILL.md (18007b), _meta.json (125b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nOutlit joins product activity, conversations, billing, support, CRM, and web signals into customer profiles, timelines, facts, and source evidence for agents.\n\n## When to Use Outlit\n\nUse Outlit when the user needs real customer context for onboarding, adoption, retention, renewal, or expansion. Typical jobs include:\n\n- Find accounts with declining activity, renewal risk, expansion demand, or stalled onboarding.\n- Explain what changed for a customer and trace the answer to facts, events, conversations, or source records.\n- Prepare account research, customer-success follow-up, or custom analytics across customer data.\n- Inspect or configure an Outlit workspace capability when the user explicitly asks.\n\nDo not call Outlit for generic customer-success advice that does not need workspace data. Use the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If suitable `outlit_*` MCP or Pi tools are present, call them.\n2. Otherwise, if the `outlit` CLI is installed, use it.\n3. Otherwise, guide setup:\n   - Coding agents: run `outlit onboard --agent <agent> --json`. Outside CI, it can start browser approval when no key is available, install this skill, validate access, and return next actions.\n   - Skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace URL from **Settings > CLI & MCP** and complete OAuth in the client. Do not hardcode a shared endpoint, bearer header, or API key into remote MCP configuration.\n\n## Quick Chooser\n\nTool availability depends on the MCP server or Pi tool policy. If a named tool is absent, use the CLI only where your policy permits, or ask the user to enable the appropriate toolset.\n\n| Need | Tool when exposed | CLI |\n|------|-------------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse customer-associated users | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Current customer relationship | `outlit_get_customer_relationship` | `outlit customers relationship` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts`, `outlit_get_fact` | `outlit facts list/get` |\n| Source enumeration and retrieval | `outlit_list_sources`, `outlit_get_source` | `outlit sources list/get` |\n| Thematic or fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema`, then `outlit_query` | `outlit schema`, then `outlit sql` |\n| Customer ownership and access | `outlit_assign_customer_owner`, `outlit_grant_customer_access`, `outlit_update_customer_access`, `outlit_revoke_customer_access` | `outlit customers owner set`, `outlit customers grant/revoke` |\n| Browse automation destinations | `outlit_list_destinations`, `outlit_get_destination` | `outlit destinations list/get` |\n| Configure automation destinations | `outlit_create_destination`, `outlit_update_destination` | `outlit destinations create/update` |\n| Destination lifecycle | `outlit_enable_destination`, `outlit_disable_destination`, `outlit_archive_destination` | `outlit destinations enable/disable/archive` |\n| Integration readiness or setup | `outlit_get_integration_capabilities`, `outlit_begin_integration_setup`, `outlit_get_integration_setup_status`, `outlit_get_integration_status`, `outlit_setup_integration` | `outlit integrations setup/status` |\n| Activation setting | `outlit_get_customer_activation`, `outlit_preview_customer_activation`, `outlit_update_customer_activation` | `outlit activation get/preview/update/disable` |\n| Workspace timezone | `outlit_get_workspace_settings`, `outlit_update_workspace_settings` | `outlit settings get/update` |\n| Workspace Features | `outlit_list_features`, `outlit_create_feature`, `outlit_archive_feature` | `outlit features list/create/archive` |\n| Customer Feature usage | `outlit_get_customer_features` | `outlit customers features` |\n| Review current Attention items | `outlit_list_attention_items`, `outlit_get_attention_item` | `outlit attention list/get` |\n| Diagnose possible identity splits | `outlit_get_customer_identity` | `outlit customers identity <customerId>` |\n| Browse saved merge suggestions and history | `outlit_list_identity_merge_suggestions` | `outlit identity suggestions list` |\n| Reject a saved suggestion | `outlit_reject_identity_merge_suggestion` | `outlit identity suggestions reject <suggestionId>` |\n| Preview or execute a customer merge | `outlit_merge_customers` | `outlit customers merge <survivorId> <duplicateId>` |\n| Track a merge operation | `outlit_get_customer_merge_status` | `outlit customers merge-status <operationId>` |\n\n`outlit customers grant` also updates an existing collaborator's role; access commands are siblings of `owner`, not subcommands of it.\n\nCustomer-associated users belong to customer accounts. Workspace users are internal Outlit members used for ownership and access actions. Do not substitute one ID type for the other.\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions, and separate evidence from interpretation.\n- Cite the evidence kind: customer, user, workspace user, relationship item, timeline event, fact, search result, source, Attention item, Feature usage, or SQL result.\n- Say when data is sparse, stale, truncated, partial, or inconsistent and how that affects confidence.\n- Request only the fields or include sections needed.\n- Treat write operations as changes to the user's workspace. Assign owners, change access, configure integrations, reject merge suggestions, merge customer records, or mutate destinations, activation, settings, and Features only when the user explicitly asks.\n- Do not treat integration `ready` status as proof that a sync or backfill finished or that customer data is current.\n\n## Facts, Search, Sources, and Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Public `factTypes` filters accept `CUSTOM`, `COMPANY_CHANGE`, `FUNDING_REVENUE`, `TECHNOLOGY`, `STRATEGY`, `COMPETITIVE`, `SENTIMENT`, `CHAMPION_RISK`, `EXPANSION`, `CHURN_RISK`, `TIMELINE`, `BUDGET`, `DECISION_MAKER`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CONTACT_INFO`, `CONTACT_PREFERENCE`, `CONTACT_DEPARTURE`, `CONTACT_POSITION_CHANGE`, and `CONTACT_DISENGAGEMENT`.\n- Public `factCategories` filters accept `MEMORY`, `RELATIONSHIP`, and `CUSTOM`.\n- Contact-transition facts are neutral, source-backed observations about a known contact:\n  - `CONTACT_DEPARTURE`: the contact left or is leaving the customer's company. Exclude temporary leave, ordinary out-of-office notices, candidates, and people discussed as part of the customer's own business.\n  - `CONTACT_POSITION_CHANGE`: the contact changed title, department, team, or professional responsibility at the customer's company. This is not an Outlit relationship-role change; use `CONTACT_DEPARTURE` if the person left the company.\n  - `CONTACT_DISENGAGEMENT`: the contact explicitly stopped participating, organizing, responding, or owning the initiative. A single unanswered message, scheduling friction, or an out-of-office notice is insufficient. It remains extractable but does not currently wake Churn; current contact-transition Churn signals cover only confirmed departures and position changes.\n- `CHAMPION_RISK` remains historical and readable, but new extraction uses the specific contact-transition types instead of inferring a broad relationship judgment.\n- Do not request internal anomaly-detector types such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF` as public fact filters.\n- Use `facts get` with a known fact ID for the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question or theme, including cross-customer questions. Search returns grouped source and fact artifacts, not raw vector chunks.\n- Use `sources list` for deterministic enumeration of emails, calls, calendar events, support tickets, CRM opportunities, or Slack messages.\n- Use `sources get` when another result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, `OPPORTUNITY`, and `SLACK`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## Identity and Customer Merges\n\nWhen calls or other communications exist but product usage is absent, use `outlit_get_customer_identity` for bounded split-record diagnosis alongside source readiness and usage checks. Candidates and shared participants are leads, not permission to combine evidence or proof of one company. Empty or incomplete identity results do not establish inactivity.\n\nMerging is dangerous and has no supported undo. Only execute when the user authorized it and the records are certainly the same customer. Similar names, related domains, shared participants, a suggested match, or parent/subsidiary relationships are insufficient. The merge command defaults to preview; execution requires explicit permission, the reviewed preview token, and a stable request ID. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion.\n\nRead [the identity and merge workflow](references/identity.md) before previewing, rejecting, executing, retrying, or tracking a merge. It includes the five tool contracts, CLI examples, and asynchronous status handling.\n\nOutlit-owned Churn and Renewal agents receive only the identity diagnostic for their assigned customer. Outlit-owned agents, including the Slack assistant acting for an admin, cannot reject suggestions or execute merges. Do not switch to CLI, API keys, or another identity to bypass an agent's tool policy or permissions. Customer-controlled agents may use the public tools within their granted authority.\n\n## Authorization\n\nOutlit API keys are independent workspace principals. They do not inherit their creator's human permissions or customer access. Key presets are Read only, Personal CLI, Full workspace access, and Custom. Browser onboarding issues a Personal CLI key with read access plus creator-bound integration setup; it does not grant general workspace integration administration.\n\nCurrent read grants are:\n\n- `customer_intelligence:read`\n- `workspace_members:read`\n- `analytics:read`\n- `activation:read`\n- `workspace_settings:read`\n\nCurrent write or setup grants are:\n\n- `destinations:manage`\n- `behavior_metrics:manage`\n- `integrations:connect_own`\n- `integrations:manage`\n- `activation:manage`\n- `workspace_settings:manage`\n- `customer_access:manage`\n- `customer_identity:review`\n- `customer_identity:merge`\n\nIdentity diagnostics, saved suggestions, merge previews, and merge status require `customer_intelligence:read` for API keys. Rejection requires `customer_identity:review`; execution requires `customer_identity:merge`. The merge grant is excluded from Full workspace access and default presets; an admin must explicitly select it in a Custom key. OAuth MCP inherits the user's current permissions and record access.\n\nA valid key can still receive `403` when it lacks the required grant. Do not retry that failure. Ask a workspace admin to review the key under **Settings > API Keys**. Remote MCP OAuth uses the signed-in user's current workspace authorization instead of an Outlit API key.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON or trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nInstall the CLI:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n# Alternatives:\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nCredential resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit onboard --agent <agent> --json\noutlit auth login --browser --json\noutlit auth status\noutlit auth whoami\noutlit doctor --json\n```\n\nPlain `outlit auth login` automatically selects browser approval in a noninteractive agent shell outside CI. CI requires a key. `outlit setup --yes` and `outlit setup skills` install skills but do not configure MCP clients or integrations.\n\nIf `onboard` is unavailable, run `outlit upgrade`, then use `outlit setup <agent>` or `outlit setup skills`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, and colors.\n- Piped output, `--json`, CI, or `TERM=dumb`: JSON.\n- Successful JSON is written to stdout. JSON errors are written to stderr with a nonzero exit status.\n\nAgents should check the exit status and capture stderr instead of assuming every JSON payload is on stdout.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP**:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth. Verify the connection with one of the tools actually exposed by the client.\n\n## Pi and Tool Packages\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers `defaultToolNames` unless a custom policy is supplied. SQL and the broader public catalog are not enabled by default. Use `analyticalToolNames` for the default reads plus SQL, or `piToolNames` for the Pi-supported public catalog only when the agent should receive those capabilities.\n\nFor custom TypeScript clients, `@outlit/tools` exports `publicToolContracts`, `publicToolNames`, `consumerToolPolicies`, `defaultToolNames`, `analyticalToolNames`, `piToolNames`, `cliToolNames`, `allPublicToolNames`, and `sqlToolNames`.\n\n## Integrations\n\nUse `setup` to connect or repair a data source; use `status` to inspect readiness. The current CLI exposes two commands:\n\n```text\noutlit integrations setup <provider>\noutlit integrations status [provider]\n```\n\nInteractive `setup` negotiates capabilities first. It can securely prompt for a credential, open a validated browser handoff, or ask the user to confirm a CRM or Mixpanel mapping.\n\nDo not ask the user to paste provider secrets into chat. Do not put secrets in model-visible tool calls, command arguments, logs, shell history, or process listings. When automation must supply provider configuration, have the user run the command in a trusted local terminal and send one strict JSON object through stdin:\n\n```bash\nprintf '%s\\n' '{\"credentials\":{\"apiKey\":\"<provider-api-key>\"}}' \\\n  | outlit integrations setup fireflies --config-stdin --json\n```\n\nUse `--accept-recommended` only to accept the exact CRM recommendation returned by the current setup response. Explicit mappings also go through `--config-stdin`.\n\nJSON mode never prompts, opens a browser, or polls. It returns the setup result, including any handoff or required next step. `status` reports configuration readiness as `not_connected`, `awaiting_auth`, `setup_required`, `ready`, or `requires_intervention`. It does not expose setup-session or synchronization metadata.\n\nDisconnect integrations through the Outlit web app. The CLI does not expose destructive integration removal.\n\n## Troubleshooting\n\n- Missing API key: use `outlit onboard --agent <agent> --json`, `outlit auth login`, or set `OUTLIT_API_KEY`. CI requires a key.\n- Valid key but `403`: inspect the key's grants under **Settings > API Keys**.\n- Setup issues: run `outlit doctor --json` and `outlit integrations status [provider] --json`.\n- Stale CLI or missing current commands: run `outlit upgrade`.\n- MCP auth issues: use the workspace URL and OAuth flow. Do not assume remote MCP requires an API key.\n- Empty data: inspect integration readiness and data freshness before concluding that a customer has no activity. If communications and usage disagree, check identity coverage too.\n\n## Docs\n\n- Docs home: https://docs.outlit.ai/\n- CLI overview: https://docs.outlit.ai/cli/overview\n- CLI commands: https://docs.outlit.ai/cli/commands\n- CLI integrations: https://docs.outlit.ai/cli/integrations\n- AI agent setup: https://docs.outlit.ai/cli/ai-agents\n- Agent skills: https://docs.outlit.ai/ai-integrations/skills\n- MCP integration: https://docs.outlit.ai/ai-integrations/mcp\n- Pi agents: https://docs.outlit.ai/ai-integrations/pi\n- Public tools API: https://docs.outlit.ai/api-reference/tools\n- API key validation: https://docs.outlit.ai/api-reference/validation\n- Customer context graph: https://docs.outlit.ai/concepts/customer-context-graph\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"Why does this account need attention?\"\n- \"What pricing objections show up in conversations?\"\n- \"Which Features are customers using before renewal?\"\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1789021748385\n}\n\nFile v1.0.9:references/identity.md\n\n# Customer identity and merge workflow\n\nUse the tool schemas exposed by the connected MCP server or installed CLI. Identity tools require a supporting server rollout and client version; documentation alone does not prove they are deployed. If a tool is absent, check the installed CLI help and available published upgrade. Do not invent a command or bypass an agent policy.\n\n## Diagnose before combining records\n\n`outlit_get_customer_identity` takes `{ customerId }` and returns candidate metadata and supporting references, a search window, timestamps, coverage, and limits. Its current search is bounded by call-participant domains, not every possible identity source. Candidates do not grant access to another customer's evidence. Treat an incomplete result as unknown coverage.\n\n```sh\noutlit customers identity <customerId> --json\n```\n\nInspect exact customer records and source evidence within your existing access. A shared consultant, similar company name, related domain, or parent/subsidiary relationship is not enough to establish that the records represent the same company. If uncertain, stop at diagnosis and explain the uncertainty.\n\n## Saved suggestions and existing work\n\n`outlit_list_identity_merge_suggestions` accepts optional `customerId`, `suggestionId`, `status`, `confidence`, `cursor`, and `limit`. It returns `{ suggestions, nextCursor, canManageIdentityMerges }`. The default limit is 50 and maximum is 100. Status filters are `suggested`, `processing`, `merged`, and `rejected`; confidence filters are `HIGH`, `MEDIUM`, and `LOW`.\n\n```sh\noutlit identity suggestions list --customer-id <customerId> --json\noutlit identity suggestions list --suggestion-id <suggestionId> --json\n```\n\nEach suggestion includes its `id`, survivor, duplicate, review details, impact, `canMerge`, `canReject`, and nullable `latestJob`. Inspect one suggestion through this list filter; there is no separate suggestion-get tool. Follow `nextCursor` using `--cursor` for more pages.\n\nWhen `latestJob.operationId` is non-null, pass it to the status tool. `latestJob.id` is a job ID, not an operation ID. A null operation ID means there is no matching tracked operation for that job; do not substitute the job ID or infer that no work has happened. An empty suggestion list does not rule out an unsuggested merge. Reuse an operation ID from an earlier execution response when available.\n\nIf a merge is already queued or running, track it rather than submitting a new request. If prior execution is uncertain, retry only the identical execution input with its original request ID. Do not generate a new ID to get around a conflict. If prior execution is uncertain and neither the original request ID nor operation ID is available, stop execution and report the unresolved state.\n\nTo reject a suggestion when the user asks, use `outlit_reject_identity_merge_suggestion` with `{ suggestionId, reviewNotes? }`. Its response is exactly `{ suggestionId, status: \"REJECTED\" }`; rejection keeps the records separate.\n\n```sh\noutlit identity suggestions reject <suggestionId> --review-notes \"Distinct companies\" --json\n```\n\n## Preview, execute, and track\n\n`outlit_merge_customers` is the single preview/execute tool. Input:\n\n- Required: `survivingCustomerId` and `duplicateCustomerId`, which must be distinct.\n- Optional: `suggestionId` and `reviewNotes`.\n- `dryRun` defaults to `true`.\n- Execution requires `dryRun: false`, the reviewed `previewToken`, and a stable `requestId`.\n\nWithout `suggestionId`, both records must be `COMPANY`. Any pair involving an `INDIVIDUAL` requires an eligible saved suggestion for that exact pair and survivor. A suggestion does not prove a match or grant merge authority.\n\nPreview first:\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --json\n```\n\nThe preview returns `kind: \"preview\"`, both customer IDs, `previewToken`, `evaluatedAt`, impact counts, and warnings. There is no `eligible` boolean; unsupported pairs fail. Add `--suggestion-id <suggestionId>` when using a saved suggestion, including for individual records. Review the survivor, identifiers, affected data, and access relationships before execution.\n\n**Execution is dangerous and has no supported undo.** Only execute with explicit user authorization, certainty that both records represent the same customer, and merge permission. A preview grants no authority. Preserve the reviewed pair and relevant options; the server rejects a stale identity preview.\n\n```sh\noutlit customers merge <survivorId> <duplicateId> --execute \\\n  --preview-token <returnedToken> --request-id <stableRequestId> --json\n```\n\nInclude the same `--suggestion-id` and `--review-notes` if used. Retry with identical execution input and the same request ID. Never interpret a successful request as a completed merge.\n\nExecution and `outlit_get_customer_merge_status` return the same operation shape: `kind: \"operation\"`, `operationId`, both customer IDs, `status`, `phase`, and optional `error: { code, message }`. Status is `queued`, `running`, `completed`, or `failed`. The status tool takes `{ operationId }`:\n\n```sh\noutlit customers merge-status <operationId> --json\n```\n\nOnly `completed` reports completion. For `failed`, inspect the returned error; do not invent restart, cancel, or undo operations. Possessing an operation ID does not grant access. Rejection, preview, execution, and status are separate outcomes; a preview or queued operation has not merged the records.\n\n## Permissions and tool metadata\n\n- API keys: `customer_intelligence:read` for diagnosis, suggestions, previews, and status; `customer_identity:review` for rejection; `customer_identity:merge` for execution. A complete preview/execute/track workflow needs both read and merge grants. The merge grant requires an explicit Custom-key selection and is excluded from Full workspace access.\n- OAuth MCP: current user permissions and record access apply. Under the default member/admin roles, members can diagnose accessible customers; admins have identity management permissions.\n- Outlit-owned agents cannot perform identity writes, even when representing an admin. Churn and Renewal can diagnose only their assigned customer. Do not bypass this boundary through a different client or credential.\n- MCP merge metadata includes `readOnlyHint: false` and `destructiveHint: true`, reflecting its maximum effect even though preview is the default. Its description warns about permanent changes, certainty, permissions, and asynchronous execution. Hints do not enforce authorization; the server does.\n- CLI merge help uses that same canonical description. `--execute` is explicit and defaults off; `--preview-token` and `--request-id` are required with it. Check stderr and exit status for failures.\n- Pi's default and analytical toolsets do not automatically include these identity tools; custom selection is required. Inclusion does not confer permission.\n\nFile v1.0.9:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\nUse when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, operators, and customer-facing teams use this skill to retrieve Outlit customer context for onboarding, adoption, retention, renewal, expansion, analytics, identity diagnostics, integrations, and workspace troubleshooting.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Setup instructions include an unverified remote installer piped into Bash.\n\nMitigation: Prefer the npm or Homebrew package-manager install options; use the curl-to-bash installer only when the publisher is trusted and remote-code execution is acceptable.\n\nRisk: Outlit access can expose sensitive customer intelligence and, with explicit grants, modify workspace access, settings, integrations, destinations, activation, features, and customer identity state.\n\nMitigation: Review API key grants, use least-privileged credentials, and perform write operations only after explicit user authorization.\n\nRisk: Customer merge execution is destructive and has no supported undo.\n\nMitigation: Diagnose and preview first, require certainty that records represent the same customer, require explicit execution authorization, and use the reviewed preview token and stable request ID.\n\nRisk: Customer context can be sparse, stale, truncated, partial, or inconsistent.\n\nMitigation: Report data-quality limits with confidence, cite the evidence kind used, and avoid treating readiness or candidate identity signals as proof of complete data.\n\n## Reference(s):\n\n- [Outlit homepage](https://outlit.ai)\n- [Outlit docs home](https://docs.outlit.ai/)\n- [CLI overview](https://docs.outlit.ai/cli/overview)\n- [CLI commands](https://docs.outlit.ai/cli/commands)\n- [CLI integrations](https://docs.outlit.ai/cli/integrations)\n- [AI agent setup](https://docs.outlit.ai/cli/ai-agents)\n- [Agent skills](https://docs.outlit.ai/ai-integrations/skills)\n- [MCP integration](https://docs.outlit.ai/ai-integrations/mcp)\n- [Pi agents](https://docs.outlit.ai/ai-integrations/pi)\n- [Public tools API](https://docs.outlit.ai/api-reference/tools)\n- [API key validation](https://docs.outlit.ai/api-reference/validation)\n- [Customer context graph](https://docs.outlit.ai/concepts/customer-context-graph)\n- [Customer identity and merge workflow](references/identity.md)\n- [SQL Reference](references/sql-reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, SQL queries, tool-use instructions]\n\n**Output Format:** [Markdown guidance with inline shell commands, SQL examples, and JSON-oriented CLI instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Agent-facing instructions for selecting Outlit interfaces, citing customer evidence, handling permissions, and avoiding unsafe write operations.]\n\n## Skill Version(s):\n\n1.0.9 (source: server 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.8: 4 files, 8602 bytes\n\nFiles: references/sql-reference.md (1236b), skill-card.md (2984b), SKILL.md (14835b), _meta.json (125b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nOutlit joins product activity, conversations, billing, support, CRM, and web signals into customer profiles, timelines, facts, and source evidence for agents.\n\n## When to Use Outlit\n\nUse Outlit when the user needs real customer context for onboarding, adoption, retention, renewal, or expansion. Typical jobs include:\n\n- Find accounts with declining activity, renewal risk, expansion demand, or stalled onboarding.\n- Explain what changed for a customer and trace the answer to facts, events, conversations, or source records.\n- Prepare account research, customer-success follow-up, or custom analytics across customer data.\n- Inspect or configure an Outlit workspace capability when the user explicitly asks.\n\nDo not call Outlit for generic customer-success advice that does not need workspace data. Use the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If suitable `outlit_*` MCP or Pi tools are present, call them.\n2. Otherwise, if the `outlit` CLI is installed, use it.\n3. Otherwise, guide setup:\n   - Coding agents: run `outlit onboard --agent <agent> --json`. Outside CI, it can start browser approval when no key is available, install this skill, validate access, and return next actions.\n   - Skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace URL from **Settings > CLI & MCP** and complete OAuth in the client. Do not hardcode a shared endpoint, bearer header, or API key into remote MCP configuration.\n\n## Quick Chooser\n\nTool availability depends on the MCP server or Pi tool policy. If a named tool is absent, use the CLI or ask the user to enable the appropriate toolset.\n\n| Need | Tool when exposed | CLI |\n|------|-------------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse customer-associated users | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Current customer relationship | `outlit_get_customer_relationship` | `outlit customers relationship` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts`, `outlit_get_fact` | `outlit facts list/get` |\n| Source enumeration and retrieval | `outlit_list_sources`, `outlit_get_source` | `outlit sources list/get` |\n| Thematic or fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema`, then `outlit_query` | `outlit schema`, then `outlit sql` |\n| Customer ownership and access | `outlit_assign_customer_owner`, `outlit_grant_customer_access`, `outlit_update_customer_access`, `outlit_revoke_customer_access` | `outlit customers owner set/grant/revoke` |\n| Automation destinations | `outlit_list_destinations` and destination write tools | `outlit destinations list/get/create/update/enable/disable/archive` |\n| Integration readiness or setup | `outlit_get_integration_capabilities`, `outlit_begin_integration_setup`, `outlit_get_integration_setup_status`, `outlit_get_integration_status`, `outlit_setup_integration` | `outlit integrations setup/status` |\n| Activation setting | `outlit_get_customer_activation`, `outlit_preview_customer_activation`, `outlit_update_customer_activation` | `outlit activation get/preview/update/disable` |\n| Workspace timezone | `outlit_get_workspace_settings`, `outlit_update_workspace_settings` | `outlit settings get/update` |\n| Workspace Features | `outlit_list_features`, `outlit_create_feature`, `outlit_archive_feature` | `outlit features list/create/archive` |\n| Customer Feature usage | `outlit_get_customer_features` | `outlit customers features` |\n| Review current Attention items | `outlit_list_attention_items`, `outlit_get_attention_item` | `outlit attention list/get` |\n\nCustomer-associated users belong to customer accounts. Workspace users are internal Outlit members used for ownership and access actions. Do not substitute one ID type for the other.\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions, and separate evidence from interpretation.\n- Cite the evidence kind: customer, user, workspace user, relationship item, timeline event, fact, search result, source, Attention item, Feature usage, or SQL result.\n- Say when data is sparse, stale, truncated, partial, or inconsistent and how that affects confidence.\n- Request only the fields or include sections needed.\n- Treat write operations as changes to the user's workspace. Assign owners, change access, configure integrations, or mutate destinations, activation, settings, and Features only when the user explicitly asks.\n- Do not treat integration `ready` status as proof that a sync or backfill finished or that customer data is current.\n\n## Facts, Search, Sources, and Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Public `factTypes` filters accept `CUSTOM`, `COMPANY_CHANGE`, `FUNDING_REVENUE`, `TECHNOLOGY`, `STRATEGY`, `COMPETITIVE`, `SENTIMENT`, `CHAMPION_RISK`, `EXPANSION`, `CHURN_RISK`, `TIMELINE`, `BUDGET`, `DECISION_MAKER`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CONTACT_INFO`, `CONTACT_PREFERENCE`, `CONTACT_DEPARTURE`, `CONTACT_POSITION_CHANGE`, and `CONTACT_DISENGAGEMENT`.\n- Public `factCategories` filters accept `MEMORY`, `RELATIONSHIP`, and `CUSTOM`.\n- Contact-transition facts are neutral, source-backed observations about a known contact:\n  - `CONTACT_DEPARTURE`: the contact left or is leaving the customer's company. Exclude temporary leave, ordinary out-of-office notices, candidates, and people discussed as part of the customer's own business.\n  - `CONTACT_POSITION_CHANGE`: the contact changed title, department, team, or professional responsibility at the customer's company. This is not an Outlit relationship-role change; use `CONTACT_DEPARTURE` if the person left the company.\n  - `CONTACT_DISENGAGEMENT`: the contact explicitly stopped participating, organizing, responding, or owning the initiative. A single unanswered message, scheduling friction, or an out-of-office notice is insufficient. It remains extractable but does not currently wake Churn; current contact-transition Churn signals cover only confirmed departures and position changes.\n- `CHAMPION_RISK` remains historical and readable, but new extraction uses the specific contact-transition types instead of inferring a broad relationship judgment.\n- Do not request internal anomaly-detector types such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF` as public fact filters.\n- Use `facts get` with a known fact ID for the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question or theme, including cross-customer questions. Search returns grouped source and fact artifacts, not raw vector chunks.\n- Use `sources list` for deterministic enumeration of emails, calls, calendar events, support tickets, CRM opportunities, or Slack messages.\n- Use `sources get` when another result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, `OPPORTUNITY`, and `SLACK`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## Authorization\n\nOutlit API keys are independent workspace principals. They do not inherit their creator's human permissions or customer access. Key presets are Read only, Personal CLI, Full workspace access, and Custom. Browser onboarding issues a Personal CLI key with read access plus creator-bound integration setup; it does not grant general workspace integration administration.\n\nCurrent read grants are:\n\n- `customer_intelligence:read`\n- `workspace_members:read`\n- `analytics:read`\n- `activation:read`\n- `workspace_settings:read`\n\nCurrent write or setup grants are:\n\n- `destinations:manage`\n- `behavior_metrics:manage`\n- `integrations:connect_own`\n- `integrations:manage`\n- `activation:manage`\n- `workspace_settings:manage`\n- `customer_access:manage`\n\nA valid key can still receive `403` when it lacks the required grant. Do not retry that failure. Ask a workspace admin to review the key under **Settings > API Keys**. Remote MCP OAuth uses the signed-in user's current workspace authorization instead of an Outlit API key.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON or trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nInstall the CLI:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n# Alternatives:\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nCredential resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit onboard --agent <agent> --json\noutlit auth login --browser --json\noutlit auth status\noutlit auth whoami\noutlit doctor --json\n```\n\nPlain `outlit auth login` automatically selects browser approval in a noninteractive agent shell outside CI. CI requires a key. `outlit setup --yes` and `outlit setup skills` install skills but do not configure MCP clients or integrations.\n\nIf `onboard` is unavailable, run `outlit upgrade`, then use `outlit setup <agent>` or `outlit setup skills`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, and colors.\n- Piped output, `--json`, CI, or `TERM=dumb`: JSON.\n- Successful JSON is written to stdout. JSON errors are written to stderr with a nonzero exit status.\n\nAgents should check the exit status and capture stderr instead of assuming every JSON payload is on stdout.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP**:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth. Verify the connection with one of the tools actually exposed by the client.\n\n## Pi and Tool Packages\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers `defaultToolNames` unless a custom policy is supplied. SQL and the broader public catalog are not enabled by default. Use `analyticalToolNames` for the default reads plus SQL, or `piToolNames` for the Pi-supported public catalog only when the agent should receive those capabilities.\n\nFor custom TypeScript clients, `@outlit/tools` exports `publicToolContracts`, `publicToolNames`, `consumerToolPolicies`, `defaultToolNames`, `analyticalToolNames`, `piToolNames`, `cliToolNames`, `allPublicToolNames`, and `sqlToolNames`.\n\n## Integrations\n\nUse `setup` to connect or repair a data source; use `status` to inspect readiness. The current CLI exposes two commands:\n\n```text\noutlit integrations setup <provider>\noutlit integrations status [provider]\n```\n\nInteractive `setup` negotiates capabilities first. It can securely prompt for a credential, open a validated browser handoff, or ask the user to confirm a CRM or Mixpanel mapping.\n\nDo not ask the user to paste provider secrets into chat. Do not put secrets in model-visible tool calls, command arguments, logs, shell history, or process listings. When automation must supply provider configuration, have the user run the command in a trusted local terminal and send one strict JSON object through stdin:\n\n```bash\nprintf '%s\\n' '{\"credentials\":{\"apiKey\":\"<provider-api-key>\"}}' \\\n  | outlit integrations setup fireflies --config-stdin --json\n```\n\nUse `--accept-recommended` only to accept the exact CRM recommendation returned by the current setup response. Explicit mappings also go through `--config-stdin`.\n\nJSON mode never prompts, opens a browser, or polls. It returns the setup result, including any handoff or required next step. `status` reports configuration readiness as `not_connected`, `awaiting_auth`, `setup_required`, `ready`, or `requires_intervention`. It does not expose setup-session or synchronization metadata.\n\nDisconnect integrations through the Outlit web app. The CLI does not expose destructive integration removal.\n\n## Troubleshooting\n\n- Missing API key: use `outlit onboard --agent <agent> --json`, `outlit auth login`, or set `OUTLIT_API_KEY`. CI requires a key.\n- Valid key but `403`: inspect the key's grants under **Settings > API Keys**.\n- Setup issues: run `outlit doctor --json` and `outlit integrations status [provider] --json`.\n- Stale CLI or missing current commands: run `outlit upgrade`.\n- MCP auth issues: use the workspace URL and OAuth flow. Do not assume remote MCP requires an API key.\n- Empty data: inspect integration readiness and data freshness before concluding that a customer has no activity.\n\n## Docs\n\n- Docs home: https://docs.outlit.ai/\n- CLI overview: https://docs.outlit.ai/cli/overview\n- CLI commands: https://docs.outlit.ai/cli/commands\n- CLI integrations: https://docs.outlit.ai/cli/integrations\n- AI agent setup: https://docs.outlit.ai/cli/ai-agents\n- Agent skills: https://docs.outlit.ai/ai-integrations/skills\n- MCP integration: https://docs.outlit.ai/ai-integrations/mcp\n- Pi agents: https://docs.outlit.ai/ai-integrations/pi\n- Public tools API: https://docs.outlit.ai/api-reference/tools\n- API key validation: https://docs.outlit.ai/api-reference/validation\n- Customer context graph: https://docs.outlit.ai/concepts/customer-context-graph\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"Why does this account need attention?\"\n- \"What pricing objections show up in conversations?\"\n- \"Which Features are customers using before renewal?\"\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1787784139879\n}\n\nFile v1.0.8:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nOutlit helps agents access customer intelligence through the Outlit CLI, MCP tools, Pi tools, and @outlit/tools for customer lookups, timelines, facts, evidence, semantic search, revenue, churn, SQL analytics, setup, integrations, and access troubleshooting.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, customer-success teams, and agents use this skill to retrieve source-backed customer context, troubleshoot Outlit access, and run read-only analytics across Outlit workspace data. The skill also guides explicit user-requested setup and configuration actions for integrations, access, activation, destinations, settings, and features.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can guide access to Outlit workspace customer data.\n\nMitigation: Install it only when the agent should use Outlit data, review API key or OAuth grants, and prefer read-only access when possible.\n\nRisk: Some guided operations can change owners, access, integrations, destinations, activation, settings, or features.\n\nMitigation: Require explicit user confirmation before any workspace mutation or setup action.\n\nRisk: SQL analytics can produce misleading results if schema, time range, or limits are omitted.\n\nMitigation: Inspect schema first, keep SQL read-only, add time filters for activity queries, and use LIMIT.\n\nRisk: Integration setup can involve provider credentials.\n\nMitigation: Do not ask users to paste provider secrets into chat, model-visible tool calls, command arguments, logs, shell history, or process listings.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/leo-paz/skills/outlit)\n- [Outlit homepage](https://outlit.ai)\n- [Outlit docs](https://docs.outlit.ai/)\n- [CLI overview](https://docs.outlit.ai/cli/overview)\n- [AI agent setup](https://docs.outlit.ai/cli/ai-agents)\n- [MCP integration](https://docs.outlit.ai/ai-integrations/mcp)\n- [Public tools API](https://docs.outlit.ai/api-reference/tools)\n- [Customer context graph](https://docs.outlit.ai/concepts/customer-context-graph)\n- [SQL Reference](references/sql-reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, SQL, API/tool calls]\n\n**Output Format:** [Markdown guidance with command examples, SQL snippets, and tool-selection recommendations]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires appropriate Outlit CLI, MCP, Pi, or @outlit/tools access and an OUTLIT_API_KEY or OAuth session for workspace data.]\n\n## Skill Version(s):\n\n1.0.8 (source: server 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.7: 4 files, 7493 bytes\n\nFiles: references/sql-reference.md (1236b), skill-card.md (3201b), SKILL.md (12651b), _meta.json (125b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n      env: [OUTLIT_API_KEY]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nUse Outlit to ground customer intelligence work in real customer data. Outlit joins product activity, conversations, billing, support, CRM, and web signals into a customer context graph and timeline for agents.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If `outlit_*` MCP or Pi tools are present, use those tools.\n2. Else if the `outlit` CLI is installed, use the CLI.\n3. Else guide setup:\n   - Coding agents: install/use the `outlit` CLI, then run `outlit onboard --agent <agent> --json` first. It starts browser auth when no API key is present outside CI, installs the Outlit skill, checks integration readiness, and prints next actions.\n   - Agent skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace MCP URL from **Settings > CLI & MCP**. Remote MCP uses OAuth in the client; do not hardcode shared endpoints, bearer headers, or API keys into remote MCP config.\n\nUse the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Quick Chooser\n\n| Need | MCP/Pi tool | CLI |\n|------|-------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse users/contacts | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts` | `outlit facts list` |\n| Exact fact | `outlit_get_fact` | `outlit facts get` |\n| Deterministic source enumeration | `outlit_list_sources` | `outlit sources list` |\n| Exact source artifact | `outlit_get_source` | `outlit sources get` |\n| Thematic/fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema` + `outlit_query` | `outlit schema` + `outlit sql` |\n| Manage customer ownership/access | `outlit_assign_customer_owner`, `outlit_grant_customer_access`, `outlit_update_customer_access`, `outlit_revoke_customer_access` | `outlit customers owner set`, `outlit customers grant`, `outlit customers revoke` |\n| Integration status/setup | Use CLI unless explicit tools exist | `outlit integrations capabilities/setup/status` |\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions.\n- Separate evidence from interpretation in the final answer.\n- Cite the evidence kind: customer record, user record, workspace-user record, timeline event, fact, search result, source record, or SQL result.\n- If data is sparse, stale, or inconsistent, say how that affects confidence.\n- Request only the fields or include sections needed.\n- Results often include timestamps and source attribution; use them.\n- Use customer collaboration actions only when the user explicitly asks to assign an owner or change customer access. CLI `customers grant` idempotently grants or changes access; `customers revoke` removes access.\n\n## Facts vs Search vs Sources vs Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Use `factTypes` for public customer-memory fact classes such as `CHURN_RISK`, `EXPANSION`, `SENTIMENT`, `BUDGET`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CHAMPION_RISK`, or `CONTACT_INFO`.\n- Do not request anomaly-detector fact types as public filters, such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF`.\n- Use `facts get` when you already have a fact ID and need the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question/theme, including cross-customer questions. Search returns grouped `source` and `fact` artifacts, not raw vector chunks.\n- Use `sources list` when you need deterministic enumeration of emails, calls, calendar events, support tickets, CRM opportunities, or Slack messages.\n- Use `sources get` when a fact/search/list result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, `OPPORTUNITY`, and `SLACK`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to event/activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON/trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nFast install:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n```\n\nAlternative installs:\n\n```bash\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nAuth resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit auth login --browser --json\noutlit auth login\noutlit auth login --key ok_your_api_key\noutlit auth status\noutlit auth whoami\n```\n\nAgent onboarding:\n\n```bash\noutlit onboard --agent codex --json\noutlit onboard --agent claude-code --json\noutlit onboard --agent gemini --json\noutlit onboard --agent droid --json\noutlit onboard --agent opencode --json\noutlit onboard --agent pi --json\noutlit onboard --agent openclaw --json\noutlit doctor --json\n```\n\n`outlit onboard` is the first command for coding agents. It resolves an existing API key, starts browser auth when no key is available outside CI, validates the key, installs the Outlit skill for the named agent, checks integration setup readiness, and returns next actions. It does not connect integrations or ask for third-party credentials by itself; use `outlit integrations setup <provider>` for that. If `onboard` is missing, run `outlit upgrade` and fall back to the older agent setup commands:\n\n```bash\noutlit setup --yes\noutlit setup codex\noutlit setup claude-code\noutlit setup gemini\noutlit setup droid\noutlit setup opencode\noutlit setup pi\noutlit setup openclaw\noutlit setup skills\n```\n\n`outlit setup skills` opens the interactive Skills installer for `outlit` and optional extras like `outlit-sdk`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, colors.\n- Piped stdout, `--json`, CI, or dumb terminal: JSON.\n- Force JSON: `--json`.\n\nAI agents commonly receive JSON automatically because stdout is piped.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP** in Outlit. It looks like:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth in the client. Verify with `outlit_schema` or by asking for available analytics views.\n\n## Pi and Tool Packages\n\nFor Pi agents:\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers default customer intelligence tools. SQL tools are available but not enabled by default; use analytical/custom toolsets only for agents that should run read-only SQL.\n\nFor custom TypeScript tool clients, use `@outlit/tools` and its exported `publicToolContracts`, `publicToolNames`, `consumerToolPolicies`, `defaultToolNames`, `analyticalToolNames`, `cliToolNames`, `allPublicToolNames`, and `sqlToolNames`.\n\n## Integrations\n\nUse integration commands only when the user asks to inspect or set up connected data sources. Disconnect integrations through the Outlit web app; the CLI does not expose destructive integration removal.\n\n```bash\noutlit integrations capabilities --json\noutlit integrations capabilities hubspot --json\noutlit integrations setup hubspot --json\noutlit integrations setup salesforce --json\noutlit integrations setup granola --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup pylon --config '{\"apiToken\":\"...\"}' --json\noutlit integrations status --session <sessionId> --json\noutlit integrations status hubspot --json\noutlit integrations list --json\n```\n\nUse `capabilities` before setup. It tells you the provider `setupMode`, credential type, whether CLI setup is supported, required credential fields, and follow-up steps such as CRM pipeline/stage mapping or webhooks. Provider-specific setup belongs after the provider name, for example `outlit integrations setup hubspot` and later provider subflows like `outlit integrations setup hubspot mappings` or `outlit integrations setup pylon webhooks`.\n\nFor browser-based providers, `setup` returns a `connectUrl` and `sessionId`; surface the URL/code to the user when browser approval is required, then poll with `outlit integrations status --session <sessionId> --json`.\n\nFor direct credential providers, pass JSON config and do not expect a session ID:\n\n```bash\noutlit integrations setup stripe --config '{\"apiKey\":\"rk_...\"}' --json\noutlit integrations setup pylon --config '{\"apiToken\":\"...\"}' --json\noutlit integrations setup fireflies --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup granola --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup posthog --config '{\"apiKey\":\"...\",\"region\":\"us\",\"projectId\":\"...\"}' --json\noutlit integrations setup supabase --config '{\"projectUrl\":\"https://...\",\"serviceRoleKey\":\"...\"}' --json\noutlit integrations setup clerk --config '{\"secretKey\":\"sk_...\"}' --json\n```\n\nCRM providers can require pipeline/stage mappings after authentication. Run the follow-up command returned by `capabilities` or setup, such as `outlit integrations setup hubspot mappings --json`, without config first to fetch available pipelines, then rerun with `--config '{\"mappings\":[...]}'` to save mappings and start CRM syncs.\n\nPylon, Stripe, PostHog, Gong, and other providers can require webhook setup after credentials are connected. Run the follow-up command returned by `capabilities` or setup, such as `outlit integrations setup pylon webhooks --json`, to get manual provider setup details such as webhook URL, required headers/secrets, required events, docs links, and current status. Stripe can also accept `--config '{\"webhookSecret\":\"whsec_...\"}'`. These follow-up commands do not use `--session`.\n\nIf capabilities mark a follow-up as unsupported by the CLI, use the Outlit platform settings or ask the user before proceeding.\n\n## Troubleshooting\n\n- Missing API key: run `outlit onboard --agent <agent> --json` for coding agents, or tell the user to set `OUTLIT_API_KEY` / run `outlit auth login --browser --json` for non-agent setup.\n- Setup issues: run `outlit doctor --json`.\n- Stale CLI: run `outlit upgrade`; set `OUTLIT_NO_UPDATE_NOTIFIER=1` to suppress update notices.\n- Missing `onboard` or `integrations capabilities`: upgrade the CLI before continuing.\n- MCP auth issues: use the workspace MCP URL and OAuth flow; do not assume API-key-only auth for remote MCP.\n- Empty data: check integrations and sync status before concluding the customer has no activity.\n\n## Docs\n\n- Docs home: https://docs.outlit.ai/\n- CLI overview: https://docs.outlit.ai/cli/overview\n- CLI commands: https://docs.outlit.ai/cli/commands\n- CLI integrations: https://docs.outlit.ai/cli/integrations\n- AI agent setup: https://docs.outlit.ai/cli/ai-agents\n- Agent skills: https://docs.outlit.ai/ai-integrations/skills\n- MCP integration: https://docs.outlit.ai/ai-integrations/mcp\n- Pi agents: https://docs.outlit.ai/ai-integrations/pi\n- Public tools API: https://docs.outlit.ai/api-reference/tools\n- Customer context graph: https://docs.outlit.ai/concepts/customer-context-graph\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"What pricing objections show up in conversations?\"\n- \"List recent opportunity sources for Acme.\"\n- \"Which channels are driving revenue?\"\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1786475512206\n}\n\nFile v1.0.7:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.7:skill-card.md\n\n## Description:\n\nUse when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, integrations, or troubleshooting agent access.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, operators, and customer-facing teams use this skill to query Outlit-connected customer intelligence, inspect timelines and source evidence, run read-only SQL analytics, and guide setup or troubleshooting for agent access.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can help agents query Outlit-connected customer and revenue data.\n\nMitigation: Install it only for agents authorized to access that data and keep OUTLIT_API_KEY scoped and protected.\n\nRisk: The skill includes a remote shell install shortcut.\n\nMitigation: Prefer the npm or Homebrew install path, or review the installer before using the shell shortcut.\n\nRisk: Integration setup can involve third-party credentials and secrets.\n\nMitigation: Review credential prompts and configuration before submitting secrets.\n\nRisk: Customer ownership and access actions can change collaboration permissions.\n\nMitigation: Use ownership or access changes only after an explicit user request and confirm the intended customer and permission change.\n\n## Reference(s):\n\n- [Outlit homepage](https://outlit.ai)\n- [Outlit documentation](https://docs.outlit.ai/)\n- [Outlit CLI overview](https://docs.outlit.ai/cli/overview)\n- [Outlit CLI commands](https://docs.outlit.ai/cli/commands)\n- [Outlit CLI integrations](https://docs.outlit.ai/cli/integrations)\n- [Outlit AI agent setup](https://docs.outlit.ai/cli/ai-agents)\n- [Outlit agent skills](https://docs.outlit.ai/ai-integrations/skills)\n- [Outlit MCP integration](https://docs.outlit.ai/ai-integrations/mcp)\n- [Outlit Pi agents](https://docs.outlit.ai/ai-integrations/pi)\n- [Outlit public tools API](https://docs.outlit.ai/api-reference/tools)\n- [Outlit customer context graph](https://docs.outlit.ai/concepts/customer-context-graph)\n- [SQL Reference](references/sql-reference.md)\n- [ClawHub skill page](https://clawhub.ai/leo-paz/skills/outlit)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, SQL guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands, SQL snippets, and JSON-oriented CLI/tool call usage.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Responses should distinguish evidence from interpretation and cite the evidence kind when using customer, user, workspace-user, timeline, fact, search, source, or SQL results.]\n\n## Skill Version(s):\n\n1.0.7 (source: server-resolved release metadata)\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.6: 4 files, 7746 bytes\n\nFiles: references/sql-reference.md (1236b), skill-card.md (3469b), SKILL.md (12980b), _meta.json (125b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, notifications, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n      env: [OUTLIT_API_KEY]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nUse Outlit to ground customer intelligence work in real customer data. Outlit joins product activity, conversations, billing, support, CRM, and web signals into a customer context graph and timeline for agents.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If `outlit_*` MCP or Pi tools are present, use those tools.\n2. Else if the `outlit` CLI is installed, use the CLI.\n3. Else guide setup:\n   - Coding agents: install/use the `outlit` CLI, then run `outlit onboard --agent <agent> --json` first. It starts browser auth when no API key is present outside CI, installs the Outlit skill, checks integration readiness, and prints next actions.\n   - Agent skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace MCP URL from **Settings > CLI & MCP**. Remote MCP uses OAuth in the client; do not hardcode shared endpoints, bearer headers, or API keys into remote MCP config.\n\nUse the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Quick Chooser\n\n| Need | MCP/Pi tool | CLI |\n|------|-------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse users/contacts | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | - |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Chronology | `outlit_get_timeline` | `outlit customers timeline` |\n| Known structured signals | `outlit_list_facts` | `outlit facts list` |\n| Exact fact | `outlit_get_fact` | `outlit facts get` |\n| Deterministic source enumeration | `outlit_list_sources` | `outlit sources list` |\n| Exact source artifact | `outlit_get_source` | `outlit sources get` |\n| Thematic/fuzzy question | `outlit_search_customer_context` | `outlit search` |\n| Custom analytics | `outlit_schema` + `outlit_query` | `outlit schema` + `outlit sql` |\n| Send/post a notification | `outlit_send_notification` | `outlit notify` |\n| Integration status/setup | Use CLI unless explicit tools exist | `outlit integrations capabilities/setup/status` |\n\nUse customer lookups before SQL. SQL is for aggregates, cohorts, joins, time-series checks, and custom reporting.\n\n## Working Rules\n\n- Start with the highest-level tool that can answer the question.\n- Gather evidence before drawing conclusions.\n- Separate evidence from interpretation in the final answer.\n- Cite the evidence kind: customer record, user record, workspace-user record, timeline event, fact, search result, source record, or SQL result.\n- If data is sparse, stale, or inconsistent, say how that affects confidence.\n- Request only the fields or include sections needed.\n- Results often include timestamps and source attribution; use them.\n\n## Facts vs Search vs Sources vs Timeline\n\n- Use `facts list` to browse known structured intelligence for one account.\n- Use `factTypes` for public customer-memory fact classes such as `CHURN_RISK`, `EXPANSION`, `SENTIMENT`, `BUDGET`, `REQUIREMENTS`, `PRODUCT_USAGE`, `CHAMPION_RISK`, or `CONTACT_INFO`.\n- Do not request anomaly-detector fact types as public filters, such as `CORE_ACTION_DECAY`, `CADENCE_BREAK`, `QUIET_ACCOUNT`, `ACTIVATION_RATE_DROP`, or `FUNNEL_DROPOFF`.\n- Use `facts get` when you already have a fact ID and need the canonical payload or best-effort `evidence`.\n- Use `search` for a specific question/theme, including cross-customer questions. Search returns grouped `source` and `fact` artifacts, not raw vector chunks.\n- Use `sources list` when you need deterministic enumeration of emails, calls, calendar events, support tickets, or CRM opportunities.\n- Use `sources get` when a fact/search/list result points to a concrete source and you need the exact artifact.\n- Use `timeline` when order, recency, or sequence matters.\n\nSupported generic source types are `EMAIL`, `CALL`, `CALENDAR_EVENT`, `SUPPORT_TICKET`, and `OPPORTUNITY`. `CRM` and `CRM_OPPORTUNITY` are accepted aliases for opportunity filters.\n\n## Notifications\n\nNotification tools are action tools. Use them only when the user explicitly asks you to send, post, or notify.\n\n- CLI: `outlit notify --title \"...\" --markdown \"...\"`.\n- File input: `--payload-file <path>`, `--markdown-file <path>`.\n- Optional context: `--message`, `--severity low|medium|high`, `--source`, `--subject`.\n- Destinations: `--destination slack` for the default Slack notifier, or `--destination slack:<channelId>` for a specific channel. Use comma-separated destinations for multiple targets.\n- Markdown is the preferred human-readable body; payload can carry JSON-serializable context.\n\nDo not notify by default just because an analysis found risk.\n\n## SQL Rules\n\nCall schema before writing SQL.\n\n- Use public analytics views, not backend table names: `activity`, `customers`, `users`, `revenue`.\n- Add explicit time filters to event/activity SQL.\n- Use `LIMIT`.\n- Divide money fields in cents by `100` for display.\n- Inspect JSON/trait column shapes before filtering nested values.\n- Keep SQL read-only.\n\nFor ClickHouse syntax and query patterns, read [references/sql-reference.md](references/sql-reference.md).\n\n## CLI Setup\n\nFast install:\n\n```bash\ncurl -fsSL https://outlit.ai/install.sh | bash\n```\n\nAlternative installs:\n\n```bash\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit\n```\n\nAuth resolution order is `--api-key`, `OUTLIT_API_KEY`, then stored credentials.\n\n```bash\noutlit auth login --browser --json\noutlit auth login\noutlit auth login --key ok_your_api_key\noutlit auth status\noutlit auth whoami\n```\n\nAgent onboarding:\n\n```bash\noutlit onboard --agent codex --json\noutlit onboard --agent claude-code --json\noutlit onboard --agent gemini --json\noutlit onboard --agent droid --json\noutlit onboard --agent opencode --json\noutlit onboard --agent pi --json\noutlit onboard --agent openclaw --json\noutlit doctor --json\n```\n\n`outlit onboard` is the first command for coding agents. It resolves an existing API key, starts browser auth when no key is available outside CI, validates the key, installs the Outlit skill for the named agent, checks integration setup readiness, and returns next actions. It does not connect integrations or ask for third-party credentials by itself; use `outlit integrations setup <provider>` for that. If `onboard` is missing, run `outlit upgrade` and fall back to the older agent setup commands:\n\n```bash\noutlit setup --yes\noutlit setup codex\noutlit setup claude-code\noutlit setup gemini\noutlit setup droid\noutlit setup opencode\noutlit setup pi\noutlit setup openclaw\noutlit setup skills\n```\n\n`outlit setup skills` opens the interactive Skills installer for `outlit` and optional extras like `outlit-sdk`.\n\n## CLI Output Behavior\n\n- Interactive terminal: readable tables, spinners, colors.\n- Piped stdout, `--json`, CI, or dumb terminal: JSON.\n- Force JSON: `--json`.\n\nAI agents commonly receive JSON automatically because stdout is piped.\n\n## MCP Setup\n\nGet the workspace URL from **Settings > CLI & MCP** in Outlit. It looks like:\n\n```text\nhttps://mcp.outlit.ai/w/<workspace-slug>/mcp\n```\n\nAdd that URL directly to the MCP client and complete OAuth in the client. Verify with `outlit_schema` or by asking for available analytics views.\n\n## Pi and Tool Packages\n\nFor Pi agents:\n\n```bash\npi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi\n```\n\n`@outlit/pi` registers default customer intelligence tools and notification action tools. SQL tools are available but not enabled by default; use analytical/custom toolsets only for agents that should run read-only SQL.\n\nFor custom TypeScript tool clients, use `@outlit/tools` and its exported `customerToolContracts`, `defaultAgentToolNames`, `actionToolNames`, `sqlToolNames`, `analyticalAgentToolNames`, and `allCustomerToolNames`.\n\n## Integrations\n\nUse integration commands only when the user asks to inspect or set up connected data sources. Disconnect integrations through the Outlit web app; the CLI does not expose destructive integration removal.\n\n```bash\noutlit integrations capabilities --json\noutlit integrations capabilities hubspot --json\noutlit integrations setup hubspot --json\noutlit integrations setup salesforce --json\noutlit integrations setup granola --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup pylon --config '{\"apiToken\":\"...\"}' --json\noutlit integrations status --session <sessionId> --json\noutlit integrations status hubspot --json\noutlit integrations list --json\n```\n\nUse `capabilities` before setup. It tells you the provider `setupMode`, credential type, whether CLI setup is supported, required credential fields, and follow-up steps such as CRM pipeline/stage mapping or webhooks. Provider-specific setup belongs after the provider name, for example `outlit integrations setup hubspot` and later provider subflows like `outlit integrations setup hubspot mappings` or `outlit integrations setup pylon webhooks`.\n\nFor browser-based providers, `setup` returns a `connectUrl` and `sessionId`; surface the URL/code to the user when browser approval is required, then poll with `outlit integrations status --session <sessionId> --json`.\n\nFor direct credential providers, pass JSON config and do not expect a session ID:\n\n```bash\noutlit integrations setup stripe --config '{\"apiKey\":\"rk_...\"}' --json\noutlit integrations setup pylon --config '{\"apiToken\":\"...\"}' --json\noutlit integrations setup fireflies --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup granola --config '{\"apiKey\":\"...\"}' --json\noutlit integrations setup posthog --config '{\"apiKey\":\"...\",\"region\":\"us\",\"projectId\":\"...\"}' --json\noutlit integrations setup supabase --config '{\"projectUrl\":\"https://...\",\"serviceRoleKey\":\"...\"}' --json\noutlit integrations setup clerk --config '{\"secretKey\":\"sk_...\"}' --json\n```\n\nCRM providers can require pipeline/stage mappings after authentication. Run the follow-up command returned by `capabilities` or setup, such as `outlit integrations setup hubspot mappings --json`, without config first to fetch available pipelines, then rerun with `--config '{\"mappings\":[...]}'` to save mappings and start CRM syncs.\n\nPylon, Stripe, PostHog, Gong, and other providers can require webhook setup after credentials are connected. Run the follow-up command returned by `capabilities` or setup, such as `outlit integrations setup pylon webhooks --json`, to get manual provider setup details such as webhook URL, required headers/secrets, required events, docs links, and current status. Stripe can also accept `--config '{\"webhookSecret\":\"whsec_...\"}'`. These follow-up commands do not use `--session`.\n\nIf capabilities mark a follow-up as unsupported by the CLI, use the Outlit platform settings or ask the user before proceeding.\n\n## Troubleshooting\n\n- Missing API key: run `outlit onboard --agent <agent> --json` for coding agents, or tell the user to set `OUTLIT_API_KEY` / run `outlit auth login --browser --json` for non-agent setup.\n- Setup issues: run `outlit doctor --json`.\n- Stale CLI: run `outlit upgrade`; set `OUTLIT_NO_UPDATE_NOTIFIER=1` to suppress update notices.\n- Missing `onboard` or `integrations capabilities`: upgrade the CLI before continuing.\n- MCP auth issues: use the workspace MCP URL and OAuth flow; do not assume API-key-only auth for remote MCP.\n- Empty data: check integrations and sync status before concluding the customer has no activity.\n\n## Docs\n\n- Docs home: https://docs.outlit.ai/\n- CLI overview: https://docs.outlit.ai/cli/overview\n- CLI commands: https://docs.outlit.ai/cli/commands\n- CLI integrations: https://docs.outlit.ai/cli/integrations\n- AI agent setup: https://docs.outlit.ai/cli/ai-agents\n- Agent skills: https://docs.outlit.ai/ai-integrations/skills\n- MCP integration: https://docs.outlit.ai/ai-integrations/mcp\n- Pi agents: https://docs.outlit.ai/ai-integrations/pi\n- Public tools API: https://docs.outlit.ai/api-reference/tools\n- Customer context graph: https://docs.outlit.ai/concepts/customer-context-graph\n\n## Common Prompts\n\n- \"What changed for this customer this week?\"\n- \"Who is paying but inactive for 30 days?\"\n- \"What pricing objections show up in conversations?\"\n- \"List recent opportunity sources for Acme.\"\n- \"Which channels are driving revenue?\"\n- \"Notify Slack with the high-confidence expansion candidates.\"\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1782443725808\n}\n\nFile v1.0.6:references/sql-reference.md\n\n# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups.\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\nUse when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, setup, notifications, integrations, or troubleshooting agent access. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[leo-paz](https://clawhub.ai/user/leo-paz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and customer-facing teams use this skill to query Outlit customer intelligence, inspect customer timelines and facts, run read-only analytics, configure agent access, and troubleshoot integrations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can guide agents to access customer intelligence data that may include sensitive customer, billing, support, CRM, and communication context. <br>\nMitigation: Install and use it only in trusted Outlit workspaces, request only needed fields, and handle returned customer data according to the user's data governance requirements. <br>\nRisk: Credential handling is required for CLI or tool access. <br>\nMitigation: Prefer OAuth or environment-based credentials such as OUTLIT_API_KEY, avoid hardcoding shared endpoints or bearer tokens, and verify authentication state before use. <br>\nRisk: The fast installer uses a curl-to-bash pattern. <br>\nMitigation: Prefer the documented npm or Homebrew install paths when possible, and review installer behavior before running direct shell installation. <br>\nRisk: Notification and integration setup commands can perform account-level actions. <br>\nMitigation: Run notification, integration setup, or provider credential commands only after the user explicitly asks for those actions. <br>\n\n\n## Reference(s): <br>\n- [Outlit homepage](https://outlit.ai) <br>\n- [Outlit documentation](https://docs.outlit.ai/) <br>\n- [CLI overview](https://docs.outlit.ai/cli/overview) <br>\n- [CLI commands](https://docs.outlit.ai/cli/commands) <br>\n- [CLI integrations](https://docs.outlit.ai/cli/integrations) <br>\n- [AI agent setup](https://docs.outlit.ai/cli/ai-agents) <br>\n- [Agent skills](https://docs.outlit.ai/ai-integrations/skills) <br>\n- [MCP integration](https://docs.outlit.ai/ai-integrations/mcp) <br>\n- [Pi agents](https://docs.outlit.ai/ai-integrations/pi) <br>\n- [Public tools API](https://docs.outlit.ai/api-reference/tools) <br>\n- [Customer context graph](https://docs.outlit.ai/concepts/customer-context-graph) <br>\n- [SQL Reference](references/sql-reference.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, SQ\n\nArchive v1.0.5: 4 files, 7687 bytes\n\nFiles: references/sql-reference.md (1236b), skill-card.md (3384b), SKILL.md (12951b), _meta.json (125b)\n\nArchive v1.0.4: 5 files, 6634 bytes\n\nFiles: agents/openai.yaml (209b), references/sql-reference.md (1091b), skill-card.md (3043b), SKILL.md (9061b), _meta.json (125b)\n\nArchive v1.0.3: 3 files, 2980 bytes\n\nFiles: references/sql-reference.md (1091b), SKILL.md (4407b), _meta.json (125b)\n\nArchive v1.0.2: 2 files, 2297 bytes\n\nFiles: SKILL.md (4140b), _meta.json (125b)","readmeExcerpt":"Skill: outlit Owner: leo-paz Summary: Use when accessing Outlit customer intelligence through the outlit CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access. Tags: latest:1.0.11 Version history: v1","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -fsSL https://outlit.ai/install.sh | bash"},{"language":"bash","snippet":"curl -fsSL https://outlit.ai/install.sh | bash\n# Alternatives:\nnpm install -g @outlit/cli\nbrew install outlitai/tap/outlit"},{"language":"bash","snippet":"outlit onboard --agent <agent> --json\noutlit auth login --browser --json\noutlit auth status\noutlit auth whoami\noutlit doctor --json"},{"language":"text","snippet":"https://mcp.outlit.ai/w/<workspace-slug>/mcp"},{"language":"bash","snippet":"pi install npm:@outlit/pi\nexport OUTLIT_API_KEY=ok_your_api_key\npi"},{"language":"text","snippet":"outlit integrations setup <provider>\noutlit integrations status [provider]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: outlit\ndescription: Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access.\nmetadata:\n  openclaw:\n    homepage: \"https://outlit.ai\"\n    emoji: \"🔦\"\n    requires:\n      bins: [outlit]\n    primaryEnv: OUTLIT_API_KEY\n    install:\n      - kind: node\n        package: \"@outlit/cli\"\n        bins: [outlit]\n      - kind: brew\n        formula: outlitai/tap/outlit\n        bins: [outlit]\n---\n\n# Outlit\n\nOutlit joins product activity, conversations, billing, support, CRM, and web signals into customer profiles, timelines, facts, and source evidence for agents.\n\n## When to Use Outlit\n\nUse Outlit when the user needs real customer context for onboarding, adoption, retention, renewal, or expansion. Typical jobs include:\n\n- Find accounts with declining activity, renewal risk, expansion demand, or stalled onboarding.\n- Explain what changed for a customer and trace the answer to facts, events, conversations, or source records.\n- Prepare account research, customer-success follow-up, or custom analytics across customer data.\n- Inspect or configure an Outlit workspace capability when the user explicitly asks.\n\nDo not call Outlit for generic customer-success advice that does not need workspace data. Use the `outlit-sdk` skill instead when the user wants to instrument an application with tracking SDKs.\n\n## Choose the Interface\n\nUse the highest-level interface already available:\n\n1. If suitable `outlit_*` MCP or Pi tools are present, call them.\n2. Otherwise, if the `outlit` CLI is installed, use it.\n3. Otherwise, guide setup:\n   - Coding agents: run `outlit onboard --agent <agent> --json`. Outside CI, it can start browser approval when no key is available, install this skill, validate access, and return next actions.\n   - Skills only: run `outlit setup --yes` or `outlit setup skills`.\n   - MCP clients: use the workspace URL from **Settings > CLI & MCP** and complete OAuth in the client. Do not hardcode a shared endpoint, bearer header, or API key into remote MCP configuration.\n\n## Quick Chooser\n\nTool availability depends on the MCP server or Pi tool policy. If a named tool is absent, use the CLI only where your policy permits, or ask the user to enable the appropriate toolset.\n\n| Need | Tool when exposed | CLI |\n|------|-------------------|-----|\n| Browse customers | `outlit_list_customers` | `outlit customers list` |\n| Browse customer-associated users | `outlit_list_users` | `outlit users list` |\n| Browse workspace users | `outlit_list_workspace_users` | `outlit ws-users list` |\n| Single account profile | `outlit_get_customer` | `outlit customers get` |\n| Current customer relationship | `outlit_get_customer_relationship` | `outlit customers relationship` |\n| Chronology | `outlit"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c03kweztgxab3q20f9vahz1817040\",\n  \"slug\": \"outlit\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1790653043637\n}"},{"path":"references/identity.md","content":"# Customer identity and merge workflow\n\nUse the tool schemas exposed by the connected MCP server or installed CLI. Identity tools require a supporting server rollout and client version; documentation alone does not prove they are deployed. If a tool is absent, check the installed CLI help and available published upgrade. Do not invent a command or bypass an agent policy.\n\n## Diagnose before combining records\n\n`outlit_get_customer_identity` takes `{ customerId }` and returns candidate metadata and supporting references, a search window, timestamps, coverage, and limits. Its current search is bounded by call-participant domains, not every possible identity source. Candidates do not grant access to another customer's evidence. Treat an incomplete result as unknown coverage.\n\n```sh\noutlit customers identity <customerId> --json\n```\n\nInspect exact customer records and source evidence within your existing access. A shared consultant, similar company name, related domain, or parent/subsidiary relationship is not enough to establish that the records represent the same company. If uncertain, stop at diagnosis and explain the uncertainty.\n\n## Saved suggestions and existing work\n\n`outlit_list_identity_merge_suggestions` accepts optional `customerId`, `suggestionId`, `status`, `confidence`, `cursor`, and `limit`. It returns `{ suggestions, nextCursor, canManageIdentityMerges }`. The default limit is 50 and maximum is 100. Status filters are `suggested`, `processing`, `merged`, and `rejected`; confidence filters are `HIGH`, `MEDIUM`, and `LOW`.\n\n```sh\noutlit identity suggestions list --customer-id <customerId> --json\noutlit identity suggestions list --suggestion-id <suggestionId> --json\n```\n\nEach suggestion includes its `id`, survivor, duplicate, review details, impact, `canMerge`, `canReject`, and nullable `latestJob`. Inspect one suggestion through this list filter; there is no separate suggestion-get tool. Follow `nextCursor` using `--cursor` for more pages.\n\nWhen `latestJob.operationId` is non-null, pass it to the status tool. `latestJob.id` is a job ID, not an operation ID. A null operation ID means there is no matching tracked operation for that job; do not substitute the job ID or infer that no work has happened. An empty suggestion list does not rule out an unsuggested merge. Reuse an operation ID from an earlier execution response when available.\n\nIf a merge is already queued or running, track it rather than submitting a new request. If prior execution is uncertain, retry only the identical execution input with its original request ID. Do not generate a new ID to get around a conflict. If prior execution is uncertain and neither the original request ID nor operation ID is available, stop execution and report the unresolved state.\n\nTo reject a suggestion when the user asks, use `outlit_reject_identity_merge_suggestion` with `{ suggestionId, reviewNotes? }`. Its response is exactly `{ suggestionId, status: \"REJECTED\" }`; rejection keeps the records sepa"},{"path":"references/sql-reference.md","content":"# SQL Reference\n\nUse this when writing or debugging `outlit_query` / `outlit sql` queries.\n\nAlways inspect schema first with `outlit_schema` or `outlit schema`.\n\n## Tables\n\nUse the public analytics views exposed by `outlit schema`, not backend table names:\n\n- `activity`: product, communication, support, CRM, and other customer activity\n- `customers`: customer/account attributes, billing status, and revenue fields\n- `users`: user/contact attributes and journey-stage fields\n- `revenue`: revenue and MRR reporting fields\n\n## ClickHouse patterns\n\n```sql\nnow()\ntoday()\ntoStartOfMonth(occurred_at)\ndateDiff('day', first_seen_at, now())\noccurred_at >= now() - INTERVAL 30 DAY\ncountIf(billing_status = 'PAYING')\nsumIf(mrr_cents, billing_status = 'PAYING')\nJSONExtractString(properties, 'path')\n```\n\nUse ClickHouse syntax, not MySQL or Postgres helpers like `DATE_SUB()`.\n\n## Rules\n\n- Only `SELECT` queries are allowed.\n- Add time filters for event queries.\n- Use `LIMIT`.\n- Prefer specific columns over `SELECT *`.\n- Divide cents by `100` for display.\n\n## Use SQL when\n\n- You need aggregates, cohorts, joins, or time-series analysis.\n- You need cross-customer reporting.\n\nUse customer tools or commands instead for single-account lookups."},{"path":"skill-card.md","content":"## Description:\n\nGuides agents in using Outlit customer intelligence to investigate accounts, analyze customer data, and manage authorized workspace changes through available tools.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[leo-paz](https://clawhub.ai/user/leo-paz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCustomer-success teams and developers use this skill to investigate onboarding, adoption, retention, renewal, and expansion using Outlit customer records and analytics. With explicit authorization, they can also configure workspace capabilities and review customer identity changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Piping a downloaded installer into a shell can execute unreviewed code.\n\nMitigation: Prefer the documented npm or Homebrew installation paths when practical.\n\nRisk: Workspace write grants can change access, destinations, integrations, activation, settings, Features, or identity records.\n\nMitigation: Confirm the intended change and grant only the permissions needed before allowing write actions.\n\nRisk: Customer merges are irreversible and can combine unrelated records.\n\nMitigation: Review the merge preview and execute only after clear authorization and confirmation that both records identify the same customer.\n\n## Reference(s):\n\n- [Outlit documentation](https://docs.outlit.ai/)\n- [Outlit documentation index](https://docs.outlit.ai/llms.txt)\n- [Outlit homepage](https://outlit.ai)\n- [Outlit ClawHub release](https://clawhub.ai/leo-paz/skills/outlit)\n- [Customer identity and merge workflow](references/identity.md)\n- [SQL reference](references/sql-reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, SQL, Configuration guidance]\n\n**Output Format:** [Markdown with inline commands and query examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Responses should distinguish evidence from interpretation; workspace changes require explicit authorization.]\n\n## Skill Version(s):\n\n1.0.11 (source: server-resolved ClawHub release)\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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when accessing Outlit customer intelligence through the `outlit` CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access. Skill: outlit Owner: leo-paz Summary: Use when accessing Outlit customer intelligence through the outlit CLI, Outlit MCP tools, Pi tools, or @outlit/tools, including customer lookups, users, workspace users, timelines, facts, source evidence, semantic search, revenue, churn, SQL analytics, identity splits, merge suggestions, setup, integrations, or troubleshooting agent access. Tags: latest:1.0.11 Version history: v1","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1765,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T20:20:17.829Z","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-09T20:20:17.829Z","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-09T21:35:40.963Z","emptyReason":null},"items":[{"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-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"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":"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"}]}}}