Connect
One URL, Streamable HTTP, no sessions to manage. Public tools work with nothing else. For tools that act as you, create a key in Settings → AI agents and send it as a bearer token.
https://www.pairskill.com/api/mcpclaude mcp add --transport http pairskill https://www.pairskill.com/api/mcp --header "Authorization: Bearer psk_…"{
"mcpServers": {
"pairskill": {
"url": "https://www.pairskill.com/api/mcp",
"headers": {
"Authorization": "Bearer psk_…"
}
}
}
}npx -y mcp-remote https://www.pairskill.com/api/mcp --header "Authorization: Bearer psk_…"Without a key
Everything a visitor can see on the site: open roles, the skill taxonomy, public profiles, demand per country, and the score formula as the resource pairskill://matching-formula.
| Tool | Who | What it does |
|---|---|---|
search_skills | Anyone | Find skills in the PairSkill taxonomy by any name or synonym in the launch languages. |
suggested_skills | Anyone | The usual skills for a field (category), most essential first. |
get_profile | Anyone | A public talent profile by its slug (named profiles only; anonymous ones are never returned). |
match_skill_names | Anyone | Match skill names (as written on LinkedIn or a CV) to PairSkill skills. Returns the matched skills and the names it could not place. |
get_role | Anyone | One role with its skills, levels, pay range, practicalities and company. Open roles are public. |
search_roles | Anyone | Search open roles by text, country (remote roles always included), field, work mode or skills. |
preview_pool | Anyone | How many published profiles meet a set of must-have skills, country and languages: the live pool counter. |
get_passport | Anyone | A shared skill passport by its key: a named slug or an anonymous token. Levels, assessed skills with dates, ESCO URIs. |
skill_demand | Anyone | Open roles and available candidates per skill and country (EU), refreshed nightly. Counts under 10 are bucketed. Filter by country (ISO code) and optionally a skill slug. |
search_skills- Who
- Anyone
- What it does
- Find skills in the PairSkill taxonomy by any name or synonym in the launch languages.
suggested_skills- Who
- Anyone
- What it does
- The usual skills for a field (category), most essential first.
get_profile- Who
- Anyone
- What it does
- A public talent profile by its slug (named profiles only; anonymous ones are never returned).
match_skill_names- Who
- Anyone
- What it does
- Match skill names (as written on LinkedIn or a CV) to PairSkill skills. Returns the matched skills and the names it could not place.
get_role- Who
- Anyone
- What it does
- One role with its skills, levels, pay range, practicalities and company. Open roles are public.
search_roles- Who
- Anyone
- What it does
- Search open roles by text, country (remote roles always included), field, work mode or skills.
preview_pool- Who
- Anyone
- What it does
- How many published profiles meet a set of must-have skills, country and languages: the live pool counter.
get_passport- Who
- Anyone
- What it does
- A shared skill passport by its key: a named slug or an anonymous token. Levels, assessed skills with dates, ESCO URIs.
skill_demand- Who
- Anyone
- What it does
- Open roles and available candidates per skill and country (EU), refreshed nightly. Counts under 10 are bucketed. Filter by country (ISO code) and optionally a skill slug.
Acting as you
A key gives an agent exactly your rights, nothing more: the same row-level security, plan limits and anonymity rules as the app. An employer agent sees anonymous candidates as "Candidate XXXX" until they accept; a talent agent decides what to share by accepting or declining.
| Tool | Who | What it does |
|---|---|---|
my_skills | Any key | The signed-in talent’s skills with level, years, whether it is assessed and when a re-check is due. |
set_my_skill | Any key | Add a skill to the signed-in talent’s profile or change its level and years. A changed level is self-rated until checked again. |
remove_my_skill | Any key | Remove a skill from the signed-in talent’s profile. |
my_profile | Any key | The signed-in talent’s profile, including the private pay floor. Null when there is none yet. |
update_my_profile | Any key | Change fields of the signed-in talent’s profile (tagline, bio, location, availability, work modes, languages, visibility, …). Only the given fields change. |
set_visibility | Any key | Anonymous (employers see “Candidate XXXX” until you accept an invitation) or public (name visible). |
set_pay_floor | Any key | Set or clear the private minimum pay. Employers never see it; it labels roles below it for you. |
set_profile_published | Any key | Pause or resume the profile: a paused profile is not matched or shown to anyone. |
complete_onboarding | Any key | Create or replace the signed-in talent’s whole profile in one call: field, skills with levels, industries, practicalities, visibility and the private pay floor. Publishes it for matching. |
my_company | Any key | The signed-in employer’s company, their role on the team (owner, member, viewer) and plan limits with usage. |
create_company | Any key | Create the employer’s company (the caller becomes its owner). Needed before posting roles. |
update_company | Any key | Change the company profile (owner only): name, country, size, industry, description, website, location. |
request_company_verification | Any key | Ask PairSkill to verify the company manually (when the VAT check is not available). |
team_members | Any key | People on the employer’s team and open team invites. |
invite_team_member | Any key | Invite a colleague by email as member (hires) or viewer (looks only). Returns the invite link; seats are limited by plan. |
remove_team_member | Any key | Remove a teammate or cancel an open team invite (owner only). |
my_roles | Any key | The employer’s roles (draft, open, closed) with their requirements. |
create_role | Any key | Create a role for the employer’s company. With publish=true it opens at once (a pay range is required by EU pay transparency, and the plan limits open roles). |
update_role | Any key | Replace a role’s details and requirements (the role keeps its status). |
set_role_status | Any key | Open, close or return a role to draft. Opening needs a pay range and a free open-role slot on the plan. |
role_templates | Any key | Saved role templates of the company (Growth plan). |
save_role_template | Any key | Save a role setup as a reusable template (Growth plan). |
role_candidates | Any key | Candidates for one of the employer’s roles, ranked by the published formula with the full breakdown. Anonymous candidates appear as “Candidate XXXX” until they accept an invitation. Records the ranking shown (AI Act log). |
my_matches | Any key | Open roles ranked for the signed-in talent, with score, breakdown and whether pay is below their private minimum. |
explain_fit | Any key | Why a candidate fits a role: per skill the candidate’s level against the required level and its effect, industries and practicalities. Talent: your own fit for any open role. Employer: a candidate in your role’s pool. |
set_role_interest | Any key | Mark an open role as interested (the employer sees it), saved (only you), passed, or clear the mark (null). |
my_interests | Any key | The signed-in talent’s interested, saved and passed roles. |
interested_candidates | Any key | Candidates who marked one of the employer’s roles as interesting (ids; read cards with role_candidates). |
search_talent | Any key | Find candidates by skill in any launch language (e.g. "react", "könyvelés"), optionally in or open to a country. Anonymous candidates appear as “Candidate XXXX”. |
my_pools | Any key | The company’s candidate pools (saved lists) with member counts. Growth plan. |
create_pool | Any key | Create a named candidate pool (Growth plan). |
add_to_pool | Any key | Add a candidate to a pool, optionally with a private note. Anonymous candidates stay anonymous. |
remove_from_pool | Any key | Remove a candidate from a pool. |
pool_members | Any key | Candidates in a pool as pseudonymous cards (name only once revealed), with notes. |
invite_candidate | Any key | Invite a candidate to one of the employer’s open roles with a short message. The candidate stays anonymous until they accept; the ranking you acted on is recorded. Needs the DPA and a free invitation on the plan. |
my_invitations | Any key | Invitations the signed-in talent received: role, company, message, status and their score for the role. |
company_invitations | Any key | Every invitation the employer’s company sent, across roles, with status and the candidate (alias until accepted). |
respond_invitation | Any key | Accept (opens a conversation and shows the employer your name) or decline an invitation, optionally with a reason (skills, interview, salary, other). |
withdraw_invitation | Any key | Withdraw a pending invitation with the reason (recorded in the decision log). |
conversations | Any key | The signed-in person’s conversations (opened by accepted invitations) with the last message and unread count. |
get_conversation | Any key | One conversation with its messages (oldest first). Marks the other side’s messages as read. |
send_message | Any key | Send a message in an open conversation. With attachments on, up to five files uploaded first with attachment_upload_url. |
close_conversation | Any key | End a conversation: no new messages; the history stays readable for both sides. |
propose_hire | Any key | Propose hiring the candidate of an accepted conversation, with the main reason for the decision (decision log). The candidate confirms or declines. |
respond_hire | Any key | Confirm or decline a hire proposal (candidate). |
rate_hire | Any key | Rate a confirmed hire from 1 to 5 (each side rates once; used to check the formula, never shown publicly). |
my_hires | Any key | Hires the signed-in person is part of (proposed, confirmed, declined). |
my_notifications | Any key | The signed-in person’s latest updates (invitations, replies, messages, hires) with read state. |
mark_notifications_read | Any key | Mark updates as read: the given ids, or all. |
inbox | Any key | What waits on the signed-in person: pending invitations and hire proposals (needs you), unread messages, unread updates. |
skill_check_status | Any key | For each of the signed-in talent’s skills: assessed date, re-check due, cooldown end and whether a check exists. |
my_passport | Any key | The signed-in talent’s passport mode (off, named, anonymous) and its two links. |
set_passport_mode | Any key | Share the skill passport: off, named (with your name, at your slug) or anonymous (a token link, no name). |
whoami | Any key | Who the key or session acts as: name, email, default workspace, language, whether a talent profile exists and the company with the role in it. |
update_account_settings | Any key | Change your display name, language, theme (system, light, dark) or the product-news choice. |
export_my_data | Any key | A download link for everything PairSkill holds about you (one JSON file). The link works only in your signed-in browser; give it to the person. |
billing_status | Any key | The company plan, its limits and usage, open roles with role-pass and boost end dates, and recent purchases. |
start_checkout | Any key | Start a Stripe Checkout: a role pass (60 days of unlimited invitations for one role), a boost (7 days promoted) or the Growth plan. Returns a payment URL for a person to open; money is never moved without them. |
fairness_stats | Any key | Fairness numbers for one of your roles from its latest ranking snapshot: how many candidates each must-have excludes, the score distribution, how many sit just under the cut, and the assessed share of the shortlist. |
decision_log | Any key | Every decision on one of your roles, newest first: invitations, responses and hires with the reason recorded, the ranking snapshot it relied on, and whether a person or an agent acted. Candidates appear by id. |
compliance_pack | Any key | Links to the AI Act compliance pack for one of your roles: a printable record (system summary, oversight, fairness, decisions, snapshots) and CSV files. Growth and Scale plans. |
my_api_keys | Any key | Your active agent keys: name, prefix, whether they may make changes, last use. Never the key itself. |
my_skills- Who
- Any key
- What it does
- The signed-in talent’s skills with level, years, whether it is assessed and when a re-check is due.
set_my_skill- Who
- Any key
- What it does
- Add a skill to the signed-in talent’s profile or change its level and years. A changed level is self-rated until checked again.
remove_my_skill- Who
- Any key
- What it does
- Remove a skill from the signed-in talent’s profile.
my_profile- Who
- Any key
- What it does
- The signed-in talent’s profile, including the private pay floor. Null when there is none yet.
update_my_profile- Who
- Any key
- What it does
- Change fields of the signed-in talent’s profile (tagline, bio, location, availability, work modes, languages, visibility, …). Only the given fields change.
set_visibility- Who
- Any key
- What it does
- Anonymous (employers see “Candidate XXXX” until you accept an invitation) or public (name visible).
set_pay_floor- Who
- Any key
- What it does
- Set or clear the private minimum pay. Employers never see it; it labels roles below it for you.
set_profile_published- Who
- Any key
- What it does
- Pause or resume the profile: a paused profile is not matched or shown to anyone.
complete_onboarding- Who
- Any key
- What it does
- Create or replace the signed-in talent’s whole profile in one call: field, skills with levels, industries, practicalities, visibility and the private pay floor. Publishes it for matching.
my_company- Who
- Any key
- What it does
- The signed-in employer’s company, their role on the team (owner, member, viewer) and plan limits with usage.
create_company- Who
- Any key
- What it does
- Create the employer’s company (the caller becomes its owner). Needed before posting roles.
update_company- Who
- Any key
- What it does
- Change the company profile (owner only): name, country, size, industry, description, website, location.
request_company_verification- Who
- Any key
- What it does
- Ask PairSkill to verify the company manually (when the VAT check is not available).
team_members- Who
- Any key
- What it does
- People on the employer’s team and open team invites.
invite_team_member- Who
- Any key
- What it does
- Invite a colleague by email as member (hires) or viewer (looks only). Returns the invite link; seats are limited by plan.
remove_team_member- Who
- Any key
- What it does
- Remove a teammate or cancel an open team invite (owner only).
my_roles- Who
- Any key
- What it does
- The employer’s roles (draft, open, closed) with their requirements.
create_role- Who
- Any key
- What it does
- Create a role for the employer’s company. With publish=true it opens at once (a pay range is required by EU pay transparency, and the plan limits open roles).
update_role- Who
- Any key
- What it does
- Replace a role’s details and requirements (the role keeps its status).
set_role_status- Who
- Any key
- What it does
- Open, close or return a role to draft. Opening needs a pay range and a free open-role slot on the plan.
role_templates- Who
- Any key
- What it does
- Saved role templates of the company (Growth plan).
save_role_template- Who
- Any key
- What it does
- Save a role setup as a reusable template (Growth plan).
role_candidates- Who
- Any key
- What it does
- Candidates for one of the employer’s roles, ranked by the published formula with the full breakdown. Anonymous candidates appear as “Candidate XXXX” until they accept an invitation. Records the ranking shown (AI Act log).
my_matches- Who
- Any key
- What it does
- Open roles ranked for the signed-in talent, with score, breakdown and whether pay is below their private minimum.
explain_fit- Who
- Any key
- What it does
- Why a candidate fits a role: per skill the candidate’s level against the required level and its effect, industries and practicalities. Talent: your own fit for any open role. Employer: a candidate in your role’s pool.
set_role_interest- Who
- Any key
- What it does
- Mark an open role as interested (the employer sees it), saved (only you), passed, or clear the mark (null).
my_interests- Who
- Any key
- What it does
- The signed-in talent’s interested, saved and passed roles.
interested_candidates- Who
- Any key
- What it does
- Candidates who marked one of the employer’s roles as interesting (ids; read cards with role_candidates).
search_talent- Who
- Any key
- What it does
- Find candidates by skill in any launch language (e.g. "react", "könyvelés"), optionally in or open to a country. Anonymous candidates appear as “Candidate XXXX”.
my_pools- Who
- Any key
- What it does
- The company’s candidate pools (saved lists) with member counts. Growth plan.
create_pool- Who
- Any key
- What it does
- Create a named candidate pool (Growth plan).
add_to_pool- Who
- Any key
- What it does
- Add a candidate to a pool, optionally with a private note. Anonymous candidates stay anonymous.
remove_from_pool- Who
- Any key
- What it does
- Remove a candidate from a pool.
pool_members- Who
- Any key
- What it does
- Candidates in a pool as pseudonymous cards (name only once revealed), with notes.
invite_candidate- Who
- Any key
- What it does
- Invite a candidate to one of the employer’s open roles with a short message. The candidate stays anonymous until they accept; the ranking you acted on is recorded. Needs the DPA and a free invitation on the plan.
my_invitations- Who
- Any key
- What it does
- Invitations the signed-in talent received: role, company, message, status and their score for the role.
company_invitations- Who
- Any key
- What it does
- Every invitation the employer’s company sent, across roles, with status and the candidate (alias until accepted).
respond_invitation- Who
- Any key
- What it does
- Accept (opens a conversation and shows the employer your name) or decline an invitation, optionally with a reason (skills, interview, salary, other).
withdraw_invitation- Who
- Any key
- What it does
- Withdraw a pending invitation with the reason (recorded in the decision log).
conversations- Who
- Any key
- What it does
- The signed-in person’s conversations (opened by accepted invitations) with the last message and unread count.
get_conversation- Who
- Any key
- What it does
- One conversation with its messages (oldest first). Marks the other side’s messages as read.
send_message- Who
- Any key
- What it does
- Send a message in an open conversation. With attachments on, up to five files uploaded first with attachment_upload_url.
close_conversation- Who
- Any key
- What it does
- End a conversation: no new messages; the history stays readable for both sides.
propose_hire- Who
- Any key
- What it does
- Propose hiring the candidate of an accepted conversation, with the main reason for the decision (decision log). The candidate confirms or declines.
respond_hire- Who
- Any key
- What it does
- Confirm or decline a hire proposal (candidate).
rate_hire- Who
- Any key
- What it does
- Rate a confirmed hire from 1 to 5 (each side rates once; used to check the formula, never shown publicly).
my_hires- Who
- Any key
- What it does
- Hires the signed-in person is part of (proposed, confirmed, declined).
my_notifications- Who
- Any key
- What it does
- The signed-in person’s latest updates (invitations, replies, messages, hires) with read state.
mark_notifications_read- Who
- Any key
- What it does
- Mark updates as read: the given ids, or all.
inbox- Who
- Any key
- What it does
- What waits on the signed-in person: pending invitations and hire proposals (needs you), unread messages, unread updates.
skill_check_status- Who
- Any key
- What it does
- For each of the signed-in talent’s skills: assessed date, re-check due, cooldown end and whether a check exists.
my_passport- Who
- Any key
- What it does
- The signed-in talent’s passport mode (off, named, anonymous) and its two links.
set_passport_mode- Who
- Any key
- What it does
- Share the skill passport: off, named (with your name, at your slug) or anonymous (a token link, no name).
whoami- Who
- Any key
- What it does
- Who the key or session acts as: name, email, default workspace, language, whether a talent profile exists and the company with the role in it.
update_account_settings- Who
- Any key
- What it does
- Change your display name, language, theme (system, light, dark) or the product-news choice.
export_my_data- Who
- Any key
- What it does
- A download link for everything PairSkill holds about you (one JSON file). The link works only in your signed-in browser; give it to the person.
billing_status- Who
- Any key
- What it does
- The company plan, its limits and usage, open roles with role-pass and boost end dates, and recent purchases.
start_checkout- Who
- Any key
- What it does
- Start a Stripe Checkout: a role pass (60 days of unlimited invitations for one role), a boost (7 days promoted) or the Growth plan. Returns a payment URL for a person to open; money is never moved without them.
fairness_stats- Who
- Any key
- What it does
- Fairness numbers for one of your roles from its latest ranking snapshot: how many candidates each must-have excludes, the score distribution, how many sit just under the cut, and the assessed share of the shortlist.
decision_log- Who
- Any key
- What it does
- Every decision on one of your roles, newest first: invitations, responses and hires with the reason recorded, the ranking snapshot it relied on, and whether a person or an agent acted. Candidates appear by id.
compliance_pack- Who
- Any key
- What it does
- Links to the AI Act compliance pack for one of your roles: a printable record (system summary, oversight, fairness, decisions, snapshots) and CSV files. Growth and Scale plans.
my_api_keys- Who
- Any key
- What it does
- Your active agent keys: name, prefix, whether they may make changes, last use. Never the key itself.
Keys
Keys are shown once and stored only as a hash. Revoke one in Settings and it stops working at once. Up to 10 active keys per account. Agents using a key appear in your data export.
Scores and decisions
Agents get the same breakdown people see: skill by skill, industry years, practicalities. Scores order candidates; they never reject anyone. Whether to invite, accept or hire stays a human decision, and every decision records a reason.
Limits and support
Invitations and open roles count against your plan exactly as in the app. Requests are rate limited per account. Questions or a tool you miss: hello@pairskill.com.