[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PCDXBC0HW2N8GVG4JS658":3,"skill-same:01M71PCDXBC0HW2N8GVG4JS658":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M71PCDXBC0HW2N8GVG4JS658","account-info",null,"Read-only account information. Use the Omnimatch MCP codemode tool to list the user's markets and entities, view inboxes and matches, inspect inbox filters, read subscription plans, and check credit balance \u002F available credit packs. Call codemode with code that invokes codemode.list_my_markets(), codemode.list_my_entities(), codemode.list_inboxes({ entityId }), codemode.list_inbox_matches({ entityId, inboxKey }), codemode.get_match({ matchId, entityId }), codemode.list_plans({ marketId }), codemode.get_my_credit_balance({ marketId }), codemode.list_credit_packs({ marketId }), codemode.get_next_match_discovery({ entityId }), etc. Use when the user asks to view or list their markets, entities, matches, inbox filters, plans, balance, or when their next search runs. Do not use for editing or purchases—use the manage-account or subscription skill for that. When talking to the user, always use real titles (market title, entity title, match\u002Fother side name, type title, plan name)—never show IDs.","omnimatch\u002Fomnimatch-mcp","omnimatch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F209503498?v=4","01M71PCAR1QAW52K9K0SE4XJST","Omnimatch","01M71PCARRJQXCBDK77BS1WVYD",0,"MIT","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fplugins\u002Fomnimatch\u002Fskills\u002Faccount-info\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"info","account info","plans","call","tool","inbox","search","manage","inspect","discovery","editing","read-only","for","ids","view","get","never","balance","show","do","2026-11-10 13:02:02",false,"---\nname: account-info\ndescription: Read-only account information. Use the Omnimatch MCP codemode tool to list the user's markets and entities, view inboxes and matches, inspect inbox filters, read subscription plans, and check credit balance \u002F available credit packs. Call codemode with code that invokes codemode.list_my_markets(), codemode.list_my_entities(), codemode.list_inboxes({ entityId }), codemode.list_inbox_matches({ entityId, inboxKey }), codemode.get_match({ matchId, entityId }), codemode.list_plans({ marketId }), codemode.get_my_credit_balance({ marketId }), codemode.list_credit_packs({ marketId }), codemode.get_next_match_discovery({ entityId }), etc. Use when the user asks to view or list their markets, entities, matches, inbox filters, plans, balance, or when their next search runs. Do not use for editing or purchases—use the manage-account or subscription skill for that. When talking to the user, always use real titles (market title, entity title, match\u002Fother side name, type title, plan name)—never show IDs.\n---\n\n# Account Info (Read-Only)\n\nUse the **Omnimatch MCP** codemode tool to read the current user's account data ([Cloudflare Codemode](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fagents\u002Fapi-reference\u002Fcodemode\u002F)). The server exposes only **codemode**: call it with a `code` parameter (async arrow function body) that runs `codemode.list_my_markets()`, `codemode.list_inbox_matches({ ... })`, etc., and returns the result. This skill is **read-only**: list and view only. For updating profiles, filters, plan changes, or match actions, use the **manage-account** skill.\n\n## When to use\n\n- User asks **what markets am I in?** → `codemode.list_my_markets()`.\n- User asks **what entities do I have?** → `codemode.list_my_entities()` (across markets) or `codemode.list_market_entities({ marketId })` for one market.\n- User asks **show me details for entity X** → `codemode.get_entity({ entityId })` (returns title, type, externalLink, description, criteria, files with summaries, inbox filters, entity query answers if plan allows).\n- User asks **what are my matches** or **show matches** → first `codemode.list_inboxes({ entityId })` to see inboxes (priority, liked, all, plus each inbox filter), then `codemode.list_inbox_matches({ entityId, inboxKey })` to load the table for the chosen inbox.\n- User asks about **a specific match** → `codemode.get_match({ matchId, entityId })` returns a concise summary (names, contact, suitability summaries, insight answers, overall scores) that explains why you matched; pass `detail: \"full\"` when you also need the per-category score breakdown with justifications. The actual reachable contact (LinkedIn URL, email) lives in `otherEntityContact` on the response, not in the `contact` column of the inbox row. Use `codemode.view_match_link({ matchId, entityId })` for just the externalLink.\n- User asks **why did we match** for one inbox filter, or **what does filter X say for match Y** → `codemode.list_match_inbox_filter_answers({ matchId, entityId })`.\n- User asks about **inbox filters** they have → `codemode.list_inbox_filters({ entityId })`.\n- User asks about **subscription**, **plans**, or **what features do I have** → `codemode.list_plans({ marketId })`.\n- User asks **how many credits do I have**, **what's my balance**, or **am I out of credits** → `codemode.get_my_credit_balance({ marketId })`. For markets that don't charge credits, the tool returns `creditsEnabled: false`—say so briefly.\n- User asks **what credit packs can I buy** or **how do I top up** → `codemode.list_credit_packs({ marketId })`. Present packs by name and credit amount; never expose Stripe price ids in user-facing copy. Direct the user to the **subscription** skill (or `topup_credits`) when they want to actually buy.\n- User asks **when is my next search**, **when do new matches arrive**, or **when does discovery run** → `codemode.get_next_match_discovery({ entityId })`. Returns `{ scheduled: false }` or `{ scheduled: true, nextRunAt }` (UTC ISO-8601). This only reports the **automatic** schedule; to **trigger a search now**, that's a manage-account action (`discover_matches`), which adds new matches (it does not re-score existing ones).\n\n**When talking to the user:** Always use **real titles**, never IDs. Refer to entities by their **title**, markets by their **market title**, matches by the other side's **title**, types by the **entity type title** (e.g. \"job\", \"candidate\"), and plans by **plan name**. Do not show market ID, entity ID, match ID, or Stripe price ID in user-facing messages—use IDs only inside codemode parameters.\n\n## Codemode read-only tools\n\nCall the **codemode** tool with `code` set to an async arrow function body. Inside it, you can use:\n\n- **codemode.list_my_markets()** → `[{ marketId, title, description }]`.\n- **codemode.list_my_entities()** → flat `[{ entityId, marketId, marketTitle, title, type, shortDescription }]`.\n- **codemode.list_market_entities({ marketId })** → entities in one market.\n- **codemode.get_entity({ entityId })** → full profile.\n- **codemode.list_inboxes({ entityId })** → built-in inboxes (priority, liked, all) plus filter inboxes (key `query:{filterId}`), each with a count.\n- **codemode.list_inbox_matches({ entityId, inboxKey, offset, limit, sortBy, includeRejected, includeLowScores })** → TUI-friendly table: `{ inboxKey, total, offset, columns, rows: [{ matchId, title, yourScore, theirScore, status, contact, updatedAt, locked }] }`. **`contact` is misleading**: it's a tri-state (`\"shared\" | \"pending\" | \"none\"`) that only reflects owner-to-owner mutual contact sharing via `share_my_contact_with_match`. It stays `\"none\"` even when the matched entity is externally sourced with a public contact (e.g. a `Liaison` carrying a LinkedIn URL). To get the actual reachable contact, call `get_match` and read `otherEntityContact.externalLink` \u002F `.email` \u002F `.name`.\n- **codemode.get_match({ matchId, entityId, detail })** → match detail from your entity's perspective. `detail` defaults to `\"summary\"` (names, contact, suitability summaries, insight answers, overall scores — small, safe to fetch across many matches); pass `detail: \"full\"` for the per-category score breakdown with justifications (large, fetch one at a time). Score \u002F insight \u002F contact fields are plan-gated; gated values come back as an upgrade-message string. When a match is freshly created or has just been re-evaluated, `yourCriteriaScore`\u002F`theirCriteriaScore` may be `null` and inbox-filter answers may show `computed: false`; **scoring runs asynchronously and can take up to 5 minutes**, so tell the user it's still computing rather than treating null as an error, and don't aggressively poll.\n- **codemode.view_match_link({ matchId, entityId })** → just the externalLink (or `{ externalLink: null, locked: true }`).\n- **codemode.list_match_inbox_filter_answers({ matchId, entityId })** → per-filter answers with `computed`, `answer`, `outdated`. `computed: false` means the workflow has not produced an answer yet.\n- **codemode.list_inbox_filters({ entityId })** → filter list with prompt, strictness, outputFormat.\n- **codemode.list_plans({ marketId })** → plans with `planId`, name, description, isFree, isCurrentPlan, price (live from Stripe), features, limits.\n- **codemode.get_my_credit_balance({ marketId })** → `{ creditsEnabled: false, message }` when the market doesn't charge credits, else `{ creditsEnabled: true, subscriptionBalance, topupBalance, nextFreeGrantAt }`. `subscriptionBalance` refreshes monthly from the plan; `topupBalance` is purchased credits that don't expire.\n- **codemode.list_credit_packs({ marketId })** → `{ creditsEnabled, packs: [{ priceId, name, creditsAmount, price?: { amount, currency } }] }`. `price.amount` is in the smallest unit of the currency (e.g. cents for USD).\n- **codemode.get_next_match_discovery({ entityId })** → `{ scheduled: false }` or `{ scheduled: true, nextRunAt }` (UTC ISO-8601 of the next automatic discovery for this entity).\n\nAll ids are UUIDs. Do not invent or assume endpoints.\n","# Account Info (Read-Only)\n\nUse the **Omnimatch MCP** codemode tool to read the current user's account data ([Cloudflare Codemode](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fagents\u002Fapi-reference\u002Fcodemode\u002F)). The server exposes only **codemode**: call it with a `code` parameter (async arrow function body) that runs `codemode.list_my_markets()`, `codemode.list_inbox_matches({ ... })`, etc., and returns the result. This skill is **read-only**: list and view only. For updating profiles, filters, plan changes, or match actions, use the **manage-account** skill.\n\n## When to use\n\n- User asks **what markets am I in?** → `codemode.list_my_markets()`.\n- User asks **what entities do I have?** → `codemode.list_my_entities()` (across markets) or `codemode.list_market_entities({ marketId })` for one market.\n- User asks **show me details for entity X** → `codemode.get_entity({ entityId })` (returns title, type, externalLink, description, criteria, files with summaries, inbox filters, entity query answers if plan allows).\n- User asks **what are my matches** or **show matches** → first `codemode.list_inboxes({ entityId })` to see inboxes (priority, liked, all, plus each inbox filter), then `codemode.list_inbox_matches({ entityId, inboxKey })` to load the table for the chosen inbox.\n- User asks about **a specific match** → `codemode.get_match({ matchId, entityId })` returns a concise summary (names, contact, suitability summaries, insight answers, overall scores) that explains why you matched; pass `detail: \"full\"` when you also need the per-category score breakdown with justifications. The actual reachable contact (LinkedIn URL, email) lives in `otherEntityContact` on the response, not in the `contact` column of the inbox row. Use `codemode.view_match_link({ matchId, entityId })` for just the externalLink.\n- User asks **why did we match** for one inbox filter, or **what does filter X say for match Y** → `codemode.list_match_inbox_filter_answers({ matchId, entityId })`.\n- User asks about **inbox filters** they have → `codemode.list_inbox_filters({ entityId })`.\n- User asks about **subscription**, **plans**, or **what features do I have** → `codemode.list_plans({ marketId })`.\n- User asks **how many credits do I have**, **what's my balance**, or **am I out of credits** → `codemode.get_my_credit_balance({ marketId })`. For markets that don't charge credits, the tool returns `creditsEnabled: false`—say so briefly.\n- User asks **what credit packs can I buy** or **how do I top up** → `codemode.list_credit_packs({ marketId })`. Present packs by name and credit amount; never expose Stripe price ids in user-facing copy. Direct the user to the **subscription** skill (or `topup_credits`) when they want to actually buy.\n- User asks **when is my next search**, **when do new matches arrive**, or **when does discovery run** → `codemode.get_next_match_discovery({ entityId })`. Returns `{ scheduled: false }` or `{ scheduled: true, nextRunAt }` (UTC ISO-8601). This only reports the **automatic** schedule; to **trigger a search now**, that's a manage-account action (`discover_matches`), which adds new matches (it does not re-score existing ones).\n\n**When talking to the user:** Always use **real titles**, never IDs. Refer to entities by their **title**, markets by their **market title**, matches by the other side's **title**, types by the **entity type title** (e.g. \"job\", \"candidate\"), and plans by **plan name**. Do not show market ID, entity ID, match ID, or Stripe price ID in user-facing messages—use IDs only inside codemode parameters.\n\n## Codemode read-only tools\n\nCall the **codemode** tool with `code` set to an async arrow function body. Inside it, you can use:\n\n- **codemode.list_my_markets()** → `[{ marketId, title, description }]`.\n- **codemode.list_my_entities()** → flat `[{ entityId, marketId, marketTitle, title, type, shortDescription }]`.\n- **codemode.list_market_entities({ marketId })** → entities in one market.\n- **codemode.get_entity({ entityId })** → full profile.\n- **codemode.list_inboxes({ entityId })** → built-in inboxes (priority, liked, all) plus filter inboxes (key `query:{filterId}`), each with a count.\n- **codemode.list_inbox_matches({ entityId, inboxKey, offset, limit, sortBy, includeRejected, includeLowScores })** → TUI-friendly table: `{ inboxKey, total, offset, columns, rows: [{ matchId, title, yourScore, theirScore, status, contact, updatedAt, locked }] }`. **`contact` is misleading**: it's a tri-state (`\"shared\" | \"pending\" | \"none\"`) that only reflects owner-to-owner mutual contact sharing via `share_my_contact_with_match`. It stays `\"none\"` even when the matched entity is externally sourced with a public contact (e.g. a `Liaison` carrying a LinkedIn URL). To get the actual reachable contact, call `get_match` and read `otherEntityContact.externalLink` \u002F `.email` \u002F `.name`.\n- **codemode.get_match({ matchId, entityId, detail })** → match detail from your entity's perspective. `detail` defaults to `\"summary\"` (names, contact, suitability summaries, insight answers, overall scores — small, safe to fetch across many matches); pass `detail: \"full\"` for the per-category score breakdown with justifications (large, fetch one at a time). Score \u002F insight \u002F contact fields are plan-gated; gated values come back as an upgrade-message string. When a match is freshly created or has just been re-evaluated, `yourCriteriaScore`\u002F`theirCriteriaScore` may be `null` and inbox-filter answers may show `computed: false`; **scoring runs asynchronously and can take up to 5 minutes**, so tell the user it's still computing rather than treating null as an error, and don't aggressively poll.\n- **codemode.view_match_link({ matchId, entityId })** → just the externalLink (or `{ externalLink: null, locked: true }`).\n- **codemode.list_match_inbox_filter_answers({ matchId, entityId })** → per-filter answers with `computed`, `answer`, `outdated`. `computed: false` means the workflow has not produced an answer yet.\n- **codemode.list_inbox_filters({ entityId })** → filter list with prompt, strictness, outputFormat.\n- **codemode.list_plans({ marketId })** → plans with `planId`, name, description, isFree, isCurrentPlan, price (live from Stripe), features, limits.\n- **codemode.get_my_credit_balance({ marketId })** → `{ creditsEnabled: false, message }` when the market doesn't charge credits, else `{ creditsEnabled: true, subscriptionBalance, topupBalance, nextFreeGrantAt }`. `subscriptionBalance` refreshes monthly from the plan; `topupBalance` is purchased credits that don't expire.\n- **codemode.list_credit_packs({ marketId })** → `{ creditsEnabled, packs: [{ priceId, name, creditsAmount, price?: { amount, currency } }] }`. `price.amount` is in the smallest unit of the currency (e.g. cents for USD).\n- **codemode.get_next_match_discovery({ entityId })** → `{ scheduled: false }` or `{ scheduled: true, nextRunAt }` (UTC ISO-8601 of the next automatic discovery for this entity).\n\nAll ids are UUIDs. Do not invent or assume endpoints.\n",{"name":5,"description":7},"main","de2e9f5bc08b9a354ca9b1ad0bdc08da7923cde1","plugins\u002Fomnimatch\u002Fskills\u002Faccount-info","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp","https:\u002F\u002Fgithub.com\u002Fomnimatch","2026-05-27 20:59:19",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add omnimatch\u002Fomnimatch-mcp --skill account-info",{"tool":61,"command":62},"bunx","bunx skills add omnimatch\u002Fomnimatch-mcp --skill account-info",{"tool":64,"command":65},"pnpm","pnpm dlx skills add omnimatch\u002Fomnimatch-mcp --skill account-info","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fplugins\u002Fomnimatch\u002Fskills\u002Faccount-info\u002FSKILL.md",true,[],[70,76,83,91,96,104],{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":44},"01M71PD7124BWP5JTK4KQ3M2HZ","subscription","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Fsubscription\u002FSKILL.md",[],[72],{"skillNo":77,"name":78,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":44},"01M71PD61T6YF06N5X237TMB34","manage-account","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Fmanage-account\u002FSKILL.md",[],[31,82],"manage account",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":44},"01M71PD5BH8877YPHAWS9XSREH","level-up","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Flevel-up\u002FSKILL.md",[],[89,90],"up","level up",{"skillNo":92,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":44},"01M71PD44STZJZE0Z2E2QVQDGA","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Faccount-info\u002FSKILL.md",[],[25,24],{"skillNo":97,"name":98,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":44},"01M71PD37EE5WCRA7J3Y0WZMT8","account-briefing","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Faccount-briefing\u002FSKILL.md",[],[102,103],"briefing","account briefing",{"skillNo":105,"name":72,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":44},"01M71PCYPFWVA14ZVYEKW9GW15","View and change the user's subscription plan or credit balance in a market. Use the Omnimatch MCP codemode tool to list plans, switch plans via Stripe Billing Portal, check the owner's credit balance, list one-time credit packs, and start a Stripe checkout to top up credits. Call codemode with code that invokes codemode.list_plans({ marketId }), codemode.change_plan({ marketId, targetPlanId }), codemode.get_my_credit_balance({ marketId }), codemode.list_credit_packs({ marketId }), and codemode.topup_credits({ marketId, priceId }). Use when the user asks about their plan, pricing, upgrading, downgrading, cancelling, their credit balance, or buying more credits. When talking to the user, always use plan name and pack name with plain pricing—never show Stripe price ids.","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fplugins\u002Fomnimatch\u002Fskills\u002Fsubscription\u002FSKILL.md",[109],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[72,89,111,112,26,113,27,28,114,115,116,117,118,37,38,39,40,41,42,119],"MCP","list plans","more","pricing","time","stripe billing","switch","checkout","billing"]