{
  "schemaVersion": "1.0",
  "item": {
    "slug": "happenstance",
    "name": "Happenstance",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dgoss28/happenstance",
    "canonicalUrl": "https://clawhub.ai/dgoss28/happenstance",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/happenstance",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=happenstance",
    "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-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/happenstance"
    },
    "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/happenstance",
    "agentPageUrl": "https://openagent3.xyz/skills/happenstance/agent",
    "manifestUrl": "https://openagent3.xyz/skills/happenstance/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/happenstance/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": "Happenstance",
        "body": "Search your network and get detailed research profiles on people using the Happenstance API.\n\nDocumentation: https://developer.happenstance.ai"
      },
      {
        "title": "Authentication",
        "body": "All requests require the HAPPENSTANCE_API_KEY environment variable. Pass it as a Bearer token:\n\nAuthorization: Bearer $HAPPENSTANCE_API_KEY\n\nBase URL: https://api.happenstance.ai"
      },
      {
        "title": "Billing",
        "body": "Search: 2 credits per search (including find-more)\nResearch: 1 credit per completed research\nCheck balance with GET /v1/usage\nPurchase credits at https://happenstance.ai/settings/api"
      },
      {
        "title": "1. Search Your Network",
        "body": "Search for people across groups and connections. Searches run asynchronously.\n\nStart a search:\n\ncurl -s -X POST https://api.happenstance.ai/v1/search \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"text\": \"engineers who have worked on AI infrastructure\",\n    \"include_my_connections\": true,\n    \"include_friends_connections\": true\n  }'\n\nYou can also search within specific groups by adding \"group_ids\": [\"uuid1\", \"uuid2\"]. Get group IDs from GET /v1/groups.\n\nAt least one search source is required: group_ids, include_my_connections: true, or include_friends_connections: true.\n\nResponse:\n\n{\"id\": \"search-uuid\", \"url\": \"https://happenstance.ai/search/search-uuid\"}\n\nPoll for results (every 5-10 seconds until status is COMPLETED or FAILED):\n\ncurl -s https://api.happenstance.ai/v1/search/SEARCH_ID \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\nCompleted response includes:\n\nstatus: RUNNING, COMPLETED, or FAILED\nresults: array of people, each with id, name, current_title, current_company, summary, weighted_traits_score, socials (with happenstance_url, linkedin_url, twitter_url), mutuals, and traits\nhas_more: boolean indicating if more results are available\nmutuals: top-level array of mutual connections (results reference these by index)\ntraits: top-level array of trait definitions (results reference these by index)"
      },
      {
        "title": "2. Find More Results",
        "body": "When has_more is true on a completed search, get additional results that exclude all previously returned people. Costs 2 credits.\n\ncurl -s -X POST https://api.happenstance.ai/v1/search/SEARCH_ID/find-more \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\nResponse:\n\n{\"page_id\": \"page-uuid\", \"parent_search_id\": \"search-uuid\"}\n\nThen poll with the page_id:\n\ncurl -s \"https://api.happenstance.ai/v1/search/SEARCH_ID?page_id=PAGE_ID\" \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\""
      },
      {
        "title": "3. Research a Person",
        "body": "Get a detailed professional profile for a specific person. Runs asynchronously.\n\nStart research:\n\ncurl -s -X POST https://api.happenstance.ai/v1/research \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"description\": \"Garry Tan, CEO of Y Combinator, @garrytan on Twitter\"}'\n\nInclude as many details as possible (full name, company, title, location, social handles) for best results.\n\nResponse:\n\n{\"id\": \"research-uuid\"}\n\nPoll for results (every 5-10 seconds until status is COMPLETED, FAILED, or FAILED_AMBIGUOUS):\n\ncurl -s https://api.happenstance.ai/v1/research/RESEARCH_ID \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\nCompleted response includes a profile object with:\n\nperson_metadata: full_name, alternate_names, profile_urls, current_locations, tagline\nemployment: array of jobs with company_name, job_title, start_date, end_date, description\neducation: array with university_name, degree, start_date, end_date\nprojects: array with title, description, urls\nwritings: array of publications with title, description, date, urls\nhobbies: array with description\nsummary: overall text summary with supporting urls"
      },
      {
        "title": "4. List Groups",
        "body": "Get the groups you can search within:\n\ncurl -s https://api.happenstance.ai/v1/groups \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\nReturns {\"groups\": [{\"id\": \"uuid\", \"name\": \"Group Name\"}, ...]}."
      },
      {
        "title": "5. Check Credits and Usage",
        "body": "curl -s https://api.happenstance.ai/v1/usage \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\nReturns balance_credits, has_credits, purchases, usage history, and auto_reload settings."
      },
      {
        "title": "Error Handling",
        "body": "Errors use RFC 7807 format:\n\n{\"type\": \"about:blank\", \"title\": \"Bad Request\", \"status\": 400, \"detail\": \"Description must not be empty\", \"instance\": \"/v1/research\"}\n\nKey status codes:\n\n401: Invalid or missing API key\n402: Insufficient credits\n429: Too many concurrent requests (max 10 running searches or research requests)\n500/503: Server error, retry with backoff"
      },
      {
        "title": "Tips",
        "body": "Always check credits before starting multiple searches or research requests.\nSearch typically completes in 30-60 seconds. Research takes 1-3 minutes.\nEach search returns up to 30 results. Use find-more for additional pages.\nWhen presenting search results, include the person's name, title, company, summary, and Happenstance profile link.\nWhen presenting research, summarize the profile and link to sources.\nThe more data sources the user connects, the better the search results."
      }
    ],
    "body": "Happenstance\n\nSearch your network and get detailed research profiles on people using the Happenstance API.\n\nDocumentation: https://developer.happenstance.ai\n\nAuthentication\n\nAll requests require the HAPPENSTANCE_API_KEY environment variable. Pass it as a Bearer token:\n\nAuthorization: Bearer $HAPPENSTANCE_API_KEY\n\n\nBase URL: https://api.happenstance.ai\n\nBilling\nSearch: 2 credits per search (including find-more)\nResearch: 1 credit per completed research\nCheck balance with GET /v1/usage\nPurchase credits at https://happenstance.ai/settings/api\nAvailable Operations\n1. Search Your Network\n\nSearch for people across groups and connections. Searches run asynchronously.\n\nStart a search:\n\ncurl -s -X POST https://api.happenstance.ai/v1/search \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"text\": \"engineers who have worked on AI infrastructure\",\n    \"include_my_connections\": true,\n    \"include_friends_connections\": true\n  }'\n\n\nYou can also search within specific groups by adding \"group_ids\": [\"uuid1\", \"uuid2\"]. Get group IDs from GET /v1/groups.\n\nAt least one search source is required: group_ids, include_my_connections: true, or include_friends_connections: true.\n\nResponse:\n\n{\"id\": \"search-uuid\", \"url\": \"https://happenstance.ai/search/search-uuid\"}\n\n\nPoll for results (every 5-10 seconds until status is COMPLETED or FAILED):\n\ncurl -s https://api.happenstance.ai/v1/search/SEARCH_ID \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n\nCompleted response includes:\n\nstatus: RUNNING, COMPLETED, or FAILED\nresults: array of people, each with id, name, current_title, current_company, summary, weighted_traits_score, socials (with happenstance_url, linkedin_url, twitter_url), mutuals, and traits\nhas_more: boolean indicating if more results are available\nmutuals: top-level array of mutual connections (results reference these by index)\ntraits: top-level array of trait definitions (results reference these by index)\n2. Find More Results\n\nWhen has_more is true on a completed search, get additional results that exclude all previously returned people. Costs 2 credits.\n\ncurl -s -X POST https://api.happenstance.ai/v1/search/SEARCH_ID/find-more \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n\nResponse:\n\n{\"page_id\": \"page-uuid\", \"parent_search_id\": \"search-uuid\"}\n\n\nThen poll with the page_id:\n\ncurl -s \"https://api.happenstance.ai/v1/search/SEARCH_ID?page_id=PAGE_ID\" \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n3. Research a Person\n\nGet a detailed professional profile for a specific person. Runs asynchronously.\n\nStart research:\n\ncurl -s -X POST https://api.happenstance.ai/v1/research \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"description\": \"Garry Tan, CEO of Y Combinator, @garrytan on Twitter\"}'\n\n\nInclude as many details as possible (full name, company, title, location, social handles) for best results.\n\nResponse:\n\n{\"id\": \"research-uuid\"}\n\n\nPoll for results (every 5-10 seconds until status is COMPLETED, FAILED, or FAILED_AMBIGUOUS):\n\ncurl -s https://api.happenstance.ai/v1/research/RESEARCH_ID \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n\nCompleted response includes a profile object with:\n\nperson_metadata: full_name, alternate_names, profile_urls, current_locations, tagline\nemployment: array of jobs with company_name, job_title, start_date, end_date, description\neducation: array with university_name, degree, start_date, end_date\nprojects: array with title, description, urls\nwritings: array of publications with title, description, date, urls\nhobbies: array with description\nsummary: overall text summary with supporting urls\n4. List Groups\n\nGet the groups you can search within:\n\ncurl -s https://api.happenstance.ai/v1/groups \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n\nReturns {\"groups\": [{\"id\": \"uuid\", \"name\": \"Group Name\"}, ...]}.\n\n5. Check Credits and Usage\ncurl -s https://api.happenstance.ai/v1/usage \\\n  -H \"Authorization: Bearer $HAPPENSTANCE_API_KEY\"\n\n\nReturns balance_credits, has_credits, purchases, usage history, and auto_reload settings.\n\nError Handling\n\nErrors use RFC 7807 format:\n\n{\"type\": \"about:blank\", \"title\": \"Bad Request\", \"status\": 400, \"detail\": \"Description must not be empty\", \"instance\": \"/v1/research\"}\n\n\nKey status codes:\n\n401: Invalid or missing API key\n402: Insufficient credits\n429: Too many concurrent requests (max 10 running searches or research requests)\n500/503: Server error, retry with backoff\nTips\nAlways check credits before starting multiple searches or research requests.\nSearch typically completes in 30-60 seconds. Research takes 1-3 minutes.\nEach search returns up to 30 results. Use find-more for additional pages.\nWhen presenting search results, include the person's name, title, company, summary, and Happenstance profile link.\nWhen presenting research, summarize the profile and link to sources.\nThe more data sources the user connects, the better the search results."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dgoss28/happenstance",
    "publisherUrl": "https://clawhub.ai/dgoss28/happenstance",
    "owner": "dgoss28",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/happenstance",
    "downloadUrl": "https://openagent3.xyz/downloads/happenstance",
    "agentUrl": "https://openagent3.xyz/skills/happenstance/agent",
    "manifestUrl": "https://openagent3.xyz/skills/happenstance/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/happenstance/agent.md"
  }
}