{
  "schemaVersion": "1.0",
  "item": {
    "slug": "outlit-mcp",
    "name": "Outlit MCP",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/leo-paz/outlit-mcp",
    "canonicalUrl": "https://clawhub.ai/leo-paz/outlit-mcp",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/outlit-mcp",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=outlit-mcp",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/workflows.md",
      "references/sql-reference.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/outlit-mcp"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/outlit-mcp",
    "agentPageUrl": "https://openagent3.xyz/skills/outlit-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/outlit-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/outlit-mcp/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Outlit MCP Server",
        "body": "Query customer intelligence data through 6 MCP tools covering customer and user profiles, revenue metrics, activity timelines, and raw SQL analytics access."
      },
      {
        "title": "Quick Start",
        "body": "What you needToolBrowse/filter customersoutlit_list_customersBrowse/filter usersoutlit_list_usersSingle customer deep diveoutlit_get_customerCustomer activity historyoutlit_get_timelineCustom analytics / aggregationsoutlit_query (SQL)Discover tables & columnsoutlit_schema\n\nBefore writing SQL: Always call outlit_schema first to discover available tables and columns."
      },
      {
        "title": "Common Patterns",
        "body": "Find at-risk customers:\n\n{\n  \"tool\": \"outlit_list_customers\",\n  \"billingStatus\": \"PAYING\",\n  \"noActivityInLast\": \"30d\",\n  \"orderBy\": \"mrr_cents\",\n  \"orderDirection\": \"desc\"\n}\n\nRevenue breakdown (SQL):\n\n{\n  \"tool\": \"outlit_query\",\n  \"sql\": \"SELECT billing_status, count(*) as customers, sum(mrr_cents)/100 as mrr_dollars FROM customer_dimensions GROUP BY 1 ORDER BY 3 DESC\"\n}"
      },
      {
        "title": "Get an API Key",
        "body": "Go to Settings > MCP Integration in the Outlit dashboard (app.outlit.ai)."
      },
      {
        "title": "Auto-Detection Setup",
        "body": "Detect the current environment and run the appropriate setup command:\n\nCheck for Claude Code — If running inside Claude Code (check if claude CLI is available), run:\nclaude mcp add outlit https://mcp.outlit.ai/mcp -- --header \"Authorization: Bearer API_KEY\"\n\n\n\nCheck for Cursor — If .cursor/mcp.json exists in the project or home directory, add to that file:\n{\n  \"mcpServers\": {\n    \"outlit\": {\n      \"url\": \"https://mcp.outlit.ai/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer API_KEY\" }\n    }\n  }\n}\n\n\n\nCheck for Claude Desktop — If claude_desktop_config.json exists at ~/Library/Application Support/Claude/ (macOS) or %APPDATA%/Claude/ (Windows), add to that file:\n{\n  \"mcpServers\": {\n    \"outlit\": {\n      \"url\": \"https://mcp.outlit.ai/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer API_KEY\" }\n    }\n  }\n}\n\nAsk the user for their API key if not provided. Replace API_KEY with the actual key."
      },
      {
        "title": "Verify Connection",
        "body": "Call outlit_schema to confirm the connection is working."
      },
      {
        "title": "outlit_list_customers",
        "body": "Filter and paginate customers.\n\nKey ParamsValuesbillingStatusNONE, TRIALING, PAYING, CHURNEDhasActivityInLast / noActivityInLast7d, 14d, 30d, 90d (mutually exclusive)mrrAbove / mrrBelowcents (10000 = $100)searchname or domainorderBylast_activity_at, first_seen_at, name, mrr_centslimit1-1000 (default: 20)cursorpagination token"
      },
      {
        "title": "outlit_list_users",
        "body": "Filter and paginate users.\n\nKey ParamsValuesjourneyStageDISCOVERED, SIGNED_UP, ACTIVATED, ENGAGED, INACTIVEcustomerIdfilter by customerhasActivityInLast / noActivityInLastNd, Nh, or Nm (e.g., 7d, 24h) — mutually exclusivesearchemail or nameorderBylast_activity_at, first_seen_at, emaillimit1-1000 (default: 20)cursorpagination token"
      },
      {
        "title": "outlit_get_customer",
        "body": "Single customer deep dive. Accepts customer ID, domain, or name.\n\nKey ParamsValuescustomercustomer ID, domain, or name (required)includeusers, revenue, recentTimeline, behaviorMetricstimeframe7d, 14d, 30d, 90d (default: 30d)\n\nOnly request the include sections you need — omitting unused ones is faster."
      },
      {
        "title": "outlit_get_timeline",
        "body": "Activity timeline for a customer.\n\nKey ParamsValuescustomercustomer ID or domain (required)channelsSDK, EMAIL, SLACK, CALL, CRM, BILLING, SUPPORT, INTERNALeventTypesfilter by specific event typestimeframe7d, 14d, 30d, 90d, all (default: 30d)startDate / endDateISO 8601 (mutually exclusive with timeframe)limit1-1000 (default: 50)cursorpagination token"
      },
      {
        "title": "outlit_query",
        "body": "Raw SQL against ClickHouse analytics tables. SELECT only. See SQL Reference for ClickHouse syntax and security model.\n\nKey ParamsValuessqlSQL SELECT query (required)limit1-10000 (default: 1000)\n\nAvailable tables: events, customer_dimensions, user_dimensions, mrr_snapshots."
      },
      {
        "title": "outlit_schema",
        "body": "Discover tables and columns. Call with no params for all tables, or table: \"events\" for a specific table. Always call this before writing SQL."
      },
      {
        "title": "Data Model",
        "body": "Billing status: NONE → TRIALING → PAYING → CHURNED\n\nJourney stages: DISCOVERED → SIGNED_UP → ACTIVATED → ENGAGED → INACTIVE\n\nData formats:\n\nMonetary values in cents (divide by 100 for dollars)\nTimestamps in ISO 8601\nIDs with string prefixes (cust_, contact_, evt_)\n\nPagination: All list endpoints use cursor-based pagination. Check pagination.hasMore before requesting more pages. Pass pagination.nextCursor as cursor for the next page."
      },
      {
        "title": "Best Practices",
        "body": "Call outlit_schema before writing SQL — discover columns, don't guess\nUse customer tools for single lookups — don't use SQL for individual customer queries\nFilter at the source — use tool params and WHERE clauses, not post-fetch filtering\nOnly request needed includes — omit unused include options for faster responses\nAlways add time filters to event SQL — WHERE occurred_at >= now() - INTERVAL N DAY\nConvert cents to dollars — divide monetary values by 100 for display\nUse LIMIT in SQL — cap result sets to avoid large data transfers"
      },
      {
        "title": "Known Limitations",
        "body": "SQL is read-only — no INSERT, UPDATE, DELETE\nOrganization isolation — cannot query other organizations' data\nTimeline requires a customer — cannot query timeline across all customers\nMRR filtering is post-fetch — may be slower on large datasets in list_customers\nEvent queries need time filters — queries without date ranges scan all data\nClickHouse syntax — uses different functions than MySQL/PostgreSQL (see SQL Reference)"
      },
      {
        "title": "Tool Gotchas",
        "body": "ToolGotchaoutlit_list_customershasActivityInLast and noActivityInLast are mutually exclusiveoutlit_list_customerssearch checks name and domain onlyoutlit_get_customerbehaviorMetrics depends on timeframe — extend it if emptyoutlit_get_timelinetimeframe and startDate/endDate are mutually exclusiveoutlit_queryUse ClickHouse date syntax: now() - INTERVAL 30 DAY, not DATE_SUB()outlit_queryproperties column is JSON — use JSONExtractString(properties, 'key')"
      },
      {
        "title": "References",
        "body": "ReferenceWhen to ReadSQL ReferenceClickHouse syntax, security model, query patternsWorkflowsMulti-step analysis: churn risk, revenue dashboards, account health"
      }
    ],
    "body": "Outlit MCP Server\n\nQuery customer intelligence data through 6 MCP tools covering customer and user profiles, revenue metrics, activity timelines, and raw SQL analytics access.\n\nQuick Start\nWhat you need\tTool\nBrowse/filter customers\toutlit_list_customers\nBrowse/filter users\toutlit_list_users\nSingle customer deep dive\toutlit_get_customer\nCustomer activity history\toutlit_get_timeline\nCustom analytics / aggregations\toutlit_query (SQL)\nDiscover tables & columns\toutlit_schema\n\nBefore writing SQL: Always call outlit_schema first to discover available tables and columns.\n\nCommon Patterns\n\nFind at-risk customers:\n\n{\n  \"tool\": \"outlit_list_customers\",\n  \"billingStatus\": \"PAYING\",\n  \"noActivityInLast\": \"30d\",\n  \"orderBy\": \"mrr_cents\",\n  \"orderDirection\": \"desc\"\n}\n\n\nRevenue breakdown (SQL):\n\n{\n  \"tool\": \"outlit_query\",\n  \"sql\": \"SELECT billing_status, count(*) as customers, sum(mrr_cents)/100 as mrr_dollars FROM customer_dimensions GROUP BY 1 ORDER BY 3 DESC\"\n}\n\nMCP Setup\nGet an API Key\n\nGo to Settings > MCP Integration in the Outlit dashboard (app.outlit.ai).\n\nAuto-Detection Setup\n\nDetect the current environment and run the appropriate setup command:\n\nCheck for Claude Code — If running inside Claude Code (check if claude CLI is available), run:\n\nclaude mcp add outlit https://mcp.outlit.ai/mcp -- --header \"Authorization: Bearer API_KEY\"\n\n\nCheck for Cursor — If .cursor/mcp.json exists in the project or home directory, add to that file:\n\n{\n  \"mcpServers\": {\n    \"outlit\": {\n      \"url\": \"https://mcp.outlit.ai/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer API_KEY\" }\n    }\n  }\n}\n\n\nCheck for Claude Desktop — If claude_desktop_config.json exists at ~/Library/Application Support/Claude/ (macOS) or %APPDATA%/Claude/ (Windows), add to that file:\n\n{\n  \"mcpServers\": {\n    \"outlit\": {\n      \"url\": \"https://mcp.outlit.ai/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer API_KEY\" }\n    }\n  }\n}\n\n\nAsk the user for their API key if not provided. Replace API_KEY with the actual key.\n\nVerify Connection\n\nCall outlit_schema to confirm the connection is working.\n\nTool Reference\noutlit_list_customers\n\nFilter and paginate customers.\n\nKey Params\tValues\nbillingStatus\tNONE, TRIALING, PAYING, CHURNED\nhasActivityInLast / noActivityInLast\t7d, 14d, 30d, 90d (mutually exclusive)\nmrrAbove / mrrBelow\tcents (10000 = $100)\nsearch\tname or domain\norderBy\tlast_activity_at, first_seen_at, name, mrr_cents\nlimit\t1-1000 (default: 20)\ncursor\tpagination token\noutlit_list_users\n\nFilter and paginate users.\n\nKey Params\tValues\njourneyStage\tDISCOVERED, SIGNED_UP, ACTIVATED, ENGAGED, INACTIVE\ncustomerId\tfilter by customer\nhasActivityInLast / noActivityInLast\tNd, Nh, or Nm (e.g., 7d, 24h) — mutually exclusive\nsearch\temail or name\norderBy\tlast_activity_at, first_seen_at, email\nlimit\t1-1000 (default: 20)\ncursor\tpagination token\noutlit_get_customer\n\nSingle customer deep dive. Accepts customer ID, domain, or name.\n\nKey Params\tValues\ncustomer\tcustomer ID, domain, or name (required)\ninclude\tusers, revenue, recentTimeline, behaviorMetrics\ntimeframe\t7d, 14d, 30d, 90d (default: 30d)\n\nOnly request the include sections you need — omitting unused ones is faster.\n\noutlit_get_timeline\n\nActivity timeline for a customer.\n\nKey Params\tValues\ncustomer\tcustomer ID or domain (required)\nchannels\tSDK, EMAIL, SLACK, CALL, CRM, BILLING, SUPPORT, INTERNAL\neventTypes\tfilter by specific event types\ntimeframe\t7d, 14d, 30d, 90d, all (default: 30d)\nstartDate / endDate\tISO 8601 (mutually exclusive with timeframe)\nlimit\t1-1000 (default: 50)\ncursor\tpagination token\noutlit_query\n\nRaw SQL against ClickHouse analytics tables. SELECT only. See SQL Reference for ClickHouse syntax and security model.\n\nKey Params\tValues\nsql\tSQL SELECT query (required)\nlimit\t1-10000 (default: 1000)\n\nAvailable tables: events, customer_dimensions, user_dimensions, mrr_snapshots.\n\noutlit_schema\n\nDiscover tables and columns. Call with no params for all tables, or table: \"events\" for a specific table. Always call this before writing SQL.\n\nData Model\n\nBilling status: NONE → TRIALING → PAYING → CHURNED\n\nJourney stages: DISCOVERED → SIGNED_UP → ACTIVATED → ENGAGED → INACTIVE\n\nData formats:\n\nMonetary values in cents (divide by 100 for dollars)\nTimestamps in ISO 8601\nIDs with string prefixes (cust_, contact_, evt_)\n\nPagination: All list endpoints use cursor-based pagination. Check pagination.hasMore before requesting more pages. Pass pagination.nextCursor as cursor for the next page.\n\nBest Practices\nCall outlit_schema before writing SQL — discover columns, don't guess\nUse customer tools for single lookups — don't use SQL for individual customer queries\nFilter at the source — use tool params and WHERE clauses, not post-fetch filtering\nOnly request needed includes — omit unused include options for faster responses\nAlways add time filters to event SQL — WHERE occurred_at >= now() - INTERVAL N DAY\nConvert cents to dollars — divide monetary values by 100 for display\nUse LIMIT in SQL — cap result sets to avoid large data transfers\nKnown Limitations\nSQL is read-only — no INSERT, UPDATE, DELETE\nOrganization isolation — cannot query other organizations' data\nTimeline requires a customer — cannot query timeline across all customers\nMRR filtering is post-fetch — may be slower on large datasets in list_customers\nEvent queries need time filters — queries without date ranges scan all data\nClickHouse syntax — uses different functions than MySQL/PostgreSQL (see SQL Reference)\nTool Gotchas\nTool\tGotcha\noutlit_list_customers\thasActivityInLast and noActivityInLast are mutually exclusive\noutlit_list_customers\tsearch checks name and domain only\noutlit_get_customer\tbehaviorMetrics depends on timeframe — extend it if empty\noutlit_get_timeline\ttimeframe and startDate/endDate are mutually exclusive\noutlit_query\tUse ClickHouse date syntax: now() - INTERVAL 30 DAY, not DATE_SUB()\noutlit_query\tproperties column is JSON — use JSONExtractString(properties, 'key')\nReferences\nReference\tWhen to Read\nSQL Reference\tClickHouse syntax, security model, query patterns\nWorkflows\tMulti-step analysis: churn risk, revenue dashboards, account health"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/leo-paz/outlit-mcp",
    "publisherUrl": "https://clawhub.ai/leo-paz/outlit-mcp",
    "owner": "leo-paz",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/outlit-mcp",
    "downloadUrl": "https://openagent3.xyz/downloads/outlit-mcp",
    "agentUrl": "https://openagent3.xyz/skills/outlit-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/outlit-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/outlit-mcp/agent.md"
  }
}