[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PCRCV8Q9R4PEXA3E5AJV1":3,"skill-same:01M71PCRCV8Q9R4PEXA3E5AJV1":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},"01M71PCRCV8Q9R4PEXA3E5AJV1","manage-account",null,"Manage the user's Omnimatch account. Use the Omnimatch MCP codemode tool to update entity profile (title, external link, email notifications), update entity criteria with free-text (stored as a scoring file behind the scenes), create private scoring entities from text, links, or uploaded files, manage inbox filters (add\u002Fupdate\u002Fremove), perform match actions (like, reject, respond, view link, unlock, share contact), trigger a manual match-discovery search, and change subscription plan via Stripe billing portal. Destructive actions require confirmed=true. Call codemode with code that invokes codemode.update_entity_*, codemode.create_private_entity, codemode.get_private_entity_file_upload_url, codemode.enqueue_private_entity_file_upload, codemode.add_inbox_filter, codemode.like_match, codemode.reject_match, codemode.respond_to_match, codemode.unlock_match, codemode.share_my_contact_with_match, codemode.discover_matches, codemode.change_plan, etc. Use when the user wants to edit their profile, upload private opportunities\u002Fprofiles to score, manage filters, act on matches, run a search now, or change plan. When talking to the user, always use real titles—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\u002Fmanage-account\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],"manage","manage account","URL","when","free","filters","now","MCP","files","respond","inbox","search","actions","remove","ids","get","discover","never","show","billing","2026-11-10 13:02:02",false,"---\nname: manage-account\ndescription: Manage the user's Omnimatch account. Use the Omnimatch MCP codemode tool to update entity profile (title, external link, email notifications), update entity criteria with free-text (stored as a scoring file behind the scenes), create private scoring entities from text, links, or uploaded files, manage inbox filters (add\u002Fupdate\u002Fremove), perform match actions (like, reject, respond, view link, unlock, share contact), trigger a manual match-discovery search, and change subscription plan via Stripe billing portal. Destructive actions require confirmed=true. Call codemode with code that invokes codemode.update_entity_*, codemode.create_private_entity, codemode.get_private_entity_file_upload_url, codemode.enqueue_private_entity_file_upload, codemode.add_inbox_filter, codemode.like_match, codemode.reject_match, codemode.respond_to_match, codemode.unlock_match, codemode.share_my_contact_with_match, codemode.discover_matches, codemode.change_plan, etc. Use when the user wants to edit their profile, upload private opportunities\u002Fprofiles to score, manage filters, act on matches, run a search now, or change plan. When talking to the user, always use real titles—never show IDs.\n---\n\n# Manage Account\n\nUse this skill when the user wants to **change something** in their Omnimatch account: edit a profile, refine search criteria, create private scoring entities from text \u002F links \u002F uploaded files, manage inbox filters, act on a match (like \u002F reject \u002F respond \u002F view link \u002F unlock \u002F share contact), or upgrade\u002Fdowngrade their plan. The Omnimatch MCP server exposes only a single **codemode** tool ([Cloudflare Codemode](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fagents\u002Fapi-reference\u002Fcodemode\u002F)) — call it with a `code` parameter (async arrow function body) that runs the appropriate `codemode.\u003Ctool>(args)` calls.\n\n**Important:** Existing profile edits are text-first. To refine an existing entity's description or search criteria, use `codemode.update_entity_criteria({ entityId, text })` — the server stores the text as a scoring file internally and regenerates the profile. For creating a new **private scoring entity** from an uploaded file, use the private upload workflow below.\n\n**Confirmation pattern:** Destructive or credit-spending tools (`reject_match`, `unlock_match`, `reevaluate_match`, `remove_entity_files`, `remove_inbox_filter`, `update_entity_title`, `update_entity_external_link`, `respond_to_match` with `direction: \"less\"`) require `confirmed: true`. The first call returns `{ requiresConfirmation: true, action, details, message }` — show the action to the user and only re-call with `confirmed: true` once they confirm.\n\n**When talking to the user:** Always use **real titles**, never IDs. Refer to entities by their **title**, markets by **market title**, matches by the row's **title** (the other side's name), types by the **entity type title** (e.g. \"job\", \"candidate\"), and plans by **plan name**.\n\n## Entity edits\n\n- Title → `codemode.update_entity_title({ entityId, title, confirmed })`.\n- External link → `codemode.update_entity_external_link({ entityId, externalLink, confirmed })` (pass `null` to clear).\n- Email frequency → `codemode.update_entity_email_notifications({ entityId, frequency: \"never\" | \"best_only\" | \"all\" })`.\n- Search criteria refinement → `codemode.update_entity_criteria({ entityId, text })`.\n- Add a note → `codemode.add_entity_note({ entityId, name, text })`.\n- Remove files → `codemode.remove_entity_files({ entityId, fileKeys, confirmed })` (keys from `get_entity` files[]).\n\n## Private Scoring Entities\n\nUse these when the user wants to upload a private opportunity\u002Fprofile to score against their own existing entities. Private scoring entities are visible only to the owner and are excluded from cross-owner search.\n\n- Text or link private upload → `codemode.create_private_entity({ marketId, entityTypeTitle, title, externalLink?, initialCriteriaText?, confirmed })`.\n- List existing private scoring entities → `codemode.list_private_entities({ marketId, entityTypeTitle? })`.\n- Rescore existing public profile against private scoring entities → `codemode.score_against_private_entities({ entityId, confirmed })`.\n- Delete a private scoring entity → `codemode.delete_private_entity({ entityId, confirmed })`.\n\n### Private File Upload Workflow\n\n1. Call `codemode.get_private_entity_file_upload_url({ marketId, contentType, name })`.\n2. Upload the file bytes with PUT to the returned `uploadUrl`.\n3. Call `codemode.enqueue_private_entity_file_upload({ marketId, entityTypeTitle, title, stagedKey, contentType, name, confirmed: true })` using the returned `stagedKey`, `contentType`, and `name`.\n\nThe queued job creates the private scoring entity, attaches the file privately, and runs profile generation\u002Fscoring in the background.\n\n## Inbox filters\n\nInbox filters are saved free-text questions answered per match. Each filter becomes its own inbox keyed `query:{filterId}`.\n\n- Create → `codemode.add_inbox_filter({ entityId, prompt, strictness: \"lenient\" | \"normal\" | \"strict\" })`. Plan-gated (Match insights). Returns `{ filterId, inboxKey }`.\n- Update → `codemode.update_inbox_filter({ entityId, filterId, prompt?, strictness? })`.\n- Remove → `codemode.remove_inbox_filter({ entityId, filterId, confirmed })`.\n\n## Match actions\n\nMatch actions all take `{ matchId, entityId }` (the match id and your entity id):\n\n- Approve \u002F \"more like this\" → `codemode.like_match({ matchId, entityId })`.\n- Reject \u002F \"less like this\" → `codemode.reject_match({ matchId, entityId, confirmed })` — confirm before calling.\n- Free-text feedback → `codemode.respond_to_match({ matchId, entityId, direction: \"more\" | \"less\", textFeedback?, confirmed })` — `direction: \"less\"` requires confirmation.\n- Get just the external link → `codemode.view_match_link({ matchId, entityId })`. Returns `{ externalLink, locked, message? }`.\n- Unlock a credit-gated match → `codemode.unlock_match({ matchId, entityId, confirmed })` — deducts one credit; confirm before calling.\n- Share contact details with an on-platform match → `codemode.share_my_contact_with_match({ matchId, entityId, name?, email?, externalLink?, confirmed })` — at least one of email\u002FexternalLink required. Only meaningful for owner-to-owner matches. **Do not call this for externally-sourced matches**: there's no owner on the other side to receive the share, and the public contact is already on `get_match.otherEntityContact`.\n- Re-evaluate a match's score → `codemode.reevaluate_match({ matchId, entityId, confirmed })` — confirm before calling. Useful after the user updates their profile and wants the score to reflect the new context. Costs one re-evaluate credit on credit-enabled markets; fails if either side's profile isn't ready (missing scoring files, no extracted criteria, or marked outdated). The re-evaluation runs asynchronously and **can take up to 5 minutes** to complete; while it's pending, `get_match` may show `yourCriteriaScore`\u002F`theirCriteriaScore` as `null` and inbox-filter answers as `computed: false`. Tell the user up front so they aren't surprised, and don't aggressively poll — wait at least a few minutes between checks.\n\n## Match discovery (manual search)\n\nTrigger a fresh discovery run with `codemode.discover_matches({ entityId, timeframe, searchSpace, totalConnections })`. This is the manual equivalent of the automatic search whose schedule you read via `get_next_match_discovery` (account-info).\n\n**What it does — and what it doesn't:**\n\n- It **finds and adds new matches**. It searches other entities in the market (internal) and the web (external), then creates fresh connections. It **excludes profiles you're already connected to or have rejected**, so it never duplicates or re-scores matches you already have.\n- It is **not** a re-score. To refresh the score on an existing match after the user edits their profile, use `reevaluate_match` (single match). The platform also re-evaluates outdated matches automatically when criteria\u002Ffiles change — so \"I updated my profile, will a search re-score my matches?\" → no, a search brings in *new* matches; the existing ones re-score on their own (or via `reevaluate_match`).\n- Before searching it **clears stale matches**: connections older than 60 days that were rejected or never acted on by either side are removed. Liked\u002Fapproved and recent matches are kept.\n\n**Cost & timing:** On credit-enabled markets a manual search **spends a search credit**. This tool has **no `confirmed` flag**, so tell the user it will run a search (and use a credit where the market charges for it) and get a yes before calling. The run happens in the **background** (a workflow); results land in the inboxes when ready — typically a few minutes. Don't poll aggressively.\n\n**Parameters** (all optional, with defaults):\n\n- `timeframe`: `\"1 day\" | \"1 week\" | \"1 month\" | \"1 year\" | \"no limit\"` — recency window for external web results. Default `\"1 week\"`.\n- `searchSpace`: `\"external only\" | \"internal only\" | \"both\"`. Default `\"both\"`.\n- `totalConnections`: `\"auto\"` or a number 1–50 — cap on how many matches to bring back. Default `\"auto\"`.\n\n## Subscription \u002F plan changes\n\n- List plans → `codemode.list_plans({ marketId })` for plan name, description, isFree, isCurrentPlan, price (live from Stripe), features, limits.\n- Change plan → `codemode.change_plan({ marketId, targetPlanId })` returns `{ billingPortalUrl, currentPlanId, targetPlanId, message }`. Open the URL — Stripe handles upgrade\u002Fdowngrade\u002Fcancellation. No confirmed flag needed; Stripe is the confirmation surface.\n\n## Workflow patterns\n\n- **\"Reject this match\"** — call `reject_match` first without `confirmed`; show the preview to the user; if they confirm, call again with `confirmed: true`.\n- **\"Unlock that match\"** — same pattern; warn that it costs one credit before re-calling with `confirmed: true`. Private scoring entity matches are already unlocked.\n- **\"Add a filter for senior roles\"** — `codemode.add_inbox_filter({ entityId, prompt: \"Is this a senior role?\", strictness: \"normal\" })`. After it returns the filterId, tell the user the filter has been queued for output-format inference and will appear in the inbox once matches are evaluated.\n- **\"What does my filter say about this match\"** — `codemode.list_match_inbox_filter_answers({ matchId, entityId })` (read-only — also available in account-info).\n- **\"Run a search\" \u002F \"find me new matches now\"** — `codemode.discover_matches({ entityId })`. If the market charges credits, tell the user it spends a search credit and confirm first (no `confirmed` flag exists). Explain it runs in the background and new matches will appear in the inboxes in a few minutes, and that it adds *new* matches rather than re-scoring existing ones.\n- **\"Upgrade to the Pro plan\"** — `codemode.list_plans({ marketId })` to find the plan with name \"Pro\" and its planId; then `codemode.change_plan({ marketId, targetPlanId })`. Hand the user the `billingPortalUrl`.\n","# Manage Account\n\nUse this skill when the user wants to **change something** in their Omnimatch account: edit a profile, refine search criteria, create private scoring entities from text \u002F links \u002F uploaded files, manage inbox filters, act on a match (like \u002F reject \u002F respond \u002F view link \u002F unlock \u002F share contact), or upgrade\u002Fdowngrade their plan. The Omnimatch MCP server exposes only a single **codemode** tool ([Cloudflare Codemode](https:\u002F\u002Fdevelopers.cloudflare.com\u002Fagents\u002Fapi-reference\u002Fcodemode\u002F)) — call it with a `code` parameter (async arrow function body) that runs the appropriate `codemode.\u003Ctool>(args)` calls.\n\n**Important:** Existing profile edits are text-first. To refine an existing entity's description or search criteria, use `codemode.update_entity_criteria({ entityId, text })` — the server stores the text as a scoring file internally and regenerates the profile. For creating a new **private scoring entity** from an uploaded file, use the private upload workflow below.\n\n**Confirmation pattern:** Destructive or credit-spending tools (`reject_match`, `unlock_match`, `reevaluate_match`, `remove_entity_files`, `remove_inbox_filter`, `update_entity_title`, `update_entity_external_link`, `respond_to_match` with `direction: \"less\"`) require `confirmed: true`. The first call returns `{ requiresConfirmation: true, action, details, message }` — show the action to the user and only re-call with `confirmed: true` once they confirm.\n\n**When talking to the user:** Always use **real titles**, never IDs. Refer to entities by their **title**, markets by **market title**, matches by the row's **title** (the other side's name), types by the **entity type title** (e.g. \"job\", \"candidate\"), and plans by **plan name**.\n\n## Entity edits\n\n- Title → `codemode.update_entity_title({ entityId, title, confirmed })`.\n- External link → `codemode.update_entity_external_link({ entityId, externalLink, confirmed })` (pass `null` to clear).\n- Email frequency → `codemode.update_entity_email_notifications({ entityId, frequency: \"never\" | \"best_only\" | \"all\" })`.\n- Search criteria refinement → `codemode.update_entity_criteria({ entityId, text })`.\n- Add a note → `codemode.add_entity_note({ entityId, name, text })`.\n- Remove files → `codemode.remove_entity_files({ entityId, fileKeys, confirmed })` (keys from `get_entity` files[]).\n\n## Private Scoring Entities\n\nUse these when the user wants to upload a private opportunity\u002Fprofile to score against their own existing entities. Private scoring entities are visible only to the owner and are excluded from cross-owner search.\n\n- Text or link private upload → `codemode.create_private_entity({ marketId, entityTypeTitle, title, externalLink?, initialCriteriaText?, confirmed })`.\n- List existing private scoring entities → `codemode.list_private_entities({ marketId, entityTypeTitle? })`.\n- Rescore existing public profile against private scoring entities → `codemode.score_against_private_entities({ entityId, confirmed })`.\n- Delete a private scoring entity → `codemode.delete_private_entity({ entityId, confirmed })`.\n\n### Private File Upload Workflow\n\n1. Call `codemode.get_private_entity_file_upload_url({ marketId, contentType, name })`.\n2. Upload the file bytes with PUT to the returned `uploadUrl`.\n3. Call `codemode.enqueue_private_entity_file_upload({ marketId, entityTypeTitle, title, stagedKey, contentType, name, confirmed: true })` using the returned `stagedKey`, `contentType`, and `name`.\n\nThe queued job creates the private scoring entity, attaches the file privately, and runs profile generation\u002Fscoring in the background.\n\n## Inbox filters\n\nInbox filters are saved free-text questions answered per match. Each filter becomes its own inbox keyed `query:{filterId}`.\n\n- Create → `codemode.add_inbox_filter({ entityId, prompt, strictness: \"lenient\" | \"normal\" | \"strict\" })`. Plan-gated (Match insights). Returns `{ filterId, inboxKey }`.\n- Update → `codemode.update_inbox_filter({ entityId, filterId, prompt?, strictness? })`.\n- Remove → `codemode.remove_inbox_filter({ entityId, filterId, confirmed })`.\n\n## Match actions\n\nMatch actions all take `{ matchId, entityId }` (the match id and your entity id):\n\n- Approve \u002F \"more like this\" → `codemode.like_match({ matchId, entityId })`.\n- Reject \u002F \"less like this\" → `codemode.reject_match({ matchId, entityId, confirmed })` — confirm before calling.\n- Free-text feedback → `codemode.respond_to_match({ matchId, entityId, direction: \"more\" | \"less\", textFeedback?, confirmed })` — `direction: \"less\"` requires confirmation.\n- Get just the external link → `codemode.view_match_link({ matchId, entityId })`. Returns `{ externalLink, locked, message? }`.\n- Unlock a credit-gated match → `codemode.unlock_match({ matchId, entityId, confirmed })` — deducts one credit; confirm before calling.\n- Share contact details with an on-platform match → `codemode.share_my_contact_with_match({ matchId, entityId, name?, email?, externalLink?, confirmed })` — at least one of email\u002FexternalLink required. Only meaningful for owner-to-owner matches. **Do not call this for externally-sourced matches**: there's no owner on the other side to receive the share, and the public contact is already on `get_match.otherEntityContact`.\n- Re-evaluate a match's score → `codemode.reevaluate_match({ matchId, entityId, confirmed })` — confirm before calling. Useful after the user updates their profile and wants the score to reflect the new context. Costs one re-evaluate credit on credit-enabled markets; fails if either side's profile isn't ready (missing scoring files, no extracted criteria, or marked outdated). The re-evaluation runs asynchronously and **can take up to 5 minutes** to complete; while it's pending, `get_match` may show `yourCriteriaScore`\u002F`theirCriteriaScore` as `null` and inbox-filter answers as `computed: false`. Tell the user up front so they aren't surprised, and don't aggressively poll — wait at least a few minutes between checks.\n\n## Match discovery (manual search)\n\nTrigger a fresh discovery run with `codemode.discover_matches({ entityId, timeframe, searchSpace, totalConnections })`. This is the manual equivalent of the automatic search whose schedule you read via `get_next_match_discovery` (account-info).\n\n**What it does — and what it doesn't:**\n\n- It **finds and adds new matches**. It searches other entities in the market (internal) and the web (external), then creates fresh connections. It **excludes profiles you're already connected to or have rejected**, so it never duplicates or re-scores matches you already have.\n- It is **not** a re-score. To refresh the score on an existing match after the user edits their profile, use `reevaluate_match` (single match). The platform also re-evaluates outdated matches automatically when criteria\u002Ffiles change — so \"I updated my profile, will a search re-score my matches?\" → no, a search brings in *new* matches; the existing ones re-score on their own (or via `reevaluate_match`).\n- Before searching it **clears stale matches**: connections older than 60 days that were rejected or never acted on by either side are removed. Liked\u002Fapproved and recent matches are kept.\n\n**Cost & timing:** On credit-enabled markets a manual search **spends a search credit**. This tool has **no `confirmed` flag**, so tell the user it will run a search (and use a credit where the market charges for it) and get a yes before calling. The run happens in the **background** (a workflow); results land in the inboxes when ready — typically a few minutes. Don't poll aggressively.\n\n**Parameters** (all optional, with defaults):\n\n- `timeframe`: `\"1 day\" | \"1 week\" | \"1 month\" | \"1 year\" | \"no limit\"` — recency window for external web results. Default `\"1 week\"`.\n- `searchSpace`: `\"external only\" | \"internal only\" | \"both\"`. Default `\"both\"`.\n- `totalConnections`: `\"auto\"` or a number 1–50 — cap on how many matches to bring back. Default `\"auto\"`.\n\n## Subscription \u002F plan changes\n\n- List plans → `codemode.list_plans({ marketId })` for plan name, description, isFree, isCurrentPlan, price (live from Stripe), features, limits.\n- Change plan → `codemode.change_plan({ marketId, targetPlanId })` returns `{ billingPortalUrl, currentPlanId, targetPlanId, message }`. Open the URL — Stripe handles upgrade\u002Fdowngrade\u002Fcancellation. No confirmed flag needed; Stripe is the confirmation surface.\n\n## Workflow patterns\n\n- **\"Reject this match\"** — call `reject_match` first without `confirmed`; show the preview to the user; if they confirm, call again with `confirmed: true`.\n- **\"Unlock that match\"** — same pattern; warn that it costs one credit before re-calling with `confirmed: true`. Private scoring entity matches are already unlocked.\n- **\"Add a filter for senior roles\"** — `codemode.add_inbox_filter({ entityId, prompt: \"Is this a senior role?\", strictness: \"normal\" })`. After it returns the filterId, tell the user the filter has been queued for output-format inference and will appear in the inbox once matches are evaluated.\n- **\"What does my filter say about this match\"** — `codemode.list_match_inbox_filter_answers({ matchId, entityId })` (read-only — also available in account-info).\n- **\"Run a search\" \u002F \"find me new matches now\"** — `codemode.discover_matches({ entityId })`. If the market charges credits, tell the user it spends a search credit and confirm first (no `confirmed` flag exists). Explain it runs in the background and new matches will appear in the inboxes in a few minutes, and that it adds *new* matches rather than re-scoring existing ones.\n- **\"Upgrade to the Pro plan\"** — `codemode.list_plans({ marketId })` to find the plan with name \"Pro\" and its planId; then `codemode.change_plan({ marketId, targetPlanId })`. Hand the user the `billingPortalUrl`.\n",{"name":5,"description":7},"main","de2e9f5bc08b9a354ca9b1ad0bdc08da7923cde1","plugins\u002Fomnimatch\u002Fskills\u002Fmanage-account","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 manage-account",{"tool":61,"command":62},"bunx","bunx skills add omnimatch\u002Fomnimatch-mcp --skill manage-account",{"tool":64,"command":65},"pnpm","pnpm dlx skills add omnimatch\u002Fomnimatch-mcp --skill manage-account","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fplugins\u002Fomnimatch\u002Fskills\u002Fmanage-account\u002FSKILL.md",true,[],[70,76,81,89,97,105],{"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":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":78,"categories":79,"keywords":80,"publishedAt":44},"01M71PD61T6YF06N5X237TMB34","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Fmanage-account\u002FSKILL.md",[],[24,25],{"skillNo":82,"name":83,"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":84,"categories":85,"keywords":86,"publishedAt":44},"01M71PD5BH8877YPHAWS9XSREH","level-up","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Flevel-up\u002FSKILL.md",[],[87,88],"up","level up",{"skillNo":90,"name":91,"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":92,"categories":93,"keywords":94,"publishedAt":44},"01M71PD44STZJZE0Z2E2QVQDGA","account-info","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Faccount-info\u002FSKILL.md",[],[95,96],"account info","info",{"skillNo":98,"name":99,"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":100,"categories":101,"keywords":102,"publishedAt":44},"01M71PD37EE5WCRA7J3Y0WZMT8","account-briefing","https:\u002F\u002Fgithub.com\u002Fomnimatch\u002Fomnimatch-mcp\u002Fblob\u002Fmain\u002Fskills\u002Faccount-briefing\u002FSKILL.md",[],[103,104],"briefing","account briefing",{"skillNo":106,"name":72,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":111,"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",[110],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[72,87,31,112,113,114,115,116,117,118,119,120,121,38,122,39,41,123,42,43],"list plans","plans","more","call","tool","pricing","time","stripe billing","switch","checkout","view","balance"]