PM Career Desk

Resume, LinkedIn and interview practice tools for project, program and product managers.

我該用這個嗎

品質與安全性

A
說明品質
98%
結構描述完整度
83%
命名品質
92%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~9,507Token(工具定義)
~4.5 KB典型回應大小
顯著的注意力影響(128k 上下文的 7.43%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "interview-coach": {
      "url": "https://app.pmcareerdesk.com/mcp"
    }
  }
}

遠端端點

https://app.pmcareerdesk.com/mcpstreamable-http

它能做什麼

工具清單

工具(19)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢check_resume_line(line, role, lang, text_en)

Checks one resume bullet of a project, program or product manager, TPM or PMO lead with rules written by practitioners. Use it when someone asks about a single line or wants to test a rewrite of it. Returns one finding and the question a hiring manager may ask about that line. 5 words to 500 characters, English; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "line": {
      "description": "One resume bullet as the person wrote it, 5 words to 500 characters. Several lines: the first full line is checked.",
      "title": "Line",
      "type": "string"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "text_en": {
      "default": "",
      "description": "Only when the text is not in English: a literal English translation of it, word for word, with no fact added or left out and figures and names as written. The fixed rules read this translation, and the result says so.",
      "title": "Text En",
      "type": "string"
    }
  },
  "required": [
    "line"
  ],
  "title": "check_resume_line_toolArguments"
}
🟢get_pm_archetype_test

Returns the 10 questions of the PM Archetype test for project, program and product managers, each with six options labelled A to F. For reflection, not a psychometric or hiring assessment.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "title": "get_pm_archetype_test_toolArguments"
}
🟢score_pm_archetype(answers)

Scores the PM Archetype test from 10 answer letters (A to F, in question order, as returned by get_pm_archetype_test). Returns the primary archetype, an optional secondary streak, strengths, a blind spot and one resume fix. Nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "answers": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "string"
        }
      ],
      "description": "The 10 answer letters, A to F, one per question in the order of get_pm_archetype_test, as a list or as one string, for example [\"A\", \"C\", \"B\", \"F\", \"A\", \"D\", \"E\", \"B\", \"C\", \"A\"] or \"ACBFADEBCA\".",
      "title": "Answers"
    }
  },
  "required": [
    "answers"
  ],
  "title": "score_pm_archetype_toolArguments"
}
🟢get_pm_title_fit_questions

Returns the 9 questions of the title fit check, which compares project manager, program manager and technical program manager for a person's current work. Options are labelled a to d.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "title": "get_pm_title_fit_questions_toolArguments"
}
🟢match_pm_title(answers)

Scores the 9 title fit answers (a to d, in question order, as returned by get_pm_title_fit_questions) and returns the closest title among project manager, program manager and technical program manager, with what hiring managers usually look for under that title. Nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "answers": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "string"
        }
      ],
      "description": "The 9 answer letters, a to d, one per question in the order of get_pm_title_fit_questions, as a list or as one string.",
      "title": "Answers"
    }
  },
  "required": [
    "answers"
  ],
  "title": "match_pm_title_toolArguments"
}
🟢prepare_interview_questions(resume_text, job_posting, role, company, resume_outline, ...)

Builds a job interview prep set for a project, program or product manager, TPM, PMO lead or business analyst from their resume text and, if they have it, the job posting. Use it when someone shares a resume (pasted or attached) before an interview, or asks what a hiring manager will ask them. Returns: the resume lines a hiring manager is likely to press on, each with a question that quotes the line and the points a strong answer covers; each requirement of the posting covered, partial or a gap, with the gaps as questions; and behavioral questions for the role. Each question has an id to pass to check_interview_answer when the person practises it. Optional: company (adds questions from what some large US employers publish, with source links), interview_date (adds the days left and what to practise first). Fixed rules written by practitioners, the same result for the same text. English text; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The full text of the job posting, as the person gave it. Optional; with it the result adds the requirements, the gaps and questions about them.",
      "title": "Job Posting"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "company": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's name as written in the posting.",
      "title": "Company"
    },
    "resume_outline": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResumeOutline"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional structure of the resume: roles with title, company, dates and bullets; summary; skills; certifications; education. Every line must appear word for word in resume_text; lines that do not are left out and counted in the result. Without it the plain text is read."
    },
    "job_requirements": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional. The requirement lines of the job posting, each word for word from job_posting; lines that are not are left out and counted in the result. Without them the requirements are read from job_posting.",
      "title": "Job Requirements"
    },
    "interview_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The interview date as YYYY-MM-DD.",
      "title": "Interview Date"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "industry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's industry, one of healthcare-life-sciences, financial-services, software-saas, government-public-sector, consulting-services, retail-supply-chain, manufacturing-industrial, energy-utilities; a plain name such as healthcare or banking is also read. Adds questions written for that industry. Empty when not sure.",
      "title": "Industry"
    }
  },
  "required": [
    "resume_text"
  ],
  "$defs": {
    "OutlineRole": {
      "properties": {
        "title": {
          "default": "",
          "description": "Job title, as written in the resume.",
          "maxLength": 200,
          "title": "Title",
          "type": "string"
        },
        "company": {
          "default": "",
          "description": "Employer, as written in the resume.",
          "maxLength": 200,
          "title": "Company",
          "type": "string"
        },
        "dates": {
          "default": "",
          "description": "Dates of the role, as written, for example Jan 2019 - Present.",
          "maxLength": 80,
          "title": "Dates",
          "type": "string"
        },
        "bullets": {
          "description": "The bullets of this role, each copied word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 40,
          "title": "Bullets",
          "type": "array"
        }
      },
      "title": "OutlineRole",
      "type": "object"
    },
    "ResumeOutline": {
      "properties": {
        "summary": {
          "description": "Summary lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Summary",
          "type": "array"
        },
        "roles": {
          "description": "Roles in resume order.",
          "items": {
            "$ref": "#/$defs/OutlineRole"
          },
          "maxItems": 30,
          "title": "Roles",
          "type": "array"
        },
        "skills": {
          "description": "Skills or tools lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Skills",
          "type": "array"
        },
        "certifications": {
          "description": "One credential per item, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Certifications",
          "type": "array"
        },
        "education": {
          "description": "Education lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Education",
          "type": "array"
        }
      },
      "title": "ResumeOutline",
      "type": "object"
    }
  },
  "title": "prepare_interview_questions_toolArguments"
}
🟢check_interview_answer(answer, question_id, question_type, resume_text, lang, ...)

Checks the structure of one practice answer to an interview question. Use it when the person writes or pastes an answer and wants feedback before the interview. Checks for a situation, the speaker's own action in the first person, a result, a before and after figure or a named record, vague amounts, length, filler and hedging words, and the balance of we and I; returns the rubric for the question type and what is missing. Needs question_id (from prepare_interview_questions) or question_type (for example conflict, failure, stakeholder, prioritization, measure). With resume_text, figures the resume does not show are marked unconfirmed. It does not judge whether the story is true and does not write the answer. Up to 6000 characters; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The practice answer as the person would say it, in their own words.",
      "title": "Answer",
      "type": "string"
    },
    "question_id": {
      "default": "",
      "description": "The id of the question from prepare_interview_questions, for example line.L12.measure, req.R3.gap or beh.c-conflict. One of question_id and question_type is needed.",
      "title": "Question Id",
      "type": "string"
    },
    "question_type": {
      "default": "",
      "description": "Used when there is no question_id: measure, ownership, stakeholder, conflict, failure, prioritization or requirement_gap.",
      "title": "Question Type",
      "type": "string"
    },
    "resume_text": {
      "default": "",
      "description": "Optional. The resume, or the resume line the question came from; figures of the answer it does not show are marked unconfirmed.",
      "title": "Resume Text",
      "type": "string"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "text_en": {
      "default": "",
      "description": "Only when the text is not in English: a literal English translation of it, word for word, with no fact added or left out and figures and names as written. The fixed rules read this translation, and the result says so.",
      "title": "Text En",
      "type": "string"
    }
  },
  "required": [
    "answer"
  ],
  "title": "check_interview_answer_toolArguments"
}
🟢review_resume(resume_text, role)

Reviews a whole resume of a project, program or product manager, TPM, PMO lead or business analyst, line by line, with rules written by practitioners. Use it when someone shares their resume and asks for a review, feedback, or what to fix before applying. Returns up to 12 lines in the order of risk (unsupported figures, duties with no result, vague claims), each with the finding and the question a hiring manager may ask about it, and the role signals the resume does not show yet. It points at what to fix and does not rewrite lines, so the person's own facts stay their own. English text up to 30000 characters; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    }
  },
  "required": [
    "resume_text"
  ],
  "title": "review_resume_toolArguments"
}
🟢match_resume_to_job(resume_text, job_posting, role, resume_outline, job_requirements)

Matches a job posting to a resume of a project, program or product manager, TPM, PMO lead or business analyst. Use it when someone asks whether they fit a posting, what is missing, or how to tailor their resume to it. Returns each requirement of the posting as covered, partial, gap or not checked, with the resume lines that show it; a years requirement is read against the dates of the roles and a budget size against the figures in the lines. Fixed rules, the same result for the same texts. Resume up to 30000 characters, posting up to 15000; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The full text of the job posting, as the person gave it. Optional; with it the result adds the requirements, the gaps and questions about them.",
      "title": "Job Posting"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "resume_outline": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResumeOutline"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional structure of the resume: roles with title, company, dates and bullets; summary; skills; certifications; education. Every line must appear word for word in resume_text; lines that do not are left out and counted in the result. Without it the plain text is read."
    },
    "job_requirements": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional. The requirement lines of the job posting, each word for word from job_posting; lines that are not are left out and counted in the result. Without them the requirements are read from job_posting.",
      "title": "Job Requirements"
    }
  },
  "required": [
    "resume_text"
  ],
  "$defs": {
    "OutlineRole": {
      "properties": {
        "title": {
          "default": "",
          "description": "Job title, as written in the resume.",
          "maxLength": 200,
          "title": "Title",
          "type": "string"
        },
        "company": {
          "default": "",
          "description": "Employer, as written in the resume.",
          "maxLength": 200,
          "title": "Company",
          "type": "string"
        },
        "dates": {
          "default": "",
          "description": "Dates of the role, as written, for example Jan 2019 - Present.",
          "maxLength": 80,
          "title": "Dates",
          "type": "string"
        },
        "bullets": {
          "description": "The bullets of this role, each copied word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 40,
          "title": "Bullets",
          "type": "array"
        }
      },
      "title": "OutlineRole",
      "type": "object"
    },
    "ResumeOutline": {
      "properties": {
        "summary": {
          "description": "Summary lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Summary",
          "type": "array"
        },
        "roles": {
          "description": "Roles in resume order.",
          "items": {
            "$ref": "#/$defs/OutlineRole"
          },
          "maxItems": 30,
          "title": "Roles",
          "type": "array"
        },
        "skills": {
          "description": "Skills or tools lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Skills",
          "type": "array"
        },
        "certifications": {
          "description": "One credential per item, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Certifications",
          "type": "array"
        },
        "education": {
          "description": "Education lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Education",
          "type": "array"
        }
      },
      "title": "ResumeOutline",
      "type": "object"
    }
  },
  "title": "match_resume_to_job_toolArguments"
}
🟢check_linkedin_profile(headline, about, experience, role, lang, ...)

Checks the LinkedIn headline and About section (and, optionally, the top experience entry) of a project, program or product manager, TPM or PMO lead. Use it when someone asks to review or improve their LinkedIn profile for recruiters. Checks the 220 character headline limit, the role title and searchable keywords, filler, what About shows before see more, figures and named scope, first person, personal details in public text, and whether the titles agree. Returns up to 10 findings in the order of risk, each with the line, the question a recruiter may ask and a direction, plus a score per section. It does not rewrite the text. English text; contact details are removed first; nothing is stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "headline": {
      "default": "",
      "description": "The LinkedIn headline as written. At least the headline or the About section is needed.",
      "title": "Headline",
      "type": "string"
    },
    "about": {
      "default": "",
      "description": "The About section as written.",
      "title": "About",
      "type": "string"
    },
    "experience": {
      "default": "",
      "description": "Optional. The top experience entry: the title line, then its description.",
      "title": "Experience",
      "type": "string"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "headline_en": {
      "default": "",
      "description": "Only when the profile is not in English: a literal English translation of the headline, word for word, with no fact added or left out and figures and names as written.",
      "title": "Headline En",
      "type": "string"
    },
    "about_en": {
      "default": "",
      "description": "Only when the profile is not in English: a literal English translation of the About section, word for word, with no fact added or left out and figures and names as written.",
      "title": "About En",
      "type": "string"
    },
    "experience_en": {
      "default": "",
      "description": "Only when the profile is not in English: a literal English translation of the top experience entry, word for word, with no fact added or left out and figures and names as written.",
      "title": "Experience En",
      "type": "string"
    }
  },
  "title": "check_linkedin_profile_toolArguments"
}
🟢prepare_interview_plan(resume_text, job_posting, role, company, resume_outline, ...)

Builds the full interview plan for a project, program or product manager (or a business analyst) from the resume text and, optionally, a job posting and a company name: every resume line a hiring manager is likely to press on, every requirement of the posting matched to the resume, every company question with its source pages, and the questions arranged by interview stage (recruiter screen, hiring manager, panel, company round). Same inputs and question ids as prepare_interview_questions. Fixed rules, no model. Contact details are removed before the check; the resume and the posting are not stored. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The full text of the job posting, as the person gave it. Optional; with it the result adds the requirements, the gaps and questions about them.",
      "title": "Job Posting"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "company": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's name as written in the posting.",
      "title": "Company"
    },
    "resume_outline": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResumeOutline"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional structure of the resume: roles with title, company, dates and bullets; summary; skills; certifications; education. Every line must appear word for word in resume_text; lines that do not are left out and counted in the result. Without it the plain text is read."
    },
    "job_requirements": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional. The requirement lines of the job posting, each word for word from job_posting; lines that are not are left out and counted in the result. Without them the requirements are read from job_posting.",
      "title": "Job Requirements"
    },
    "industry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's industry, one of healthcare-life-sciences, financial-services, software-saas, government-public-sector, consulting-services, retail-supply-chain, manufacturing-industrial, energy-utilities; a plain name such as healthcare or banking is also read. Adds questions written for that industry. Empty when not sure.",
      "title": "Industry"
    }
  },
  "required": [
    "resume_text"
  ],
  "$defs": {
    "OutlineRole": {
      "properties": {
        "title": {
          "default": "",
          "description": "Job title, as written in the resume.",
          "maxLength": 200,
          "title": "Title",
          "type": "string"
        },
        "company": {
          "default": "",
          "description": "Employer, as written in the resume.",
          "maxLength": 200,
          "title": "Company",
          "type": "string"
        },
        "dates": {
          "default": "",
          "description": "Dates of the role, as written, for example Jan 2019 - Present.",
          "maxLength": 80,
          "title": "Dates",
          "type": "string"
        },
        "bullets": {
          "description": "The bullets of this role, each copied word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 40,
          "title": "Bullets",
          "type": "array"
        }
      },
      "title": "OutlineRole",
      "type": "object"
    },
    "ResumeOutline": {
      "properties": {
        "summary": {
          "description": "Summary lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Summary",
          "type": "array"
        },
        "roles": {
          "description": "Roles in resume order.",
          "items": {
            "$ref": "#/$defs/OutlineRole"
          },
          "maxItems": 30,
          "title": "Roles",
          "type": "array"
        },
        "skills": {
          "description": "Skills or tools lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Skills",
          "type": "array"
        },
        "certifications": {
          "description": "One credential per item, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Certifications",
          "type": "array"
        },
        "education": {
          "description": "Education lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Education",
          "type": "array"
        }
      },
      "title": "ResumeOutline",
      "type": "object"
    }
  },
  "title": "prepare_interview_plan_toolArguments"
}
🟡save_practice(answer, question_id, question_type, keep_answer_text, question_text, ...)

Saves one practice answer attempt to the signed-in account, when the person asks to save it. The answer is checked with the same structure rules as check_interview_answer; by default only the progress is saved (question id and type, structure checks met, word count, date). The answer text and the question are kept only with keep_answer_text true, encrypted with the account key. Saved attempts are deleted after 180 days. An answer in another language is checked through its literal English translation (text_en) sent with it. Contact details are removed before the check. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The practice answer as the person would say it, in their own words.",
      "title": "Answer",
      "type": "string"
    },
    "question_id": {
      "default": "",
      "description": "The id of the question from prepare_interview_questions, for example line.L12.measure, req.R3.gap or beh.c-conflict. One of question_id and question_type is needed.",
      "title": "Question Id",
      "type": "string"
    },
    "question_type": {
      "default": "",
      "description": "Used when there is no question_id: measure, ownership, stakeholder, conflict, failure, prioritization or requirement_gap.",
      "title": "Question Type",
      "type": "string"
    },
    "keep_answer_text": {
      "default": false,
      "description": "True only when the person asked to keep the text of the answer; it is kept encrypted with the account key.",
      "title": "Keep Answer Text",
      "type": "boolean"
    },
    "question_text": {
      "default": "",
      "description": "Optional. The question as asked; kept only together with the answer text.",
      "title": "Question Text",
      "type": "string"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "text_en": {
      "default": "",
      "description": "Only when the text is not in English: a literal English translation of it, word for word, with no fact added or left out and figures and names as written. The fixed rules read this translation, and the result says so.",
      "title": "Text En",
      "type": "string"
    }
  },
  "required": [
    "answer"
  ],
  "title": "save_practice_toolArguments"
}
🟢get_practice(question_id, include_answer_text)

Returns the practice attempts saved on the signed-in account, newest first (up to 50), with a summary per question: attempts, the best number of structure checks met, the last date. Kept answer texts are included only with include_answer_text true. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "question_id": {
      "default": "",
      "description": "Optional. Only the attempts of this question id.",
      "title": "Question Id",
      "type": "string"
    },
    "include_answer_text": {
      "default": false,
      "description": "True to include the kept answer texts.",
      "title": "Include Answer Text",
      "type": "boolean"
    }
  },
  "title": "get_practice_toolArguments"
}
🟡export_prep_pack(resume_text, job_posting, role, company, resume_outline, ...)

Builds the full interview plan (as prepare_interview_plan) as a Word file (.docx): the questions by interview stage with the points a strong answer includes, the requirement map and the gaps, and the answer texts the person kept with save_practice. Returns a download link that works once and expires after 10 minutes; the file is built in memory and not kept. Contact details are removed before the check. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The full text of the job posting, as the person gave it. Optional; with it the result adds the requirements, the gaps and questions about them.",
      "title": "Job Posting"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "company": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's name as written in the posting.",
      "title": "Company"
    },
    "resume_outline": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResumeOutline"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional structure of the resume: roles with title, company, dates and bullets; summary; skills; certifications; education. Every line must appear word for word in resume_text; lines that do not are left out and counted in the result. Without it the plain text is read."
    },
    "job_requirements": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional. The requirement lines of the job posting, each word for word from job_posting; lines that are not are left out and counted in the result. Without them the requirements are read from job_posting.",
      "title": "Job Requirements"
    },
    "include_saved_answers": {
      "default": true,
      "description": "False leaves the kept practice answers out of the file.",
      "title": "Include Saved Answers",
      "type": "boolean"
    }
  },
  "required": [
    "resume_text"
  ],
  "$defs": {
    "OutlineRole": {
      "properties": {
        "title": {
          "default": "",
          "description": "Job title, as written in the resume.",
          "maxLength": 200,
          "title": "Title",
          "type": "string"
        },
        "company": {
          "default": "",
          "description": "Employer, as written in the resume.",
          "maxLength": 200,
          "title": "Company",
          "type": "string"
        },
        "dates": {
          "default": "",
          "description": "Dates of the role, as written, for example Jan 2019 - Present.",
          "maxLength": 80,
          "title": "Dates",
          "type": "string"
        },
        "bullets": {
          "description": "The bullets of this role, each copied word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 40,
          "title": "Bullets",
          "type": "array"
        }
      },
      "title": "OutlineRole",
      "type": "object"
    },
    "ResumeOutline": {
      "properties": {
        "summary": {
          "description": "Summary lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Summary",
          "type": "array"
        },
        "roles": {
          "description": "Roles in resume order.",
          "items": {
            "$ref": "#/$defs/OutlineRole"
          },
          "maxItems": 30,
          "title": "Roles",
          "type": "array"
        },
        "skills": {
          "description": "Skills or tools lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Skills",
          "type": "array"
        },
        "certifications": {
          "description": "One credential per item, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Certifications",
          "type": "array"
        },
        "education": {
          "description": "Education lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Education",
          "type": "array"
        }
      },
      "title": "ResumeOutline",
      "type": "object"
    }
  },
  "title": "export_prep_pack_toolArguments"
}
⚪start_mock_interview(resume_text, job_posting, role, company, stage, ...)

Starts a mock interview for a project, program or product manager (or a business analyst) from the resume text and, optionally, a job posting and a company name. Picks 5 to 10 questions for one interview stage (screen, hiring_manager, panel or final) from the resume lines, the requirements of the posting, behavioral questions for the role and company principle questions, each with the competency it tests and the follow-up probes an interviewer uses. Returns a session id and the first question only. The session is kept 24 hours, encrypted with the account key. Questions are written in English; optional lang names the person's language. Contact details are removed first. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The full text of the job posting, as the person gave it. Optional; with it the result adds the requirements, the gaps and questions about them.",
      "title": "Job Posting"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. One of project-manager, program-manager, technical-program-manager, product-manager, scrum-master, pmo, it-manager, business-analyst, delivery-manager; a title as written (for example Senior Program Manager) is also read. Empty when not sure.",
      "title": "Role"
    },
    "company": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The employer's name as written in the posting.",
      "title": "Company"
    },
    "stage": {
      "default": "hiring_manager",
      "description": "The interview stage: screen, hiring_manager, panel or final.",
      "title": "Stage",
      "type": "string"
    },
    "length": {
      "default": 6,
      "description": "The number of questions, 5 to 10; a number outside is held to the nearest end.",
      "title": "Length",
      "type": "integer"
    },
    "resume_outline": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResumeOutline"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional structure of the resume: roles with title, company, dates and bullets; summary; skills; certifications; education. Every line must appear word for word in resume_text; lines that do not are left out and counted in the result. Without it the plain text is read."
    },
    "job_requirements": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional. The requirement lines of the job posting, each word for word from job_posting; lines that are not are left out and counted in the result. Without them the requirements are read from job_posting.",
      "title": "Job Requirements"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    }
  },
  "required": [
    "resume_text"
  ],
  "$defs": {
    "OutlineRole": {
      "properties": {
        "title": {
          "default": "",
          "description": "Job title, as written in the resume.",
          "maxLength": 200,
          "title": "Title",
          "type": "string"
        },
        "company": {
          "default": "",
          "description": "Employer, as written in the resume.",
          "maxLength": 200,
          "title": "Company",
          "type": "string"
        },
        "dates": {
          "default": "",
          "description": "Dates of the role, as written, for example Jan 2019 - Present.",
          "maxLength": 80,
          "title": "Dates",
          "type": "string"
        },
        "bullets": {
          "description": "The bullets of this role, each copied word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 40,
          "title": "Bullets",
          "type": "array"
        }
      },
      "title": "OutlineRole",
      "type": "object"
    },
    "ResumeOutline": {
      "properties": {
        "summary": {
          "description": "Summary lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Summary",
          "type": "array"
        },
        "roles": {
          "description": "Roles in resume order.",
          "items": {
            "$ref": "#/$defs/OutlineRole"
          },
          "maxItems": 30,
          "title": "Roles",
          "type": "array"
        },
        "skills": {
          "description": "Skills or tools lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Skills",
          "type": "array"
        },
        "certifications": {
          "description": "One credential per item, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Certifications",
          "type": "array"
        },
        "education": {
          "description": "Education lines, word for word.",
          "items": {
            "type": "string"
          },
          "maxItems": 60,
          "title": "Education",
          "type": "array"
        }
      },
      "title": "ResumeOutline",
      "type": "object"
    }
  },
  "title": "start_mock_interview_toolArguments"
}
🟢answer_mock_question(session_id, answer, skip, turn, lang, ...)

Records the person's answer to the current question of a mock interview and checks its structure with the rules of check_interview_answer. Returns a compact verdict and what comes next: a follow-up probe for what the answer does not show (own action, a result in numbers, the figure before, one specific example), or the next question. skip moves on without an answer. An answer in another language is recorded and checked as its literal English translation (text_en) sent with it. Contact details are removed first. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "session_id": {
      "description": "The session_id that start_mock_interview returned.",
      "title": "Session Id",
      "type": "string"
    },
    "answer": {
      "default": "",
      "description": "The person's answer to the current question or follow-up, exactly as given.",
      "title": "Answer",
      "type": "string"
    },
    "skip": {
      "default": false,
      "description": "True moves on to the next question without an answer.",
      "title": "Skip",
      "type": "boolean"
    },
    "turn": {
      "default": 0,
      "description": "Optional. The turn number of the question being answered; a repeated turn returns the same reply without recording the answer twice. 0 when not known.",
      "title": "Turn",
      "type": "integer"
    },
    "lang": {
      "anyOf": [
        {
          "maxLength": 35,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "The language the person writes in, as a code such as es, fr or ru; empty or en for English. The result names this language; findings are written in English.",
      "title": "Lang"
    },
    "text_en": {
      "default": "",
      "description": "Only when the text is not in English: a literal English translation of it, word for word, with no fact added or left out and figures and names as written. The fixed rules read this translation, and the result says so.",
      "title": "Text En",
      "type": "string"
    }
  },
  "required": [
    "session_id"
  ],
  "title": "answer_mock_question_toolArguments"
}
🟡finish_mock_interview(session_id, keep_answer_text, save_progress)

Ends a mock interview and returns the scorecard: each competency met, partly or not shown (from the structure checks), and the three questions to practise next with their ids. Saves the progress of each checked answer (question id, checks met, word count) to the practice of the account, deleted after 180 days; the answer texts only with keep_answer_text true, encrypted with the account key (for an answer not in English, its English translation); nothing with save_progress false. The answers are then removed from the session; finishing again returns the same scorecard. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "session_id": {
      "description": "The session_id that start_mock_interview returned.",
      "title": "Session Id",
      "type": "string"
    },
    "keep_answer_text": {
      "default": false,
      "description": "True only when the person asked to keep the text of the answer; it is kept encrypted with the account key.",
      "title": "Keep Answer Text",
      "type": "boolean"
    },
    "save_progress": {
      "default": true,
      "description": "False saves nothing to the practice of the account.",
      "title": "Save Progress",
      "type": "boolean"
    }
  },
  "required": [
    "session_id"
  ],
  "title": "finish_mock_interview_toolArguments"
}
🟢build_story_bank(resume_text, role)

Builds 10 to 15 STAR interview stories (situation, task, action, result) from the resume text of a project, program or product manager: each story uses only the resume's own lines and figures, names the competencies it shows (conflict, risk, vendor management, stakeholder management, influence without authority and others), and lists the questions still open, such as a result without a figure or an action that reads as the team's. Fixed rules, no model. Contact details are removed before the check; the resume is not stored. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The target role, for example program manager or technical program manager.",
      "title": "Role"
    }
  },
  "required": [
    "resume_text"
  ],
  "title": "build_story_bank_toolArguments"
}
🟢draft_30_60_90_plan(resume_text, job_posting, role)

Drafts a 30-60-90 day plan skeleton for one job posting: what to learn in the first 30 days (the stakeholders and systems the posting names, a delivery health check), quick wins by day 60 tied to the problems the posting states, and day 90 goals written as targets for the person to set. Each item names the posting requirement it answers and, where one fits, the person's own resume line. Fixed rules, no model. Contact details are removed before the check; the resume and the posting are not stored. Requires sign-in with a PM Career Desk account that has an Interview Coach Pass.

輸入結構描述

{
  "type": "object",
  "properties": {
    "resume_text": {
      "description": "The resume as plain text, copied in full from what the person pasted or from the text of the file they attached. At least the summary and the experience section.",
      "title": "Resume Text",
      "type": "string"
    },
    "job_posting": {
      "description": "The full text of the job posting, as the person gave it, at least 15 words; the plan is built from its requirements.",
      "title": "Job Posting",
      "type": "string"
    },
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "description": "Optional. The target role, for example program manager or technical program manager.",
      "title": "Role"
    }
  },
  "required": [
    "resume_text",
    "job_posting"
  ],
  "title": "draft_30_60_90_plan_toolArguments"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本19 個工具