Skip to content

CareerProAI MCP server

tech.careerpro/careerprocareerpro.techstreamable-httpv1.0.0Scanned

Tailor your resume to any job, score it against the ATS, and practice interviews. 7-day free trial;

12 tools: 5 change things and 7 only read.

Tools: 0 delete, 0 irreversible, 5 write, 7 read.
  • Reads private data · 3
  • Reads text others write · 2
  • Can send data out · 0
  • 3 findings

Tools listed without sign-in. Remote posture

With Anlyon

5 tools here change things. Govern them.

  • Anlyon lists the tools and adopts none.
  • Each tool you adopt gets approvals and receipts.
  • Your agent never holds the key.
Govern this server →

A tool your agent calls directly is not routed through Anlyon and is not governed by it. anlyon.dev only lists and labels, and these labels are the same either way.

What the CareerProAI MCP server can do

The CareerProAI MCP server is published by careerpro.tech, a domain the MCP Registry verified. It has 12 tools. It can create or change data (5 tools: careerpro_ats_score, careerpro_about, careerpro_pricing, careerpro_submission_report and 1 more), but cannot delete data. 7 tools only read.

3 tools read private data (careerpro_resume_get, careerpro_letter_get and careerpro_refresh); 2 tools bring in text other people can write (careerpro_resume_get and careerpro_letter_get).

The fixed checks matched 3 findings (annotation-conflict). Each one comes with the text it matched.

Its remote endpoint lists its tools without sign-in.

Last scanned Nov 10, 2026, version 1.0.0.

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

12 tools

Changes things 5Claude Code: ask
  • careerpro_aboutWhat CareerPro does and what is free Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.t…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What CareerPro does and what is free Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_ats_scoreReturns a 0 to 100 keyword match, the terms you matched and the ones missing.1 finding

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "careerpro_ats_score" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "return": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Returns a 0 to 100 keyword match, the terms you matched and the ones missing. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • careerpro_pricingWhere prices live and what costs nothing Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerp…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Where prices live and what costs nothing Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_refreshReads each watched employer board's own public ATS feed (Greenhouse, Lever, Ashby, Workable) and files new matches.Reads private data1 finding

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    What it can reach

    • private-dataThe description's first sentence says "read" and "file": it reads files.

    Findings

    • Warn

      The server marks "careerpro_refresh" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "read": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Reads each watched employer board's own public ATS feed (Greenhouse, Lever, Ashby, Workable) and files new matches. An account that watches no boards yet is first given the top 20 registry boards for its target titles (a shared registry of employers' public feeds; LinkedIn, Indeed and similar sites are never used). Returns seeded, fetched, matched, new and packs_built. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • careerpro_submission_reportLogs the exact answers that were filled and the outcome (applied, dry_run_ready, owner_required, submission_unconfirmed, duplicate_refused, error).1 finding

    Why it is in this group

    • The description's first verb is "log": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "careerpro_submission_report" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Logs the exact answers that were filled and the outcome (applied, dry_run_ready, owner_required, submission_unconfirmed, duplicate_refused, error). 'applied' with submitted=true moves the opening to Applied and sets a follow-up date. Unconfirmed results are never retried automatically. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
Only reads 7Show 7 read-only tools
  • careerpro_bank_getReturns base.json rules, visa rules and the profile block the desktop helper writes next to the runners.No findings

    Why it is in this group

    • The name "careerpro_bank_get" says "get": a word for reading.
    Description, as the server wrote it
    Returns base.json rules, visa rules and the profile block the desktop helper writes next to the runners. Only an approved bank is returned; approval happens once on careerpro.tech/auto-apply. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_jobs_listOpenings gathered from the employer boards you watch, ranked by keyword fit, with the screen verdict for each.No findings

    Why it is in this group

    • The name "careerpro_jobs_list" says "list": a word for reading.
    Description, as the server wrote it
    Openings gathered from the employer boards you watch, ranked by keyword fit, with the screen verdict for each. Key from careerpro.tech/auto-apply. Scope read. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_letter_getCover letter for one opening as text and PDF (base64) Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at ht…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "careerpro_letter_get" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe description's first sentence says "http": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Cover letter for one opening as text and PDF (base64) Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_pack_getEverything needed to apply: posting text, screen verdict with evidence, tailored resume text, cover letter, pre-mapped answers from your approved answer bank, unanswered questions,…No findings

    Why it is in this group

    • The name "careerpro_pack_get" says "get": a word for reading.
    Description, as the server wrote it
    Everything needed to apply: posting text, screen verdict with evidence, tailored resume text, cover letter, pre-mapped answers from your approved answer bank, unanswered questions, dedupe receipt and the per-ATS mode (submit, fill_only, headed, skip). Builds the pack when it does not exist yet; tailoring uses only facts from your own resume. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_queue_getFIT packs with an approved answer bank, ordered, with the per-ATS mode.No findings

    Why it is in this group

    • The name "careerpro_queue_get" says "get": a word for reading.
    Description, as the server wrote it
    FIT packs with an approved answer bank, ordered, with the per-ATS mode. The submit step never runs on our servers: your desktop helper or your own agent executes it in your browser, with your logins. LinkedIn Easy Apply, CAPTCHA solving and attestation checkboxes are never automated. Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • careerpro_resume_getTailored resume for one opening as PDF (base64) and text Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "careerpro_resume_get" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe description's first sentence says "http": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Tailored resume for one opening as PDF (base64) and text Pricing: {"unit": "call", "price_usd": 0, "free_quota": "200 per day per IP", "note": "Keyed volume pricing is published at https://careerpro.tech/pricing.json"}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • usage_getUsage for the calling key (last 30 days)No findings

    Why it is in this group

    • The name "usage_get" says "get": a word for reading.
    Description, as the server wrote it
    Usage for the calling key (last 30 days)

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write2
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Tools listed without sign-in

Looked at Nov 10, 2026, 08:20 UTC, unchanged since Nov 10, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
5
Protocol version
2025-03-26
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
not observed
RFC 9728 protected resource metadata
not observed
Authorization servers
not observed
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • WarnThe whole server

    The endpoint served tools/list without credentials, and the list has 5 tools that change things (5 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://careerpro.tech/mcp: tools/list returned 12 tools to an anonymous client, including careerpro_ats_score (write), careerpro_about (write), careerpro_pricing (write), careerpro_submission_report (write), careerpro_refresh (write)

    What this check looks for

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "careerpro_ats_score" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "return": a word for reading.

    What this check looks for
  • The server marks "careerpro_submission_report" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "log": a word for reading.

    What this check looks for
  • The server marks "careerpro_refresh" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}; The description's first verb is "read": a word for reading.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http careerpro https://careerpro.tech/mcp
claude mcp add --transport http careerpro https://careerpro.tech/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__careerpro__careerpro_jobs_list",
      "mcp__careerpro__careerpro_pack_get",
      "mcp__careerpro__careerpro_resume_get",
      "mcp__careerpro__careerpro_letter_get",
      "mcp__careerpro__careerpro_bank_get",
      "mcp__careerpro__careerpro_queue_get",
      "mcp__careerpro__usage_get"
    ],
    "ask": [
      "mcp__careerpro__careerpro_ats_score",
      "mcp__careerpro__careerpro_about",
      "mcp__careerpro__careerpro_pricing",
      "mcp__careerpro__careerpro_submission_report",
      "mcp__careerpro__careerpro_refresh"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as careerpro. Review it before you use it.

Capability tags behind 3 rules
  • mcp__careerpro__careerpro_resume_get private-data, untrusted-input
  • mcp__careerpro__careerpro_letter_get private-data, untrusted-input
  • mcp__careerpro__careerpro_refresh private-data

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/tech.careerpro/careerpro/verify?hash=858107698afa325cc91e1543496a5d79fc11441531490a6d6a68f481b3f426da" | jq -e '.changed == false'

Pinned hash 858107698afa, from Nov 10, 2026, 01:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/tech.careerpro/careerpro/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for tech.careerpro/careerpro
[![anlyon.dev](https://anlyon.dev/badge/tech.careerpro/careerpro.svg)](https://anlyon.dev/servers/tech.careerpro/careerpro)

Source: MCP Registry. Synced Nov 10, 2026, 01:18 UTC.

CareerProAI MCP server: questions and answers

Answered from the scan above, not from the publisher's description.

Is the CareerProAI MCP server safe?

No scan can promise that. What its definitions show: 12 tools, 5 of which can change, send or delete something, and 3 findings from fixed checks. Allow the reads, ask before each change, and deny the deletes; the permissions block on this page does that.

Can the CareerProAI MCP server delete data?

No tool is classed as destructive: going by their definitions, none of them deletes, cancels or revokes anything.

Can the CareerProAI MCP server do things that cannot be undone?

No tool is classed as irreversible: none of them sends, pays, publishes or merges, going by their definitions.

What tools does the CareerProAI MCP server have?

12 tools: 5 write, 7 read. careerpro_ats_score, careerpro_about, careerpro_pricing, careerpro_submission_report, careerpro_refresh, careerpro_jobs_list, careerpro_pack_get, careerpro_resume_get and 4 more.

Does the CareerProAI MCP server need sign-in or OAuth?

Its remote endpoint listed its tools to an anonymous client, without sign-in.

Does the CareerProAI MCP server send data to outside services?

None of its tools sends, posts or publishes, or takes a recipient, channel or URL.

Has the CareerProAI MCP server changed its tools?

Not since anlyon.dev started tracking it. Last scanned Nov 10, 2026.