← WebMCP Directory

Tool tree

webmcp-openaihac-production.up.railway.app

Productivity & BusinessTools verified
Website
Tailor
Explore capabilities
    get_workspace_stateAnswer

    Orientation. Reports what is on screen right now: active filters, how many jobs match, which job is open, and how many tools are currently registered. Call this first in a new task. Reads only; changes nothing.

    View tool JSON
    {
      "name": "get_workspace_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Orientation. Reports what is on screen right now: active filters, how many jobs match, which job is open, and how many tools are currently registered. Call this first in a new task. Reads only; changes nothing.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_profile_factsAnswer

    The candidate's fact bank, and the ONLY legal source of resume claims: an experience that is not here has not been claimed and must not appear in the resume or the cover note. Read-only, and there is no writable counterpart — no tool available to you can add, edit or delete a fact. If something is missing you may ask the user about it with request_profile_fact, which asks a question rather than recording an answer.

    View tool JSON
    {
      "name": "get_profile_facts",
      "kind": "answer",
      "impl": "imperative",
      "description": "The candidate's fact bank, and the ONLY legal source of resume claims: an experience that is not here has not been claimed and must not appear in the resume or the cover note. Read-only, and there is no writable counterpart — no tool available to you can add, edit or delete a fact. If something is missing you may ask the user about it with request_profile_fact, which asks a question rather than recording an answer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "skill",
              "role",
              "achievement",
              "education",
              "language"
            ]
          }
        },
        "additionalProperties": false
      }
    }
    get_resumeAnswer

    The current resume, block by block, each with its id and the fact ids it was built from. Use the block ids when proposing edits. Reads only.

    View tool JSON
    {
      "name": "get_resume",
      "kind": "answer",
      "impl": "imperative",
      "description": "The current resume, block by block, each with its id and the fact ids it was built from. Use the block ids when proposing edits. Reads only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string",
            "enum": [
              "summary",
              "experience",
              "skills",
              "education"
            ]
          }
        },
        "additionalProperties": false
      }
    }
    get_applicationsAnswer

    The application tracker. Answers "what have I already applied to?". Reads only.

    View tool JSON
    {
      "name": "get_applications",
      "kind": "answer",
      "impl": "imperative",
      "description": "The application tracker. Answers \"what have I already applied to?\". Reads only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "ready",
              "submitted"
            ]
          }
        },
        "additionalProperties": false
      }
    }
    search_jobsAction

    Filter the job list. This CHANGES WHAT THE HUMAN SEES on screen — the sidebar controls move to match, which is intended. Replaces the whole filter set rather than merging, so pass the full intended filter state each time. Tag names resolve through the app vocabulary, so "tts" finds jobs tagged "speech".

    View tool JSON
    {
      "name": "search_jobs",
      "kind": "act",
      "impl": "imperative",
      "description": "Filter the job list. This CHANGES WHAT THE HUMAN SEES on screen — the sidebar controls move to match, which is intended. Replaces the whole filter set rather than merging, so pass the full intended filter state each time. Tag names resolve through the app vocabulary, so \"tts\" finds jobs tagged \"speech\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free text over title, company, description and tags."
          },
          "remote": {
            "type": "boolean"
          },
          "seniority": {
            "type": "string",
            "enum": [
              "junior",
              "mid",
              "senior",
              "lead"
            ]
          },
          "maxYears": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "description": "Exclude postings demanding more than this many years."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 8
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "default": 10
          }
        },
        "additionalProperties": false
      }
    }
    open_jobAction

    Open a posting. SWITCHES the open job: whatever was open is closed first, and only one job is ever open. If the user names a job, open it — do not ask which one, just switch. This CHANGES THE SCREEN and registers the job-scoped tools (get_job_details, get_fit_gaps, propose_resume_edits, and prepare_application when no edits are pending); the tools for the previous job are unregistered. Pending edits are NOT discarded by switching — they still belong to the job they were written for and still block prepare_application, so withdraw them if you are abandoning that job.

    View tool JSON
    {
      "name": "open_job",
      "kind": "act",
      "impl": "imperative",
      "description": "Open a posting. SWITCHES the open job: whatever was open is closed first, and only one job is ever open. If the user names a job, open it — do not ask which one, just switch. This CHANGES THE SCREEN and registers the job-scoped tools (get_job_details, get_fit_gaps, propose_resume_edits, and prepare_application when no edits are pending); the tools for the previous job are unregistered. Pending edits are NOT discarded by switching — they still belong to the job they were written for and still block prepare_application, so withdraw them if you are abandoning that job.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          }
        },
        "required": [
          "jobId"
        ],
        "additionalProperties": false
      }
    }
    request_profile_factAction

    DOES NOT ADD ANYTHING. This opens a question on screen for the user and returns immediately; the fact bank is unchanged when this call returns, and stays unchanged unless the user themself types an answer and saves it. You have no tool that writes to the fact bank — there is no follow-up call that commits this, and nothing you do can make it commit. Never tell the user you will add, record or save a fact: you are asking them a question about their own history, and they may well say no. Only ask about work the USER has actually done that the bank happens not to record yet. A requirement being missing is NOT evidence the user has it — if get_fit_gaps says TensorFlow is missing, the honest reading is that they do not have TensorFlow. Do not ask in order to close a gap. To see whether the user answered, re-read get_profile_facts on a later turn.

    View tool JSON
    {
      "name": "request_profile_fact",
      "kind": "act",
      "impl": "imperative",
      "description": "DOES NOT ADD ANYTHING. This opens a question on screen for the user and returns immediately; the fact bank is unchanged when this call returns, and stays unchanged unless the user themself types an answer and saves it. You have no tool that writes to the fact bank — there is no follow-up call that commits this, and nothing you do can make it commit. Never tell the user you will add, record or save a fact: you are asking them a question about their own history, and they may well say no. Only ask about work the USER has actually done that the bank happens not to record yet. A requirement being missing is NOT evidence the user has it — if get_fit_gaps says TensorFlow is missing, the honest reading is that they do not have TensorFlow. Do not ask in order to close a gap. To see whether the user answered, re-read get_profile_facts on a later turn.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "claim": {
            "type": "string",
            "description": "The fact as you understood it, written in the first person."
          },
          "kind": {
            "type": "string",
            "enum": [
              "skill",
              "role",
              "achievement",
              "education",
              "language"
            ]
          },
          "why": {
            "type": "string",
            "description": "Why this posting makes it worth adding."
          }
        },
        "required": [
          "claim",
          "kind",
          "why"
        ],
        "additionalProperties": false
      }
    }