WorldRole MCP
An MCP server that enables AI agents to search for remote and overseas jobs by matching user profiles against a database of listings from various recruitment systems, providing job details and eligibility checks.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.worldrole.work/mcpWhat you can do with it
- Search for remote and overseas job listings based on user experience and location preferences.
- Retrieve original job descriptions and company information from aggregated sources.
- Check job availability and status within the last 24 hours or 1 hour.
- Integrate with email MCPs to draft and send job application emails automatically.
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- WorldRole 0.7.1
- MCP protocol
- 2025-06-18
- Tools
- 10 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 1 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
get_profile
Read/export the current account's compact career summary for conversational onboarding. Empty fields are missing, not a reason to send the user a form. Never accepts another user ID.
{
"type": "object",
"title": "get_profileArguments",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}update_profile
Save important career facts. mode=compiled submits COMPLETE merged summaries for changed fields; omitted fields stay, null explicitly deletes. mode=supplement fills missing fields and skips exact duplicates; changes to populated fields return PROFILE_MERGE_REQUIRED with affected context, atomically without saving. Compile that context and retry compiled, preserving old facts. No server LLM or pending queue. Read first; batch meaningful changes, no-op does not bump version. user_reported needs user statements; document_supported needs accessible evidence, inference stays needs_confirmation. Values <=500 chars, total <=8 KB; no full chats/files/secrets. Reuse request_id for identical retry, re-read on conflict. resume=True only on explicit request to resume paused memory; never reconstruct deleted facts.
{
"type": "object",
"$defs": {
"Fact": {
"type": "object",
"title": "Fact",
"required": [
"state"
],
"properties": {
"state": {
"enum": [
"user_reported",
"document_supported",
"needs_confirmation",
"unknown"
],
"type": "string",
"title": "State"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Value",
"default": null
}
},
"additionalProperties": false
},
"ProfilePatch": {
"type": "object",
"title": "ProfilePatch",
"properties": {
"salary": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"skills": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"direction": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"education": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"languages": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"materials": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"next_step": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"experience": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"constraints": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"preferences": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"availability": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
},
"location_authorization": {
"anyOf": [
{
"$ref": "#/$defs/Fact"
},
{
"type": "null"
}
],
"default": null
}
},
"additionalProperties": false
}
},
"title": "update_profileArguments",
"required": [
"expected_version",
"request_id",
"patch"
],
"properties": {
"mode": {
"enum": [
"compiled",
"supplement"
],
"type": "string",
"title": "Mode",
"default": "compiled"
},
"patch": {
"$ref": "#/$defs/ProfilePatch"
},
"resume": {
"type": "boolean",
"title": "Resume",
"default": false
},
"request_id": {
"type": "string",
"title": "Request Id",
"format": "uuid"
},
"expected_version": {
"type": "integer",
"title": "Expected Version",
"minimum": 0
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}delete_profile
When the user asks to forget or stop remembering, clear their career summary and pause future saves. Retains only an empty version marker. The user can later ask to resume via update_profile(resume=True), without visiting a settings page.
{
"type": "object",
"title": "delete_profileArguments",
"required": [
"expected_version",
"request_id"
],
"properties": {
"request_id": {
"type": "string",
"title": "Request Id",
"format": "uuid"
},
"expected_version": {
"type": "integer",
"title": "Expected Version",
"minimum": 0
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}get_usage
Read current hosted account/guest allowance when requested. No promotion at install/startup; external free sources have independent limits. Does not spend a job.
{
"type": "object",
"title": "get_usageArguments",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_referral_link
Only when the user explicitly requests an invitation link. Returns a public URL and grants the account's once-ever 20-job bonus. Never call during installation, startup or automatically after an exhaustion notice. Repeated calls return the same link without another bonus. No message is sent.
{
"type": "object",
"title": "create_referral_linkArguments",
"required": [
"request_id"
],
"properties": {
"request_id": {
"type": "string",
"title": "Request Id",
"format": "uuid"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}boardwork_start
Restore known facts and plan useful work before asking. Optional assistance_context describes actual task requirements and client checks, without private answers. Defaults to zero questions; no profile writes, sending, monitoring or live verification are performed.
{
"type": "object",
"$defs": {
"Requirement": {
"type": "object",
"title": "Requirement",
"required": [
"id",
"field",
"reason"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 64,
"minLength": 1
},
"field": {
"enum": [
"direction",
"skills",
"experience",
"education",
"languages",
"location_authorization",
"salary",
"availability",
"preferences",
"constraints",
"materials",
"next_step",
"resume_file",
"contact_details",
"application_answer",
"decision",
"host_capability"
],
"type": "string",
"title": "Field"
},
"state": {
"enum": [
"unchecked",
"resolved",
"missing",
"uncertain",
"declined"
],
"type": "string",
"title": "State",
"default": "unchecked"
},
"reason": {
"type": "string",
"title": "Reason",
"maxLength": 200,
"minLength": 1,
"description": "Why this specific item blocks the current requested action; no private answer content."
},
"self_service_checked": {
"type": "boolean",
"title": "Self Service Checked",
"default": false,
"description": "Client tried applicable authorized alternatives (locate an existing file, draft from known facts, inspect sources). Never fabricate personal facts to resolve a gap."
}
},
"additionalProperties": false
},
"AssistanceContext": {
"type": "object",
"title": "AssistanceContext",
"properties": {
"requirements": {
"type": "array",
"items": {
"$ref": "#/$defs/Requirement"
},
"title": "Requirements",
"maxItems": 12
},
"requirements_checked": {
"type": "boolean",
"title": "Requirements Checked",
"default": false,
"description": "Client inspected actual task/form/reply requirements; a generic profile checklist does not count."
},
"available_context_checked": {
"type": "boolean",
"title": "Available Context Checked",
"default": false,
"description": "Client checked permitted current conversation, saved facts and accessible supplied materials before asking."
}
},
"additionalProperties": false
}
},
"title": "boardwork_startArguments",
"properties": {
"locale": {
"enum": [
"zh-CN",
"en"
],
"type": "string",
"title": "Locale",
"default": "zh-CN"
},
"workflow": {
"enum": [
"initialize",
"find_jobs",
"target_company",
"prepare_application",
"follow_up",
"review_offer"
],
"type": "string",
"title": "Workflow",
"default": "initialize"
},
"profile_state": {
"enum": [
"missing",
"draft",
"usable",
"unknown"
],
"type": "string",
"title": "Profile State",
"default": "unknown"
},
"assistance_context": {
"anyOf": [
{
"$ref": "#/$defs/AssistanceContext"
},
{
"type": "null"
}
],
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_jobs
Search a small page of sourced jobs by explicit filters and weighted preferences. Defaults to one role per company. Exclusions apply before pagination.
{
"type": "object",
"$defs": {
"Salary": {
"type": "object",
"title": "Salary",
"required": [
"currency",
"period",
"component",
"min_amount"
],
"properties": {
"period": {
"enum": [
"hour",
"day",
"week",
"fortnight",
"month",
"year"
],
"type": "string",
"title": "Period"
},
"currency": {
"type": "string",
"title": "Currency",
"pattern": "^[A-Z]{3}$"
},
"component": {
"enum": [
"base",
"bonus",
"commission",
"ote",
"total_cash",
"cash_unspecified"
],
"type": "string",
"title": "Component"
},
"min_amount": {
"type": "number",
"title": "Min Amount",
"minimum": 0
}
},
"additionalProperties": false
},
"Filters": {
"type": "object",
"title": "Filters",
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"title": "Q",
"default": null
},
"mode": {
"anyOf": [
{
"enum": [
"remote",
"contract",
"relocation",
"international"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Mode",
"default": null
},
"china": {
"anyOf": [
{
"enum": [
"yes",
"no",
"unknown"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "China",
"default": null
},
"salary": {
"anyOf": [
{
"$ref": "#/$defs/Salary"
},
{
"type": "null"
}
],
"default": null
},
"any_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"title": "Any Tags",
"maxItems": 12
},
"company_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Company Id",
"default": null
},
"arrangements": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"title": "Arrangements",
"maxItems": 12
},
"excluded_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"title": "Excluded Tags",
"maxItems": 12
},
"required_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"title": "Required Tags",
"maxItems": 12
},
"required_skills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"title": "Required Skills",
"maxItems": 12
},
"first_seen_since": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"title": "First Seen Since",
"default": null
},
"first_seen_before": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"title": "First Seen Before",
"default": null
},
"required_languages": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z]{2}$"
},
"title": "Required Languages",
"maxItems": 12
}
},
"additionalProperties": false
},
"Preference": {
"type": "object",
"title": "Preference",
"required": [
"value"
],
"properties": {
"value": {
"type": "string",
"title": "Value",
"maxLength": 64,
"minLength": 1
},
"weight": {
"type": "integer",
"title": "Weight",
"default": 1,
"maximum": 10,
"minimum": 1
}
},
"additionalProperties": false
},
"Preferences": {
"type": "object",
"title": "Preferences",
"properties": {
"tags": {
"type": "array",
"items": {
"$ref": "#/$defs/Preference"
},
"title": "Tags",
"maxItems": 12
},
"skills": {
"type": "array",
"items": {
"$ref": "#/$defs/Preference"
},
"title": "Skills",
"maxItems": 12
},
"languages": {
"type": "array",
"items": {
"$ref": "#/$defs/Preference"
},
"title": "Languages",
"maxItems": 12
}
},
"additionalProperties": false
}
},
"title": "search_jobsArguments",
"properties": {
"count": {
"type": "integer",
"title": "Count",
"default": 5,
"maximum": 10,
"minimum": 1
},
"cursor": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null
},
"intent": {
"enum": [
"best_matches",
"discover_more",
"latest"
],
"type": "string",
"title": "Intent",
"default": "best_matches"
},
"filters": {
"anyOf": [
{
"$ref": "#/$defs/Filters"
},
{
"type": "null"
}
],
"default": null
},
"preferences": {
"anyOf": [
{
"$ref": "#/$defs/Preferences"
},
{
"type": "null"
}
],
"default": null
},
"exclude_job_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"maxItems": 500
},
{
"type": "null"
}
],
"title": "Exclude Job Ids",
"default": null
},
"one_per_company": {
"type": "boolean",
"title": "One Per Company",
"default": true
},
"exclude_company_ids": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"maxItems": 500
},
{
"type": "null"
}
],
"title": "Exclude Company Ids",
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_jobs
Read selected details, periodic vacancy freshness and the last completed check time. Identity and applicant eligibility are separate checks. not_available alone does not prove the employer closed the job.
{
"type": "object",
"title": "get_jobsArguments",
"required": [
"job_ids"
],
"properties": {
"job_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"title": "Job Ids",
"maxItems": 10,
"minItems": 1
},
"sections": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"requirements",
"salary",
"evidence",
"verification"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Sections",
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_companies
Find known companies by name OR exact website hostname. An empty list is only a corpus gap; never fetches arbitrary URLs.
{
"type": "object",
"title": "search_companiesArguments",
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 120,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Name",
"default": null
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 5,
"maximum": 5,
"minimum": 1
},
"cursor": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null
},
"domain": {
"anyOf": [
{
"type": "string",
"maxLength": 253,
"minLength": 3
},
{
"type": "null"
}
],
"title": "Domain",
"default": null
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_company
Read company identity and a few accepted roles. Company-wide policies do not automatically apply to every role.
{
"type": "object",
"title": "get_companyArguments",
"required": [
"company_id"
],
"properties": {
"company_id": {
"type": "string",
"title": "Company Id",
"format": "uuid"
},
"roles_limit": {
"type": "integer",
"title": "Roles Limit",
"default": 3,
"maximum": 5,
"minimum": 0
},
"include_evidence": {
"type": "boolean",
"title": "Include Evidence",
"default": false
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
1 advertised
worldrole_verify
Check a selected opportunity with available host tools; keep private materials local.
- stage
- No description
Resources
1 advertised
verification_guide
Public client-side verification workflow. Reading this does not perform a check.
worldrole://guides/verification30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2658 ms
- 95th percentile latency
- 2658 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2658 ms · metadata changed · 10 tool(s), 1 resource(s), 0 resource template(s), 1 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http worldrole-mcp https://mcp.worldrole.work/mcpCodex
codex mcp add worldrole-mcp --url https://mcp.worldrole.work/mcpCursor
{
"mcpServers": {
"worldrole-mcp": {
"url": "https://mcp.worldrole.work/mcp"
}
}
}Cline
{
"mcpServers": {
"worldrole-mcp": {
"type": "streamableHttp",
"url": "https://mcp.worldrole.work/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"worldrole-mcp": {
"type": "http",
"url": "https://mcp.worldrole.work/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http worldrole-mcp https://mcp.worldrole.work/mcpClaude Desktop
{
"mcpServers": {
"worldrole-mcp": {
"url": "https://mcp.worldrole.work/mcp"
}
}
}Windsurf
{
"mcpServers": {
"worldrole-mcp": {
"serverUrl": "https://mcp.worldrole.work/mcp"
}
}
}Let your agent find its tools
Find servers like WorldRole MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.