search_occupations

Search the occupation vocabulary

All MCP toolsRead

Start with this to resolve a job-title phrase into the occupation vocabulary: hits nearest in meaning, best first, each with the occupation's id (the number to store), its display name in the requested language, and exact — true for a hit whose display name matches the phrase itself, pinned to the top. mode is semantic, or exact_only when no embedding could be made and only exact display-name matches answer. Any language finds the same occupations. Save a hit as { id } (name may ride along; it is not stored — reads return the person's-language name) in save_conditions (candidate) or in create_job_posting / update_job_posting's occupations (employer). No hit is a normal answer: pass the phrase as { name } alone to those tools and an occupation row is created for it — never guess a different hit. Occupations are counted by id. Global reference data — no person or organization axis.

Input schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "The phrase to resolve, in any language. Empty returns no hits."
    },
    "locale": {
      "description": "Language of the returned names; default: the connection's language.",
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-Hans",
        "zh-Hant"
      ]
    },
    "limit": {
      "description": "Result cap, 1..20 (default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "semantic",
        "exact_only"
      ],
      "description": "How the hits were found: `semantic` = nearest by meaning with exact display-name matches first; `exact_only` = no embedding could be made, so only exact display-name matches answer."
    },
    "hits": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "The occupation's number — the identity a stored occupation reference carries."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The display name in the requested locale — the row's own name, never a synonym."
          },
          "exact": {
            "type": "boolean",
            "description": "True when one of the row's display names folds onto the typed word; such hits come first."
          }
        },
        "required": [
          "id",
          "name",
          "exact"
        ],
        "additionalProperties": false,
        "description": "One occupation search hit: the occupation's number, its display name in the requested locale, and whether that name matched the typed word exactly. Store its id ({ id }; the name may ride along and is not kept)."
      },
      "description": "Ranked hits, best first: exact display-name matches, then the nearest by meaning."
    }
  },
  "required": [
    "mode",
    "hits"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

On this page