{
  "schemaVersion": "1.0",
  "item": {
    "slug": "amplitude-automation",
    "name": "Amplitude Automation",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sohamganatra/amplitude-automation",
    "canonicalUrl": "https://clawhub.ai/sohamganatra/amplitude-automation",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/amplitude-automation",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=amplitude-automation",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/amplitude-automation"
    },
    "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/amplitude-automation",
    "agentPageUrl": "https://openagent3.xyz/skills/amplitude-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/amplitude-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/amplitude-automation/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": "Amplitude Automation via Rube MCP",
        "body": "Automate Amplitude product analytics through Composio's Amplitude toolkit via Rube MCP."
      },
      {
        "title": "Prerequisites",
        "body": "Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Amplitude connection via RUBE_MANAGE_CONNECTIONS with toolkit amplitude\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas"
      },
      {
        "title": "Setup",
        "body": "Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit amplitude\nIf connection is not ACTIVE, follow the returned auth link to complete Amplitude authentication\nConfirm connection status shows ACTIVE before running any workflows"
      },
      {
        "title": "1. Send Events",
        "body": "When to use: User wants to track events or send event data to Amplitude\n\nTool sequence:\n\nAMPLITUDE_SEND_EVENTS - Send one or more events to Amplitude [Required]\n\nKey parameters:\n\nevents: Array of event objects, each containing:\n\nevent_type: Name of the event (e.g., 'page_view', 'purchase')\nuser_id: Unique user identifier (required if no device_id)\ndevice_id: Device identifier (required if no user_id)\nevent_properties: Object with custom event properties\nuser_properties: Object with user properties to set\ntime: Event timestamp in milliseconds since epoch\n\nPitfalls:\n\nAt least one of user_id or device_id is required per event\nevent_type is required for every event; cannot be empty\ntime must be in milliseconds (13-digit epoch), not seconds\nBatch limit applies; check schema for maximum events per request\nEvents are processed asynchronously; successful API response does not mean data is immediately queryable"
      },
      {
        "title": "2. Get User Activity",
        "body": "When to use: User wants to view event history for a specific user\n\nTool sequence:\n\nAMPLITUDE_FIND_USER - Find user by ID or property [Prerequisite]\nAMPLITUDE_GET_USER_ACTIVITY - Retrieve user's event stream [Required]\n\nKey parameters:\n\nuser: Amplitude internal user ID (from FIND_USER)\noffset: Pagination offset for event list\nlimit: Maximum number of events to return\n\nPitfalls:\n\nuser parameter requires Amplitude's internal user ID, NOT your application's user_id\nMust call FIND_USER first to resolve your user_id to Amplitude's internal ID\nActivity is returned in reverse chronological order by default\nLarge activity histories require pagination via offset"
      },
      {
        "title": "3. Find and Identify Users",
        "body": "When to use: User wants to look up users or set user properties\n\nTool sequence:\n\nAMPLITUDE_FIND_USER - Search for a user by various identifiers [Required]\nAMPLITUDE_IDENTIFY - Set or update user properties [Optional]\n\nKey parameters:\n\nFor FIND_USER:\n\nuser: Search term (user_id, email, or Amplitude ID)\n\n\nFor IDENTIFY:\n\nuser_id: Your application's user identifier\ndevice_id: Device identifier (alternative to user_id)\nuser_properties: Object with $set, $unset, $add, $append operations\n\nPitfalls:\n\nFIND_USER searches across user_id, device_id, and Amplitude ID\nIDENTIFY uses special property operations ($set, $unset, $add, $append)\n$set overwrites existing values; $setOnce only sets if not already set\nAt least one of user_id or device_id is required for IDENTIFY\nUser property changes are eventually consistent; not immediate"
      },
      {
        "title": "4. Manage Cohorts",
        "body": "When to use: User wants to list cohorts, view cohort details, or update cohort membership\n\nTool sequence:\n\nAMPLITUDE_LIST_COHORTS - List all saved cohorts [Required]\nAMPLITUDE_GET_COHORT - Get detailed cohort information [Optional]\nAMPLITUDE_UPDATE_COHORT_MEMBERSHIP - Add/remove users from a cohort [Optional]\nAMPLITUDE_CHECK_COHORT_STATUS - Check async cohort operation status [Optional]\n\nKey parameters:\n\nFor LIST_COHORTS: No required parameters\nFor GET_COHORT: cohort_id (from list results)\nFor UPDATE_COHORT_MEMBERSHIP:\n\ncohort_id: Target cohort ID\nmemberships: Object with add and/or remove arrays of user IDs\n\n\nFor CHECK_COHORT_STATUS: request_id from update response\n\nPitfalls:\n\nCohort IDs are required for all cohort-specific operations\nUPDATE_COHORT_MEMBERSHIP is asynchronous; use CHECK_COHORT_STATUS to verify\nrequest_id from the update response is needed for status checking\nMaximum membership changes per request may be limited; chunk large updates\nOnly behavioral cohorts support API membership updates"
      },
      {
        "title": "5. Browse Event Categories",
        "body": "When to use: User wants to discover available event types and categories in Amplitude\n\nTool sequence:\n\nAMPLITUDE_GET_EVENT_CATEGORIES - List all event categories [Required]\n\nKey parameters:\n\nNo required parameters; returns all configured event categories\n\nPitfalls:\n\nCategories are configured in Amplitude UI; API provides read access\nEvent names within categories are case-sensitive\nUse these categories to validate event_type values before sending events"
      },
      {
        "title": "ID Resolution",
        "body": "Application user_id -> Amplitude internal ID:\n\n1. Call AMPLITUDE_FIND_USER with user=your_user_id\n2. Extract Amplitude's internal user ID from response\n3. Use internal ID for GET_USER_ACTIVITY\n\nCohort name -> Cohort ID:\n\n1. Call AMPLITUDE_LIST_COHORTS\n2. Find cohort by name in results\n3. Extract id for cohort operations"
      },
      {
        "title": "User Property Operations",
        "body": "Amplitude IDENTIFY supports these property operations:\n\n$set: Set property value (overwrites existing)\n$setOnce: Set only if property not already set\n$add: Increment numeric property\n$append: Append to list property\n$unset: Remove property entirely\n\nExample structure:\n\n{\n  \"user_properties\": {\n    \"$set\": {\"plan\": \"premium\", \"company\": \"Acme\"},\n    \"$add\": {\"login_count\": 1}\n  }\n}"
      },
      {
        "title": "Async Operation Pattern",
        "body": "For cohort membership updates:\n\n1. Call AMPLITUDE_UPDATE_COHORT_MEMBERSHIP -> get request_id\n2. Call AMPLITUDE_CHECK_COHORT_STATUS with request_id\n3. Repeat step 2 until status is 'complete' or 'error'"
      },
      {
        "title": "Known Pitfalls",
        "body": "User IDs:\n\nAmplitude has its own internal user IDs separate from your application's\nFIND_USER resolves your IDs to Amplitude's internal IDs\nGET_USER_ACTIVITY requires Amplitude's internal ID, not your user_id\n\nEvent Timestamps:\n\nMust be in milliseconds since epoch (13 digits)\nSeconds (10 digits) will be interpreted as very old dates\nOmitting timestamp uses server receive time\n\nRate Limits:\n\nEvent ingestion has throughput limits per project\nBatch events where possible to reduce API calls\nCohort membership updates have async processing limits\n\nResponse Parsing:\n\nResponse data may be nested under data key\nUser activity returns events in reverse chronological order\nCohort lists may include archived cohorts; check status field\nParse defensively with fallbacks for optional fields"
      },
      {
        "title": "Quick Reference",
        "body": "TaskTool SlugKey ParamsSend eventsAMPLITUDE_SEND_EVENTSevents (array)Find userAMPLITUDE_FIND_USERuserGet user activityAMPLITUDE_GET_USER_ACTIVITYuser, offset, limitIdentify userAMPLITUDE_IDENTIFYuser_id, user_propertiesList cohortsAMPLITUDE_LIST_COHORTS(none)Get cohortAMPLITUDE_GET_COHORTcohort_idUpdate cohort membersAMPLITUDE_UPDATE_COHORT_MEMBERSHIPcohort_id, membershipsCheck cohort statusAMPLITUDE_CHECK_COHORT_STATUSrequest_idList event categoriesAMPLITUDE_GET_EVENT_CATEGORIES(none)"
      }
    ],
    "body": "Amplitude Automation via Rube MCP\n\nAutomate Amplitude product analytics through Composio's Amplitude toolkit via Rube MCP.\n\nPrerequisites\nRube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Amplitude connection via RUBE_MANAGE_CONNECTIONS with toolkit amplitude\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas\nSetup\n\nGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit amplitude\nIf connection is not ACTIVE, follow the returned auth link to complete Amplitude authentication\nConfirm connection status shows ACTIVE before running any workflows\nCore Workflows\n1. Send Events\n\nWhen to use: User wants to track events or send event data to Amplitude\n\nTool sequence:\n\nAMPLITUDE_SEND_EVENTS - Send one or more events to Amplitude [Required]\n\nKey parameters:\n\nevents: Array of event objects, each containing:\nevent_type: Name of the event (e.g., 'page_view', 'purchase')\nuser_id: Unique user identifier (required if no device_id)\ndevice_id: Device identifier (required if no user_id)\nevent_properties: Object with custom event properties\nuser_properties: Object with user properties to set\ntime: Event timestamp in milliseconds since epoch\n\nPitfalls:\n\nAt least one of user_id or device_id is required per event\nevent_type is required for every event; cannot be empty\ntime must be in milliseconds (13-digit epoch), not seconds\nBatch limit applies; check schema for maximum events per request\nEvents are processed asynchronously; successful API response does not mean data is immediately queryable\n2. Get User Activity\n\nWhen to use: User wants to view event history for a specific user\n\nTool sequence:\n\nAMPLITUDE_FIND_USER - Find user by ID or property [Prerequisite]\nAMPLITUDE_GET_USER_ACTIVITY - Retrieve user's event stream [Required]\n\nKey parameters:\n\nuser: Amplitude internal user ID (from FIND_USER)\noffset: Pagination offset for event list\nlimit: Maximum number of events to return\n\nPitfalls:\n\nuser parameter requires Amplitude's internal user ID, NOT your application's user_id\nMust call FIND_USER first to resolve your user_id to Amplitude's internal ID\nActivity is returned in reverse chronological order by default\nLarge activity histories require pagination via offset\n3. Find and Identify Users\n\nWhen to use: User wants to look up users or set user properties\n\nTool sequence:\n\nAMPLITUDE_FIND_USER - Search for a user by various identifiers [Required]\nAMPLITUDE_IDENTIFY - Set or update user properties [Optional]\n\nKey parameters:\n\nFor FIND_USER:\nuser: Search term (user_id, email, or Amplitude ID)\nFor IDENTIFY:\nuser_id: Your application's user identifier\ndevice_id: Device identifier (alternative to user_id)\nuser_properties: Object with $set, $unset, $add, $append operations\n\nPitfalls:\n\nFIND_USER searches across user_id, device_id, and Amplitude ID\nIDENTIFY uses special property operations ($set, $unset, $add, $append)\n$set overwrites existing values; $setOnce only sets if not already set\nAt least one of user_id or device_id is required for IDENTIFY\nUser property changes are eventually consistent; not immediate\n4. Manage Cohorts\n\nWhen to use: User wants to list cohorts, view cohort details, or update cohort membership\n\nTool sequence:\n\nAMPLITUDE_LIST_COHORTS - List all saved cohorts [Required]\nAMPLITUDE_GET_COHORT - Get detailed cohort information [Optional]\nAMPLITUDE_UPDATE_COHORT_MEMBERSHIP - Add/remove users from a cohort [Optional]\nAMPLITUDE_CHECK_COHORT_STATUS - Check async cohort operation status [Optional]\n\nKey parameters:\n\nFor LIST_COHORTS: No required parameters\nFor GET_COHORT: cohort_id (from list results)\nFor UPDATE_COHORT_MEMBERSHIP:\ncohort_id: Target cohort ID\nmemberships: Object with add and/or remove arrays of user IDs\nFor CHECK_COHORT_STATUS: request_id from update response\n\nPitfalls:\n\nCohort IDs are required for all cohort-specific operations\nUPDATE_COHORT_MEMBERSHIP is asynchronous; use CHECK_COHORT_STATUS to verify\nrequest_id from the update response is needed for status checking\nMaximum membership changes per request may be limited; chunk large updates\nOnly behavioral cohorts support API membership updates\n5. Browse Event Categories\n\nWhen to use: User wants to discover available event types and categories in Amplitude\n\nTool sequence:\n\nAMPLITUDE_GET_EVENT_CATEGORIES - List all event categories [Required]\n\nKey parameters:\n\nNo required parameters; returns all configured event categories\n\nPitfalls:\n\nCategories are configured in Amplitude UI; API provides read access\nEvent names within categories are case-sensitive\nUse these categories to validate event_type values before sending events\nCommon Patterns\nID Resolution\n\nApplication user_id -> Amplitude internal ID:\n\n1. Call AMPLITUDE_FIND_USER with user=your_user_id\n2. Extract Amplitude's internal user ID from response\n3. Use internal ID for GET_USER_ACTIVITY\n\n\nCohort name -> Cohort ID:\n\n1. Call AMPLITUDE_LIST_COHORTS\n2. Find cohort by name in results\n3. Extract id for cohort operations\n\nUser Property Operations\n\nAmplitude IDENTIFY supports these property operations:\n\n$set: Set property value (overwrites existing)\n$setOnce: Set only if property not already set\n$add: Increment numeric property\n$append: Append to list property\n$unset: Remove property entirely\n\nExample structure:\n\n{\n  \"user_properties\": {\n    \"$set\": {\"plan\": \"premium\", \"company\": \"Acme\"},\n    \"$add\": {\"login_count\": 1}\n  }\n}\n\nAsync Operation Pattern\n\nFor cohort membership updates:\n\n1. Call AMPLITUDE_UPDATE_COHORT_MEMBERSHIP -> get request_id\n2. Call AMPLITUDE_CHECK_COHORT_STATUS with request_id\n3. Repeat step 2 until status is 'complete' or 'error'\n\nKnown Pitfalls\n\nUser IDs:\n\nAmplitude has its own internal user IDs separate from your application's\nFIND_USER resolves your IDs to Amplitude's internal IDs\nGET_USER_ACTIVITY requires Amplitude's internal ID, not your user_id\n\nEvent Timestamps:\n\nMust be in milliseconds since epoch (13 digits)\nSeconds (10 digits) will be interpreted as very old dates\nOmitting timestamp uses server receive time\n\nRate Limits:\n\nEvent ingestion has throughput limits per project\nBatch events where possible to reduce API calls\nCohort membership updates have async processing limits\n\nResponse Parsing:\n\nResponse data may be nested under data key\nUser activity returns events in reverse chronological order\nCohort lists may include archived cohorts; check status field\nParse defensively with fallbacks for optional fields\nQuick Reference\nTask\tTool Slug\tKey Params\nSend events\tAMPLITUDE_SEND_EVENTS\tevents (array)\nFind user\tAMPLITUDE_FIND_USER\tuser\nGet user activity\tAMPLITUDE_GET_USER_ACTIVITY\tuser, offset, limit\nIdentify user\tAMPLITUDE_IDENTIFY\tuser_id, user_properties\nList cohorts\tAMPLITUDE_LIST_COHORTS\t(none)\nGet cohort\tAMPLITUDE_GET_COHORT\tcohort_id\nUpdate cohort members\tAMPLITUDE_UPDATE_COHORT_MEMBERSHIP\tcohort_id, memberships\nCheck cohort status\tAMPLITUDE_CHECK_COHORT_STATUS\trequest_id\nList event categories\tAMPLITUDE_GET_EVENT_CATEGORIES\t(none)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sohamganatra/amplitude-automation",
    "publisherUrl": "https://clawhub.ai/sohamganatra/amplitude-automation",
    "owner": "sohamganatra",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/amplitude-automation",
    "downloadUrl": "https://openagent3.xyz/downloads/amplitude-automation",
    "agentUrl": "https://openagent3.xyz/skills/amplitude-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/amplitude-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/amplitude-automation/agent.md"
  }
}