CareerProof MCP Server

AI-powered career intelligence and workforce analytics via the Model Context Protocol. Connect from Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

60Tools
40Free
20Paid
2Namespaces

Quick Start

Get connected in three steps. No SDK or local installation required — the MCP server runs on Cloudflare's edge.

Get your API token

Sign in at careerproof.ai and copy your API key from Config → Settings. API keys start with cpk_.

Choose your connection method

OAuth 2.0 at /mcp — interactive login (Claude Desktop, Windsurf).
Bearer token at /mcp/bearer — pass your API key directly (Cursor, programmatic).

Start using tools

Once connected, your AI client discovers all 60 tools automatically. Try: atlas_create_context (free) or ceevee_upload_cv (free) to get started.

🔒 Authentication

Two authentication methods are available. Choose based on your MCP client.

Recommended for interactive clients

OAuth 2.0

https://mcp.careerproof.ai/mcp

Full OAuth 2.0 authorization code flow with PKCE. Your MCP client handles the flow automatically — you just log in.

  • Automatic token refresh
  • Session persistence via KV
  • Supports email/password and API key login
Best for programmatic access

Bearer Token

https://mcp.careerproof.ai/mcp/bearer

Pass your API key or JWT directly in the Authorization header. No OAuth flow needed.

  • Header: Authorization: Bearer cpk_...
  • Or query param: ?token=cpk_...
  • Validates against the CareerProof backend
Tip: API keys (cpk_ prefix) also work on the OAuth /mcp endpoint via the resolveExternalToken fallback. Pass Bearer cpk_... in the Authorization header and it'll validate directly against the backend.

🔌 Connect Your Client

Step-by-step setup for popular MCP clients.

Claude Desktop

OAuth 2.0

Go to Claude.ai → Settings → Connectors. Add a new Custom Connector with the URL:

https://mcp.careerproof.ai/mcp

Claude handles OAuth automatically. You'll be prompted to log in on first use.

Cursor

Bearer Token

In Cursor settings, add a new MCP server:

"careerproof": { "url": "https://mcp.careerproof.ai/mcp/bearer", "headers": { "Authorization": "Bearer cpk_your_key_here" } }

🌊 Windsurf

OAuth 2.0

In Windsurf MCP settings, add a remote server:

"careerproof": { "serverUrl": "https://mcp.careerproof.ai/mcp" }

Windsurf supports OAuth — you'll be prompted to authorize.

🔍 MCP Inspector

OAuth 2.0 or Bearer

For testing and debugging:

# OAuth flow URL: https://mcp.careerproof.ai/mcp # Bearer (skip OAuth) URL: https://mcp.careerproof.ai/mcp/bearer Header: Authorization: Bearer cpk_...

🛠 Workflows

Two tool namespaces serve different users. All 60 tools are available through a single connection.

Atlas — Workforce Intelligence

For recruiters & TA teams

Upload candidates, create job descriptions, run competency analyses, batch rank against JDs, and generate research reports.

atlas_create_context atlas_upload_candidate atlas_create_jd atlas_start_gem_analysis atlas_start_fit_rank

CeeVee — Career Optimization

For professionals

Upload your CV, run market positioning analysis, choose a narrative lens, and get targeted optimization edits.

ceevee_upload_cv ceevee_analyze_positioning ceevee_get_opportunities ceevee_confirm_lens

Or use ceevee_full_review for a single-call autonomous review.

Async Pattern

Long-running tools (GEM analysis, batch jobs, reports) use an async pattern. Tools marked Async return a task_id immediately.

*_start tool → returns task_id → careerproof_task_status(task_id) → poll every 5-10s → careerproof_task_result(task_id)
// 1. Start the analysis result = atlas_start_gem_analysis({ context_id: 1, candidate_id: 5 }) // Returns: { task_id: "abc-123", analysis_id: 42 } // 2. Poll until complete status = careerproof_task_status({ task_id: "abc-123" }) // Returns: { status: "running", progress_pct: 65, current_stage: "Scoring competencies" } // 3. Fetch the result result = careerproof_task_result({ task_id: "abc-123", result_type: "analysis", resource_id: 42 })
Note: Your MCP client (Claude, Cursor) handles this loop automatically. The instructions field in the server manifest tells the AI to poll. You don't need to manage this yourself.

💰 Credits & Billing

Tools are metered with credits. CRUD and status tools are always free. Analysis, chat, and batch tools have credit costs shown in each tool's badge.

CategoryExample ToolsCost
CRUD & Statusatlas_create_context, ceevee_list_versions, careerproof_task_statusFree
Chatatlas_advisor_chat, ceevee_chat1-3 cr
Analysisceevee_analyze_positioning, atlas_start_jd_analysis5 cr
Deep Analysisatlas_start_gem_analysis (gem_full), ceevee_full_review10 cr
Matchingatlas_start_fit_match, atlas_generate_interview8 cr
Reportsatlas_start_report15+ cr
Batchatlas_start_batch_gem, atlas_start_jd_fit_batch3-10 cr/candidate
Credit-based billing. Each tool call deducts credits from your balance in real-time. Check your balance anytime with the careerproof://account resource.

Credit Plans

PlanRateValue
Individual1 SGD = 15 creditsBest for occasional use
Pro1 SGD = 20 creditsFor regular professionals
Pro+1 SGD = 25 creditsBest value for power users

📚 Tool Reference

All 60 tools with parameters, types, and credit costs. Click any tool name to copy its anchor link.

Universal 2

Async task polling — works with any async tool across Atlas and CeeVee.

careerproof_task_status

Free Sync

Check the status of any async task. Returns status (pending/running/completed/failed), progress percentage, and current stage.

ParameterTypeDescription
task_id string required Task ID returned by any async start tool

careerproof_task_result

Free Sync

Retrieve the full result of a completed async task. Supports analysis, batch_gem, jd_fit_batch, report, custom_eval_inference, custom_eval_batch, and dialogue_assessment result types.

ParameterTypeDescription
task_id string required Task ID of a completed async task
result_type enum: analysis | batch_gem | jd_fit_batch | report | custom_eval_inference | custom_eval_batch | dialogue_assessment required Type of result to fetch (determines backend endpoint)
resource_id number optional Resource-specific ID (analysis_id, job_id, report_id, etc.)
context_id number optional Context ID (required for jd_fit_batch)

Atlas — CRUD 9

Manage hiring contexts, candidates, and job descriptions. All free.

atlas_create_context

Free Sync

Create a new hiring context (company profile) for organizing candidates and JDs.

ParameterTypeDescription
company_name string required Company name (1-255 chars)
industry string optional Industry (max 100 chars)
company_size enum: startup | small | medium | large | enterprise optional Company size
location string optional Location (max 255 chars)
company_website string optional Website URL (max 500 chars)
hiring_context object optional Hiring details: open_roles, team_structure, budget_ranges, hiring_goals, hiring_timeline, key_requirements, competitor_context
is_default boolean optional Set as default context (default: false)

atlas_list_contexts

Free Sync

List all hiring contexts for the authenticated user.

ParameterTypeDescription
include_inactive boolean optional Include inactive contexts (default: false)

atlas_update_context

Free Sync

Update a hiring context's details (name, industry, size, hiring context).

ParameterTypeDescription
context_id number required Context ID
company_name string optional New company name
industry string optional New industry
company_size enum: startup | small | medium | large | enterprise optional New company size
location string optional New location
company_website string optional New website
hiring_context object optional Updated hiring details
is_default boolean optional Set as default
is_active boolean optional Activate/deactivate

atlas_upload_candidate

Free Sync

Upload a candidate CV (PDF/DOCX) to a hiring context. CV parsing starts asynchronously.

ParameterTypeDescription
context_id number required Hiring context ID
file string (base64) required CV file as base64 encoded string
candidate_name string optional Candidate name (max 255)
candidate_email string optional Candidate email (max 255)
filename string optional Original filename for content-type detection
tags string[] optional Tags for filtering (e.g. ['senior', 'engineering'])
notes string optional Notes about the candidate

atlas_list_candidates

Free Sync

List all candidates in a hiring context.

ParameterTypeDescription
context_id number required Context ID

atlas_get_candidate

Free Sync

Get full candidate detail including parsed CV content and parse status.

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID

atlas_create_jd

Free Sync

Create a job description from text within a hiring context.

ParameterTypeDescription
context_id number required Context ID
title string required JD title (1-255 chars)
content string required Full JD text (min 10 chars)

atlas_list_jds

Free Sync

List all job descriptions for a hiring context.

ParameterTypeDescription
context_id number required Context ID

atlas_get_analytics

Free Sync

Get comprehensive talent analytics dashboard data (candidate stats, analysis coverage, fit score distributions).

ParameterTypeDescription
context_id number required Context ID

Atlas — Analysis 4

AI-powered competency analysis and JD assessment.

atlas_start_gem_analysis

Async

Start an async GEM (10-factor competency) analysis on a candidate. Poll with careerproof_task_status, then fetch with atlas_get_analysis.

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID
analysis_type enum: gem_full | gem_lite | career_path optional Analysis depth (default: gem_full)

atlas_get_analysis

Free Sync

Retrieve a completed analysis result by analysis ID. Returns scores, competency breakdown, and recommendations.

ParameterTypeDescription
analysis_id number required Analysis ID

atlas_list_analyses

Free Sync

List all analyses for a candidate with optional type filtering.

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID
analysis_type enum: gem_full | gem_lite | career_path | jd_fit optional Filter by type

atlas_start_jd_analysis

Sync

Analyze a JD for market competitiveness, clarity, bias detection, salary benchmarking, and skills extraction. Synchronous.

ParameterTypeDescription
jd_text string required Full JD text (min 50 chars)
include_live_search boolean optional Include live web search for salary data (default: true)
industry_hint string optional Industry hint (max 100)
location_hint string optional Location hint (max 255)

Atlas — Batch & Reports 16

Bulk processing: batch GEM, JD-FIT batch, custom eval, reports, dialogue assessment.

atlas_start_batch_gem

Async

Start a batch GEM analysis across multiple candidates. Poll with atlas_get_batch_gem_status.

ParameterTypeDescription
context_id number required Context ID
candidate_ids number[] required Candidate IDs (min 1)
analysis_type enum: gem_full | gem_lite | career_path optional Analysis type (default: gem_full)

atlas_get_batch_gem_status

Free Sync

Check progress of a batch GEM job.

ParameterTypeDescription
job_id number required Batch job ID

atlas_get_batch_gem_results

Free Sync

Get all results from a completed batch GEM job.

ParameterTypeDescription
job_id number required Batch job ID

atlas_start_jd_fit_batch

Async

Match multiple candidates against a JD. Poll with atlas_get_jd_fit_batch_status.

ParameterTypeDescription
context_id number required Context ID
candidate_ids number[] required Candidate IDs (min 1)
jd_title string optional JD title (max 255)
jd_content string optional JD text (falls back to context active JD)
use_kb_enhancement boolean optional Use KB enhancement (default: true)

atlas_get_jd_fit_batch_status

Free Sync

Check progress of a JD-FIT batch job.

ParameterTypeDescription
context_id number required Context ID
batch_id number required Batch ID

atlas_get_jd_fit_results

Free Sync

Get JD-FIT results for a context. Returns ranked candidates with fit scores.

ParameterTypeDescription
context_id number required Context ID

atlas_start_custom_eval_batch

Async

Batch evaluate candidates using a custom evaluation model. Poll with atlas_get_custom_eval_batch_status.

ParameterTypeDescription
custom_model_id number required Custom eval model ID
candidate_ids number[] required Candidate IDs (min 1)
context_id number required Context ID
detail_level enum: brief | standard | deep optional Detail level (default: standard)
template_id number optional Evaluation template ID

atlas_get_custom_eval_batch_status

Free Sync

Check progress of a custom evaluation batch.

ParameterTypeDescription
batch_id number required Batch ID

atlas_get_custom_eval_batch_results

Free Sync

Get results from a completed custom eval batch.

ParameterTypeDescription
batch_id number required Batch ID

atlas_start_report

Async

Generate a research report (market_research, competitor_analysis, or talent_landscape). Poll with careerproof_task_status.

ParameterTypeDescription
report_type string required Report type: market_research | competitor_analysis | talent_landscape
inputs object required Report-specific inputs (varies by report_type)

atlas_get_report

Free Sync

Get report status and metadata.

ParameterTypeDescription
report_id number required Report ID

atlas_download_report

Free Sync

Download a completed report as base64-encoded PDF.

ParameterTypeDescription
report_id number required Report ID

atlas_list_reports

Free Sync

List all generated reports with status and summary.

ParameterTypeDescription
No parameters

atlas_start_dialogue_assessment

Async

Assess dialogue/interview transcripts in a session. Poll with careerproof_task_status.

ParameterTypeDescription
session_id number required Dialogue session ID

atlas_get_dialogue_results

Free Sync

Get assessment results for a dialogue session.

ParameterTypeDescription
session_id number required Dialogue session ID

atlas_start_custom_eval_inference

Async

Auto-generate evaluation dimensions for a custom eval model. Poll with careerproof_task_status.

ParameterTypeDescription
model_id number required Custom eval model ID

Atlas — Custom Eval Models 12

Create and manage custom evaluation models: CRUD, artifacts, rubric inference, and overrides. All free.

atlas_create_custom_eval_model

Free Sync

Create a new custom evaluation model for a hiring context.

ParameterTypeDescription
client_context_id number required Client context ID
name string required Model name (1-255 chars)
description string optional Model description (max 2000)

atlas_list_custom_eval_models

Free Sync

List all custom evaluation models for the authenticated user.

ParameterTypeDescription
No parameters

atlas_get_custom_eval_model

Free Sync

Get full detail for a custom eval model including dimensions, weights, and rubric status.

ParameterTypeDescription
model_id number required Model ID

atlas_update_custom_eval_model

Free Sync

Update a custom eval model's metadata (name, description, dimensions, weights).

ParameterTypeDescription
model_id number required Model ID
name string optional Updated name
description string optional Updated description
inferred_dimensions array optional Updated dimensions
inferred_weights object optional Updated weights

atlas_delete_custom_eval_model

Free Sync

Delete a custom evaluation model and all its artifacts and rubrics.

ParameterTypeDescription
model_id number required Model ID

atlas_upload_custom_eval_artifact

Free Sync

Upload a file artifact (CV, JD, template) as base64 to teach the model.

ParameterTypeDescription
model_id number required Model ID
file string (base64) required File as base64 string (PDF/DOCX)
artifact_type enum: cv_with_notes | template | free_text | jd required Artifact type
filename string optional Original filename
notes string optional Notes about this artifact
label enum: strong | weak | mixed optional Quality label

atlas_add_custom_eval_text_artifact

Free Sync

Add a plain text artifact to teach the model (rubric notes, criteria, descriptions).

ParameterTypeDescription
model_id number required Model ID
artifact_type enum: cv_with_notes | template | free_text | jd required Artifact type
text_content string required Text content
notes string optional Notes about this artifact
label enum: strong | weak | mixed optional Quality label

atlas_list_custom_eval_artifacts

Free Sync

List all artifacts uploaded to a custom eval model.

ParameterTypeDescription
model_id number required Model ID

atlas_infer_custom_eval_rubric

Free Sync

AI infers evaluation rubric from artifacts. Sync call, may take 30-60 seconds.

ParameterTypeDescription
model_id number required Model ID

atlas_get_custom_eval_rubric

Free Sync

Get the current rubric including dimensions, scoring criteria, and any overrides.

ParameterTypeDescription
model_id number required Model ID

atlas_set_custom_eval_rubric_overrides

Free Sync

Set rubric overrides to customize AI-inferred rubric (adjust weights, rename dimensions).

ParameterTypeDescription
model_id number required Model ID
overrides object required Override configs keyed by dimension name

atlas_clear_custom_eval_rubric_overrides

Free Sync

Clear all rubric overrides, reverting to AI-inferred rubric.

ParameterTypeDescription
model_id number required Model ID

Atlas — Chat 2

Conversational AI for workforce intelligence and hiring strategy.

atlas_chat

SSE

Full-featured Atlas AI assistant with live tool use (salary benchmarks, talent supply/demand, competitor intel). May take 2-3 min for complex queries.

ParameterTypeDescription
message string required User message
conversation_id number optional Continue existing thread (omit to start new)
context_id number optional Hiring context for context-aware responses

atlas_advisor_chat

SSE

Lightweight hiring advice — faster and cheaper than atlas_chat, no tool use.

ParameterTypeDescription
message string required User message
conversation_id number optional Continue existing thread (omit to start new)

Atlas — Utilities 4

Real-time matching, ranking, and interview question generation.

atlas_start_fit_match

Async

Start async fit match for a single candidate against a JD. Returns task_id and analysis_id.

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID
jd_text string required JD text to match against

atlas_fit_match_enhanced

Sync

Enhanced FIT match with knowledge base augmentation for deeper analysis and market context.

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID
jd_text string required JD text to match against

atlas_start_fit_rank

Async

Start async fit rank for multiple candidates against a JD. Returns task_id and analysis_id.

ParameterTypeDescription
context_id number required Context ID
candidate_ids number[] required Candidate IDs (min 2)
jd_text string required JD text to rank against

atlas_generate_interview

SSE

Generate interview questions with suggested answers and scoring rubrics, tailored to a candidate's profile. SSE-buffered (30-60s).

ParameterTypeDescription
context_id number required Context ID
candidate_id number required Candidate ID
jd_text string optional Optional JD text for role-targeted questions
pressure_level enum: supportive | standard | aggressive optional Pressure level (default: standard)
num_questions number (1-15) optional Number of questions (default: 5)

CeeVee — CRUD 5

CV upload, version management, and positioning session retrieval. All free.

ceevee_upload_cv

Free Sync

Upload a CV file (PDF/DOCX). Parses the document and creates a CV version with structured sections.

ParameterTypeDescription
file string (base64) required CV file as base64 encoded string
filename string optional Original filename for content-type detection

ceevee_list_versions

Free Sync

List all CV versions for the authenticated user.

ParameterTypeDescription
No parameters

ceevee_get_version

Free Sync

Get detailed CV version including structured content, sections, word count, and audience profile.

ParameterTypeDescription
cv_version_id number required CV version ID

ceevee_list_positioning_sessions

Free Sync

List all positioning sessions (market analysis through lens selection to targeted edits).

ParameterTypeDescription
No parameters

ceevee_get_positioning_session

Free Sync

Get full positioning session detail including analysis, lens, opportunities, targeted edits, and PDF URLs.

ParameterTypeDescription
session_id number required Session ID

CeeVee — Analysis 4

Market positioning pipeline and CV optimization tools.

ceevee_analyze_positioning

Sync

Step 1/3 — Run market positioning analysis. Returns snapshot, detected lens, recruiter inference, and session_id.

ParameterTypeDescription
cv_version_id number required CV version ID
session_id number optional Resume existing session

ceevee_get_opportunities

Sync

Step 2/3 — Get career pivot opportunities based on a selected narrative lens.

ParameterTypeDescription
cv_version_id number required CV version ID
lens string required Narrative lens from step 1 (e.g. 'Technical Leader')
session_id number optional Session ID from step 1

ceevee_confirm_lens

Sync

Step 3/3 — Confirm lens and generate targeted CV edits with trade-offs and optional PDF output.

ParameterTypeDescription
cv_version_id number required CV version ID
confirmed_lens string required Confirmed narrative lens
custom_positioning string optional Custom positioning description
session_id number optional Session ID from step 1
positioning_snapshot object optional Snapshot from step 1
detected_lens_full object optional Lens data from step 1
recruiter_inference object optional Recruiter inference from step 1
selected_opportunities object[] optional Opportunities from step 2

ceevee_full_review

Sync

Autonomous full CV review in one call: positioning + lens + edits + optional opportunities. Alternative to the 3-step pipeline.

ParameterTypeDescription
cv_version_id number required CV version ID
requested_lens string optional Specific lens (null = auto-infer)
jd_text string optional Optional JD for targeted optimization
include_opportunities boolean optional Include opportunity analysis (default: false)
session_id number optional Session ID

CeeVee — Chat 2

Conversational CV optimization assistant with edit explanations.

ceevee_chat

SSE

CV optimization guidance with context-aware conversations linked to a CV version.

ParameterTypeDescription
message string required User message
cv_version_id number required CV version ID from ceevee_upload_cv or ceevee_list_versions
conversation_id number optional Continue existing thread (omit to start new)

ceevee_explain_change

Sync

Detailed explanation of a specific edit from a positioning review.

ParameterTypeDescription
cv_version_id number required CV version ID
change_id string required Edit ID from ceevee_confirm_lens or ceevee_full_review output