manage-account
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/update/remove), 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/profiles 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.
- License 许可
- MIT
- 最近更新
- 2026-05-27
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- manage-account
- description
- 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/update/remove), 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/profiles 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.
03 SKILL.md 正文
Manage Account
Use 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 / links / uploaded files, manage inbox filters, act on a match (like / reject / respond / view link / unlock / share contact), or upgrade/downgrade their plan. The Omnimatch MCP server exposes only a single codemode tool (Cloudflare Codemode) — call it with a code parameter (async arrow function body) that runs the appropriate codemode.<tool>(args) calls.
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.
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.
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.
Entity edits
- Title →
codemode.update_entity_title({ entityId, title, confirmed }). - External link →
codemode.update_entity_external_link({ entityId, externalLink, confirmed })(passnullto clear). - Email frequency →
codemode.update_entity_email_notifications({ entityId, frequency: "never" | "best_only" | "all" }). - Search criteria refinement →
codemode.update_entity_criteria({ entityId, text }). - Add a note →
codemode.add_entity_note({ entityId, name, text }). - Remove files →
codemode.remove_entity_files({ entityId, fileKeys, confirmed })(keys fromget_entityfiles[]).
Private Scoring Entities
Use these when the user wants to upload a private opportunity/profile to score against their own existing entities. Private scoring entities are visible only to the owner and are excluded from cross-owner search.
- Text or link private upload →
codemode.create_private_entity({ marketId, entityTypeTitle, title, externalLink?, initialCriteriaText?, confirmed }). - List existing private scoring entities →
codemode.list_private_entities({ marketId, entityTypeTitle? }). - Rescore existing public profile against private scoring entities →
codemode.score_against_private_entities({ entityId, confirmed }). - Delete a private scoring entity →
codemode.delete_private_entity({ entityId, confirmed }).
Private File Upload Workflow
- Call
codemode.get_private_entity_file_upload_url({ marketId, contentType, name }). - Upload the file bytes with PUT to the returned
uploadUrl. - Call
codemode.enqueue_private_entity_file_upload({ marketId, entityTypeTitle, title, stagedKey, contentType, name, confirmed: true })using the returnedstagedKey,contentType, andname.
The queued job creates the private scoring entity, attaches the file privately, and runs profile generation/scoring in the background.
Inbox filters
Inbox filters are saved free-text questions answered per match. Each filter becomes its own inbox keyed query:{filterId}.
- Create →
codemode.add_inbox_filter({ entityId, prompt, strictness: "lenient" | "normal" | "strict" }). Plan-gated (Match insights). Returns{ filterId, inboxKey }. - Update →
codemode.update_inbox_filter({ entityId, filterId, prompt?, strictness? }). - Remove →
codemode.remove_inbox_filter({ entityId, filterId, confirmed }).
Match actions
Match actions all take { matchId, entityId } (the match id and your entity id):
- Approve / "more like this" →
codemode.like_match({ matchId, entityId }). - Reject / "less like this" →
codemode.reject_match({ matchId, entityId, confirmed })— confirm before calling. - Free-text feedback →
codemode.respond_to_match({ matchId, entityId, direction: "more" | "less", textFeedback?, confirmed })—direction: "less"requires confirmation. - Get just the external link →
codemode.view_match_link({ matchId, entityId }). Returns{ externalLink, locked, message? }. - Unlock a credit-gated match →
codemode.unlock_match({ matchId, entityId, confirmed })— deducts one credit; confirm before calling. - 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/externalLink 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 onget_match.otherEntityContact. - 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_matchmay showyourCriteriaScore/theirCriteriaScoreasnulland inbox-filter answers ascomputed: false. Tell the user up front so they aren't surprised, and don't aggressively poll — wait at least a few minutes between checks.
Match discovery (manual search)
Trigger 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).
What it does — and what it doesn't:
- 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.
- 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/files 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 viareevaluate_match). - Before searching it clears stale matches: connections older than 60 days that were rejected or never acted on by either side are removed. Liked/approved and recent matches are kept.
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.
Parameters (all optional, with defaults):
timeframe:"1 day" | "1 week" | "1 month" | "1 year" | "no limit"— recency window for external web results. Default"1 week".searchSpace:"external only" | "internal only" | "both". Default"both".totalConnections:"auto"or a number 1–50 — cap on how many matches to bring back. Default"auto".
Subscription / plan changes
- List plans →
codemode.list_plans({ marketId })for plan name, description, isFree, isCurrentPlan, price (live from Stripe), features, limits. - Change plan →
codemode.change_plan({ marketId, targetPlanId })returns{ billingPortalUrl, currentPlanId, targetPlanId, message }. Open the URL — Stripe handles upgrade/downgrade/cancellation. No confirmed flag needed; Stripe is the confirmation surface.
Workflow patterns
- "Reject this match" — call
reject_matchfirst withoutconfirmed; show the preview to the user; if they confirm, call again withconfirmed: true. - "Unlock that match" — same pattern; warn that it costs one credit before re-calling with
confirmed: true. Private scoring entity matches are already unlocked. - "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. - "What does my filter say about this match" —
codemode.list_match_inbox_filter_answers({ matchId, entityId })(read-only — also available in account-info). - "Run a search" / "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 (noconfirmedflag 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. - "Upgrade to the Pro plan" —
codemode.list_plans({ marketId })to find the plan with name "Pro" and its planId; thencodemode.change_plan({ marketId, targetPlanId }). Hand the user thebillingPortalUrl.
04 同仓库更多 Skills
subscription
暂无简介
manage-account
暂无简介
level-up
暂无简介
account-info
暂无简介
account-briefing
暂无简介
subscription
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.