LeaderboardBack to leaderboard — loading return destination
Opening report…
Loading report overview
M
MCP server
server.example.com/mcp
Tools and resources for your MCP client, with a public quality report and detailed checks.
Protocol
MCP 2025-11-25
Server version
1.0.0
Website
server.example.com
Supports
Tools · Resources
Overall score
90 /100
How is this score calculated?
Server metadata
Loading server metadata
Reviewed90/100
Discoverability
Loading discoverability
Reviewed90/100
Protocol
Loading protocol
Reviewed90/100
Tools
Loading tools
Reviewed90/100
MCP Apps
Loading mcp apps
Reviewed90/100
Tool documentation quality
Loading tool documentation quality
Reviewed90/100
LeaderboardBack to leaderboard — loading return destination
G
GetHired
gethired.devhub.co.in/api/mcp
GetHired's job platform for AI agents. For job seekers: search jobs and get personalised matches, read and submit application forms, track applications, create, edit, tailor and download resumes, and set up mock interviews. For hiring teams: post jobs, find and review candidates, run the pipeline and screening interviews, and manage the team, within their role's permissions.
GetHired's job platform for AI agents. For job seekers: search jobs and get personalised matches, read and submit application forms, track applications, create, edit, tailor and download resumes, and set up mock interviews. For hiring teams: post jobs, find and review candidates, run the pipeline and screening interviews, and manage the team, within their role's permissions.
GetHired helps job seekers search jobs, apply, and manage their resumes, reviews and mock interviews. Links in results open https://gethired.devhub.co.in. These tools are for applicant accounts; company accounts use the web app.
Discoverability
0/6 passed0 of 6 passed0/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
No matching mcp.json manifest or MCP Server Card was found at the checked URLs.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Search GetHired's job listings with structured filters. Free. Returns compact jobs with ids; use nextCursor to page.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
keywords
Words to look for in the job title. Add the common spellings of the same role, e.g. ['frontend', 'front-end', 'front end']. Put seniority (junior, senior, lead, fresher) in minExperience/maxExperience, not here.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
locations
Where the user wants to work, e.g. ['Remote', 'Bengaluru']. Different spellings of a city, such as Bangalore and Bengaluru, find the same jobs.
Clear enough to supply this argument.
jobTypes
Only these kinds of employment: full-time, contract or internship.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
minSalary
The lowest salary the user would accept, as a plain whole number without a currency symbol or separators, e.g. 1500000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
minExperience
The bottom of the user's experience range, in years. A job matches when the experience it asks for overlaps the user's range. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5.
Clear enough to supply this argument.
maxExperience
The top of the user's experience range, in years: only jobs asking for at most this much. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
visaRequirements
Only jobs whose posting states one of these visa terms. 'Will Sponsor' is for users who need the employer to sponsor a visa.
Clear enough to supply this argument.
platforms
Only jobs found on these applicant tracking systems or job boards. gethired is jobs posted on GetHired itself, which can be applied to with submit_application.
Clear enough to supply this argument.
companies
Only jobs at these companies, by company name, e.g. ['Stripe', 'Razorpay'].
Clear enough to supply this argument.
postedWithinDays
Only jobs posted in the last this many days, e.g. 7 for the past week.
Explain what happens when this optional value is omitted.
cursor
For the next page: the nextCursor from the previous search_jobs result, sent with the same filters. Leave out for the first page.
{
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "search_jobs",
"title": "Search jobs",
"description": "Search GetHired's job listings with structured filters. Free. Returns compact jobs with ids; use nextCursor to page.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many to return in this call. Defaults to 10."
},
"cursor": {
"type": "string",
"description": "For the next page: the nextCursor from the previous search_jobs result, sent with the same filters. Leave out for the first page."
},
"jobTypes": {
"type": "array",
"items": {
"enum": [
"Fulltime",
"Contract",
"Intern"
],
"type": "string"
},
"description": "Only these kinds of employment: full-time, contract or internship."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"description": "Words to look for in the job title. Add the common spellings of the same role, e.g. ['frontend', 'front-end', 'front end']. Put seniority (junior, senior, lead, fresher) in minExperience/maxExperience, not here."
},
"companies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 10,
"description": "Only jobs at these companies, by company name, e.g. ['Stripe', 'Razorpay']."
},
"locations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"description": "Where the user wants to work, e.g. ['Remote', 'Bengaluru']. Different spellings of a city, such as Bangalore and Bengaluru, find the same jobs."
},
"minSalary": {
"type": "integer",
"minimum": 0,
"description": "The lowest salary the user would accept, as a plain whole number without a currency symbol or separators, e.g. 1500000."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"greenhouse",
"jazzhr",
"ashby",
"rippling",
"workable",
"recruitee",
"personio",
"bamboohr",
"jobvite",
"workday",
"keka",
"gethired"
],
"type": "string"
},
"description": "Only jobs found on these applicant tracking systems or job boards. gethired is jobs posted on GetHired itself, which can be applied to with submit_application."
},
"maxExperience": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "The top of the user's experience range, in years: only jobs asking for at most this much. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5."
},
"minExperience": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "The bottom of the user's experience range, in years. A job matches when the experience it asks for overlaps the user's range. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5."
},
"postedWithinDays": {
"type": "integer",
"maximum": 90,
"minimum": 1,
"description": "Only jobs posted in the last this many days, e.g. 7 for the past week."
},
"visaRequirements": {
"type": "array",
"items": {
"enum": [
"Will Sponsor",
"Not Required",
"Required"
],
"type": "string"
},
"description": "Only jobs whose posting states one of these visa terms. 'Will Sponsor' is for users who need the employer to sponsor a visa."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Search jobs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Turn a plain-English job request into filters with AI, then search. Costs 5 AI credits per call; prefer search_jobs when you can build the filters yourself.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
What the user is looking for, in their own words, e.g. 'remote React jobs at fintech startups paying over 20 LPA'.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many to return in this call. Defaults to 10.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"title": "Search jobs from a description",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
Output schema80/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor",
"filters"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"filters": {
"type": "object",
"description": "The filters the AI read from the query.",
"additionalProperties": {}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "natural_language_job_search",
"title": "Search jobs from a description",
"description": "Turn a plain-English job request into filters with AI, then search. Costs 5 AI credits per call; prefer search_jobs when you can build the filters yourself.",
"inputSchema": {
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many to return in this call. Defaults to 10."
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "What the user is looking for, in their own words, e.g. 'remote React jobs at fintech startups paying over 20 LPA'."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor",
"filters"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"filters": {
"type": "object",
"description": "The filters the AI read from the query.",
"additionalProperties": {}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Search jobs from a description",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Find jobs matched to the user's profile and primary resume, best matches first. Needs at least 5 AI credits but does not spend them.
The description explains the capability, when to use it, and what to expect.
Inputs84/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › keywords
Words to look for in the job title. Add the common spellings of the same role, e.g. ['frontend', 'front-end', 'front end']. Put seniority (junior, senior, lead, fresher) in minExperience/maxExperience, not here.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › locations
Where the user wants to work, e.g. ['Remote', 'Bengaluru']. Different spellings of a city, such as Bangalore and Bengaluru, find the same jobs.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › jobTypes
Only these kinds of employment: full-time, contract or internship.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › minSalary
The lowest salary the user would accept, as a plain whole number without a currency symbol or separators, e.g. 1500000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › minExperience
The bottom of the user's experience range, in years. A job matches when the experience it asks for overlaps the user's range. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › maxExperience
The top of the user's experience range, in years: only jobs asking for at most this much. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › visaRequirements
Only jobs whose posting states one of these visa terms. 'Will Sponsor' is for users who need the employer to sponsor a visa.
Clear enough to supply this argument.
filters › platforms
Only jobs found on these applicant tracking systems or job boards. gethired is jobs posted on GetHired itself, which can be applied to with submit_application.
Clear enough to supply this argument.
filters › companies
Only jobs at these companies, by company name, e.g. ['Stripe', 'Razorpay'].
Clear enough to supply this argument.
filters › postedWithinDays
Only jobs posted in the last this many days, e.g. 7 for the past week.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "get_relevant_jobs",
"title": "Jobs matched to me",
"description": "Find jobs matched to the user's profile and primary resume, best matches first. Needs at least 5 AI credits but does not spend them.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many to return in this call. Defaults to 10."
},
"filters": {
"type": "object",
"properties": {
"jobTypes": {
"type": "array",
"items": {
"enum": [
"Fulltime",
"Contract",
"Intern"
],
"type": "string"
},
"description": "Only these kinds of employment: full-time, contract or internship."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"description": "Words to look for in the job title. Add the common spellings of the same role, e.g. ['frontend', 'front-end', 'front end']. Put seniority (junior, senior, lead, fresher) in minExperience/maxExperience, not here."
},
"companies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 10,
"description": "Only jobs at these companies, by company name, e.g. ['Stripe', 'Razorpay']."
},
"locations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"description": "Where the user wants to work, e.g. ['Remote', 'Bengaluru']. Different spellings of a city, such as Bangalore and Bengaluru, find the same jobs."
},
"minSalary": {
"type": "integer",
"minimum": 0,
"description": "The lowest salary the user would accept, as a plain whole number without a currency symbol or separators, e.g. 1500000."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"greenhouse",
"jazzhr",
"ashby",
"rippling",
"workable",
"recruitee",
"personio",
"bamboohr",
"jobvite",
"workday",
"keka",
"gethired"
],
"type": "string"
},
"description": "Only jobs found on these applicant tracking systems or job boards. gethired is jobs posted on GetHired itself, which can be applied to with submit_application."
},
"maxExperience": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "The top of the user's experience range, in years: only jobs asking for at most this much. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5."
},
"minExperience": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "The bottom of the user's experience range, in years. A job matches when the experience it asks for overlaps the user's range. Seniority maps to this range: fresher or entry level is maxExperience 1, junior is maxExperience 2, mid level is minExperience 2 with maxExperience 5, senior is minExperience 5."
},
"postedWithinDays": {
"type": "integer",
"maximum": 90,
"minimum": 1,
"description": "Only jobs posted in the last this many days, e.g. 7 for the past week."
},
"visaRequirements": {
"type": "array",
"items": {
"enum": [
"Will Sponsor",
"Not Required",
"Required"
],
"type": "string"
},
"description": "Only jobs whose posting states one of these visa terms. 'Will Sponsor' is for users who need the employer to sponsor a visa."
}
},
"description": "Narrows the user's matches. Leave out to get their best matches overall.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Jobs matched to me",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Find jobs similar to a given job, most similar first. Returns compact jobs (id, title, company, locations, salary, job type, experience, posted date and link) with totalCount. May spend 5 AI credits to re-rank the results with AI when the user has enough credits.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobId
The job to find similar jobs to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list.
Clear enough to supply this argument.
limit
How many to return in this call. Defaults to 10.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "get_similar_jobs",
"title": "Similar jobs",
"description": "Find jobs similar to a given job, most similar first. Returns compact jobs (id, title, company, locations, salary, job type, experience, posted date and link) with totalCount. May spend 5 AI credits to re-rank the results with AI when the user has enough credits.",
"inputSchema": {
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "The job to find similar jobs to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many to return in this call. Defaults to 10."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobs",
"totalCount",
"nextCursor"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass to search_jobs as cursor for the next page; null on the last page."
},
"totalCount": {
"type": [
"number",
"null"
],
"description": "How many jobs match in all, across pages."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Similar jobs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
List the jobs the user has saved (bookmarked) on GetHired, as compact jobs (id, title, company, locations, salary, job type, experience, posted date and link) with totalCount. Save or unsave a job with favorite_job.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many to return in this call. Defaults to 10.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "favorite_job",
"title": "Save or unsave a job",
"description": "Save (bookmark) a job for the user, or remove it from their saved jobs with action: unsave.",
"inputSchema": {
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "The job to save or unsave: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list."
},
"action": {
"enum": [
"save",
"unsave"
],
"type": "string",
"default": "save",
"description": "save bookmarks the job for the user; unsave removes it from their saved jobs."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobId",
"saved"
],
"properties": {
"jobId": {
"type": "string"
},
"saved": {
"type": "boolean",
"description": "Whether the job is saved now."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Save or unsave a job",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Track the status of the user's application to an external (non-GetHired) job, e.g. after they applied on the company site or heard back. Creates the application record if needed. Not allowed for jobs applied to through GetHired, whose status is set by the company.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
jobId
The external job the user applied to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list, or a jobId from list_applications.
Clear enough to supply this argument.
status
The status the user reports for their application, e.g. submitted once they applied on the company's site, or rejected after they heard back.
{
"name": "update_application_status",
"title": "Track an application",
"description": "Track the status of the user's application to an external (non-GetHired) job, e.g. after they applied on the company site or heard back. Creates the application record if needed. Not allowed for jobs applied to through GetHired, whose status is set by the company.",
"inputSchema": {
"type": "object",
"required": [
"jobId",
"status"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "The external job the user applied to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list, or a jobId from list_applications."
},
"status": {
"enum": [
"submitted",
"reviewed",
"selected",
"stand_by",
"rejected"
],
"type": "string",
"description": "The status the user reports for their application, e.g. submitted once they applied on the company's site, or rejected after they heard back."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobId",
"title",
"company",
"status",
"created"
],
"properties": {
"jobId": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"company": {
"type": [
"string",
"null"
]
},
"created": {
"type": "boolean",
"description": "true when this made a new application record."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Track an application",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read the application form of a job on GetHired (isPlatformJob), before applying with submit_application: each field's key, label, type, whether it's required and its options or limits, plus suggested answers from the user's profile and the resume that would be sent.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
jobId
The GetHired job (isPlatformJob true) to read the form of: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Apply to a job on GetHired for the user (Easy Apply) with their answers to its application form. Costs 1 AI credit. Read the form with get_application_form first. Only use answers the user gave or that come from their profile; ask them for anything else. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobId
The GetHired job to apply to: the same jobId you read the form of with get_application_form.
Clear enough to supply this argument.
resumeId
Which of the user's resumes to send: an id from get_resumes. Leave out to send their primary resume.
Clear enough to supply this argument.
answers › items › key
Which field this answers: its key from get_application_form's fields.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
answers › items › value
The answer as text: yes or no for yes_no, digits for number, YYYY-MM-DD for date, an http(s) link for url, one of the field's options for single_select, and the amount and a 3-letter currency code for salary, e.g. 1500000 INR.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
answers › items › choices
For multi_select fields, in place of value: the chosen options, each written as get_application_form lists it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Apply to a job",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
Output schema74/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"jobId": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"resume": {
"type": [
"string",
"null"
],
"description": "The name of the resume that was sent."
},
"applied": {
"type": "boolean"
},
"company": {
"type": [
"string",
"null"
]
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "submit_application",
"title": "Apply to a job",
"description": "Apply to a job on GetHired for the user (Easy Apply) with their answers to its application form. Costs 1 AI credit. Read the form with get_application_form first. Only use answers the user gave or that come from their profile; ask them for anything else. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"required": [
"jobId",
"answers"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "The GetHired job to apply to: the same jobId you read the form of with get_application_form."
},
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Which field this answers: its key from get_application_form's fields."
},
"value": {
"type": "string",
"maxLength": 5000,
"description": "The answer as text: yes or no for yes_no, digits for number, YYYY-MM-DD for date, an http(s) link for url, one of the field's options for single_select, and the amount and a 3-letter currency code for salary, e.g. 1500000 INR."
},
"choices": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 30,
"description": "For multi_select fields, in place of value: the chosen options, each written as get_application_form lists it."
}
},
"additionalProperties": false
},
"maxItems": 40,
"description": "The user's answers to the form, one entry per field. Leave out optional fields the user has nothing for."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "Which of the user's resumes to send: an id from get_resumes. Leave out to send their primary resume."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"jobId": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"resume": {
"type": [
"string",
"null"
],
"description": "The name of the resume that was sent."
},
"applied": {
"type": "boolean"
},
"company": {
"type": [
"string",
"null"
]
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Apply to a job",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Update the user's job preferences on their profile (roles, locations, salary, job types, visa, skills, work style). Personalised matches are refreshed afterwards. Send only the fields that change. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
desiredRoles
Job titles the user is looking for, e.g. ['Frontend Engineer', 'UI Developer']. Replaces the saved list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
preferredLocations
Where the user wants to work, e.g. ['Remote', 'Bengaluru']. City names are saved in their standard spelling. Replaces the saved list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
minSalary
The bottom of the user's yearly salary range, as a plain whole number in salaryCurrency.
Clear enough to supply this argument.
maxSalary
The top of the user's yearly salary range, as a plain whole number in salaryCurrency.
Clear enough to supply this argument.
salaryCurrency
The currency of minSalary and maxSalary: ₹ rupees, $ US dollars, € euros, £ pounds, C$ Canadian dollars, A$ Australian dollars.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobTypes
The kinds of employment the user wants: full-time, contract or internship. Replaces the saved list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
visaSponsorshipRequired
true when the user needs an employer to sponsor their visa or work permit.
Clear enough to supply this argument.
topSkills
The user's main skills, e.g. ['React', 'TypeScript', 'Figma']. Replaces the saved list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
workStylePreferences
How the user likes to work, e.g. Remote, Hybrid, On-site, Startup Environment, Fast-paced. Replaces the saved list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
{
"type": "object",
"properties": {
"matches": {
"type": "string",
"description": "What happens to the user's job matches now."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"updated": {
"type": "array",
"items": {
"type": "string"
},
"description": "The preferences that were changed."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string"
},
"description": "The locations as saved, when they were changed."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "update_my_preferences",
"title": "Update job preferences",
"description": "Update the user's job preferences on their profile (roles, locations, salary, job types, visa, skills, work style). Personalised matches are refreshed afterwards. Send only the fields that change. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"properties": {
"jobTypes": {
"type": "array",
"items": {
"enum": [
"Fulltime",
"Contract",
"Intern"
],
"type": "string"
},
"minItems": 1,
"description": "The kinds of employment the user wants: full-time, contract or internship. Replaces the saved list."
},
"maxSalary": {
"type": "integer",
"minimum": 0,
"description": "The top of the user's yearly salary range, as a plain whole number in salaryCurrency."
},
"minSalary": {
"type": "integer",
"minimum": 0,
"description": "The bottom of the user's yearly salary range, as a plain whole number in salaryCurrency."
},
"topSkills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 30,
"minItems": 1,
"description": "The user's main skills, e.g. ['React', 'TypeScript', 'Figma']. Replaces the saved list."
},
"desiredRoles": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Job titles the user is looking for, e.g. ['Frontend Engineer', 'UI Developer']. Replaces the saved list."
},
"salaryCurrency": {
"enum": [
"₹",
"$",
"€",
"£",
"C$",
"A$"
],
"type": "string",
"description": "The currency of minSalary and maxSalary: ₹ rupees, $ US dollars, € euros, £ pounds, C$ Canadian dollars, A$ Australian dollars."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Where the user wants to work, e.g. ['Remote', 'Bengaluru']. City names are saved in their standard spelling. Replaces the saved list."
},
"workStylePreferences": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "How the user likes to work, e.g. Remote, Hybrid, On-site, Startup Environment, Fast-paced. Replaces the saved list."
},
"visaSponsorshipRequired": {
"type": "boolean",
"description": "true when the user needs an employer to sponsor their visa or work permit."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"matches": {
"type": "string",
"description": "What happens to the user's job matches now."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"updated": {
"type": "array",
"items": {
"type": "string"
},
"description": "The preferences that were changed."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string"
},
"description": "The locations as saved, when they were changed."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Update job preferences",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Finish the user's GetHired onboarding with their profile and resume, the same as the /get-started form. Only for users whose profile (get_my_profile) shows onboarding isn't complete; gather the required fields first. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
fullName
The user's full name, as it should appear on their profile.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
desiredRoles
Job titles the user is looking for, e.g. ['Frontend Engineer', 'UI Developer'].
Clear enough to supply this argument.
jobTypes
The kinds of employment the user wants: full-time, contract or internship.
Clear enough to supply this argument.
salaryCurrency
The currency of minSalary and maxSalary: ₹ rupees, $ US dollars, € euros, £ pounds, C$ Canadian dollars, A$ Australian dollars.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
minSalary
The bottom of the user's yearly salary range, as a plain whole number in salaryCurrency.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
maxSalary
The top of the user's yearly salary range, as a plain whole number in salaryCurrency.
Clear enough to supply this argument.
preferredLocations
Where the user wants to work, e.g. ['Remote', 'Bengaluru']. City names are saved in their standard spelling.
Clear enough to supply this argument.
experienceYears
The user's total work experience in whole years, rounded to the nearest year: 6 months counts as 1, 2 months as 0.
Clear enough to supply this argument.
topSkills
The user's main skills, e.g. ['React', 'TypeScript', 'Figma'].
Clear enough to supply this argument.
workStylePreferences
How the user likes to work, e.g. Remote, Hybrid, On-site, Startup Environment, Fast-paced.
Clear enough to supply this argument.
companySizePreference
The size of company the user prefers to work at. Any when they have no preference.
Clear enough to supply this argument.
linkedinUrl
The full link to the user's LinkedIn profile.
Clear enough to supply this argument.
githubUrl
The full link to the user's GitHub profile.
Clear enough to supply this argument.
industryPreferences
Industries the user wants to work in, e.g. ['Fintech', 'Healthcare'].
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
careerGoalsShortTerm
What the user wants from their next role, in their own words.
Clear enough to supply this argument.
careerGoalsLongTerm
Where the user wants their career to go in the longer term, in their own words.
Clear enough to supply this argument.
visaSponsorshipRequired
true when the user needs an employer to sponsor their visa or work permit.
Clear enough to supply this argument.
resumeId
The resume to onboard with: an id from get_resumes. Leave out to use the primary resume. The user uploads resumes on GetHired's /resume page.
Clear enough to supply this argument.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
{
"type": "object",
"properties": {
"resume": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"onboarded": {
"type": "boolean"
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "complete_onboarding",
"title": "Finish onboarding",
"description": "Finish the user's GetHired onboarding with their profile and resume, the same as the /get-started form. Only for users whose profile (get_my_profile) shows onboarding isn't complete; gather the required fields first. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"required": [
"fullName",
"desiredRoles",
"jobTypes",
"salaryCurrency",
"minSalary",
"preferredLocations",
"experienceYears",
"topSkills",
"workStylePreferences",
"companySizePreference"
],
"properties": {
"fullName": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The user's full name, as it should appear on their profile."
},
"jobTypes": {
"type": "array",
"items": {
"enum": [
"Fulltime",
"Contract",
"Intern"
],
"type": "string"
},
"minItems": 1,
"description": "The kinds of employment the user wants: full-time, contract or internship."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to onboard with: an id from get_resumes. Leave out to use the primary resume. The user uploads resumes on GetHired's /resume page."
},
"githubUrl": {
"type": "string",
"format": "uri",
"description": "The full link to the user's GitHub profile."
},
"maxSalary": {
"type": "integer",
"minimum": 0,
"description": "The top of the user's yearly salary range, as a plain whole number in salaryCurrency."
},
"minSalary": {
"type": "integer",
"minimum": 0,
"description": "The bottom of the user's yearly salary range, as a plain whole number in salaryCurrency."
},
"topSkills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 30,
"minItems": 1,
"description": "The user's main skills, e.g. ['React', 'TypeScript', 'Figma']."
},
"linkedinUrl": {
"type": "string",
"format": "uri",
"description": "The full link to the user's LinkedIn profile."
},
"desiredRoles": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Job titles the user is looking for, e.g. ['Frontend Engineer', 'UI Developer']."
},
"salaryCurrency": {
"enum": [
"₹",
"$",
"€",
"£",
"C$",
"A$"
],
"type": "string",
"description": "The currency of minSalary and maxSalary: ₹ rupees, $ US dollars, € euros, £ pounds, C$ Canadian dollars, A$ Australian dollars."
},
"experienceYears": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "The user's total work experience in whole years, rounded to the nearest year: 6 months counts as 1, 2 months as 0."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Where the user wants to work, e.g. ['Remote', 'Bengaluru']. City names are saved in their standard spelling."
},
"careerGoalsLongTerm": {
"type": "string",
"maxLength": 500,
"description": "Where the user wants their career to go in the longer term, in their own words."
},
"industryPreferences": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Industries the user wants to work in, e.g. ['Fintech', 'Healthcare']."
},
"careerGoalsShortTerm": {
"type": "string",
"maxLength": 500,
"description": "What the user wants from their next role, in their own words."
},
"workStylePreferences": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "How the user likes to work, e.g. Remote, Hybrid, On-site, Startup Environment, Fast-paced."
},
"companySizePreference": {
"enum": [
"Small (1-50)",
"Medium (51-500)",
"Large (500+)",
"Any"
],
"type": "string",
"description": "The size of company the user prefers to work at. Any when they have no preference."
},
"visaSponsorshipRequired": {
"type": "boolean",
"description": "true when the user needs an employer to sponsor their visa or work permit."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"resume": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"onboarded": {
"type": "boolean"
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
},
"preferredLocations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true
},
"annotations": {
"title": "Finish onboarding",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Create a new resume for the user from what they told you in this chat: ask them about the role, the sections they want and the details of each first. Blank only when they ask for an empty one. Never add anything they didn't say. Free; the user must approve. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
A name for the user to tell their resumes apart by, e.g. 'Frontend Engineer 2026'.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sections › items › type
What the section holds. Use other, with a title, for a section that fits none of the rest.
Clear enough to supply this argument.
sections › items › title
The heading as the user wrote it. Required for type 'other'.
Clear enough to supply this argument.
sections › items › items › items › heading
A role, degree, project or skill group.
Clear enough to supply this argument.
sections › items › items › items › subheading
A company or school.
Clear enough to supply this argument.
sections › items › items › items › location
Where it was, e.g. 'Bengaluru, India' or 'Remote'.
Clear enough to supply this argument.
sections › items › items › items › startDate
As the user wrote it, e.g. 'Jan 2022'.
Clear enough to supply this argument.
sections › items › items › items › endDate
As the user wrote it, e.g. 'Present'.
Clear enough to supply this argument.
sections › items › items › items › url
A link for the entry, such as a project's site or repository.
Clear enough to supply this argument.
sections › items › items › items › bullets
The entry's bullet points, in order. An empty list when it has none.
Clear enough to supply this argument.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Where the user edits the new resume."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "create_resume",
"title": "Create a resume",
"description": "Create a new resume for the user from what they told you in this chat: ask them about the role, the sections they want and the details of each first. Blank only when they ask for an empty one. Never add anything they didn't say. Free; the user must approve. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "A name for the user to tell their resumes apart by, e.g. 'Frontend Engineer 2026'."
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"items"
],
"properties": {
"type": {
"enum": [
"summary",
"experience",
"projects",
"skills",
"education",
"achievements",
"certifications",
"languages",
"publications",
"volunteering",
"awards",
"other"
],
"type": "string",
"description": "What the section holds. Use other, with a title, for a section that fits none of the rest."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"bullets"
],
"properties": {
"url": {
"type": "string",
"description": "A link for the entry, such as a project's site or repository."
},
"bullets": {
"type": "array",
"items": {
"type": "string"
},
"description": "The entry's bullet points, in order. An empty list when it has none."
},
"endDate": {
"type": "string",
"description": "As the user wrote it, e.g. 'Present'."
},
"heading": {
"type": "string",
"description": "A role, degree, project or skill group."
},
"location": {
"type": "string",
"description": "Where it was, e.g. 'Bengaluru, India' or 'Remote'."
},
"startDate": {
"type": "string",
"description": "As the user wrote it, e.g. 'Jan 2022'."
},
"subheading": {
"type": "string",
"description": "A company or school."
}
},
"additionalProperties": false
},
"description": "The section's entries, such as each role, degree or project."
},
"title": {
"type": "string",
"description": "The heading as the user wrote it. Required for type 'other'."
}
},
"additionalProperties": false
},
"description": "The resume's sections, in order, with only what the user told you. Leave out for a blank resume."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Where the user edits the new resume."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Create a resume",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Edit one of the user's resumes with a list of operations. Read it with get_resume_details first, and pass the revision and ids from there. An unknown id fails the whole call. Free. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
resumeId
The resume to edit: an id from get_resumes.
Clear enough to supply this argument.
expectedRevision
The revision get_resume_details returned for this resume, or the one your last update_resume call returned. If the resume changed since, the call is refused: read it again and redo the change.
Clear enough to supply this argument.
operations › items › anyOf › 0 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 0 › bulletId
The bullet's id, from get_resume_details.
Clear enough to supply this argument.
operations › items › anyOf › 0 › text
The bullet's full text.
Clear enough to supply this argument.
operations › items › anyOf › 1 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 1 › itemId
The entry's id (a role, degree, project and so on), from get_resume_details.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 1 › text
The bullet's full text.
Clear enough to supply this argument.
operations › items › anyOf › 1 › index
The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 2 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 2 › bulletId
The bullet's id, from get_resume_details.
Clear enough to supply this argument.
operations › items › anyOf › 3 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 3 › itemId
The entry's id (a role, degree, project and so on), from get_resume_details.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 3 › fields › heading
The item's main line: a role, degree, project or skill group.
When it started, written as the user writes it, e.g. 'Jan 2022'.
Clear enough to supply this argument.
operations › items › anyOf › 3 › fields › endDate
When it ended, written as the user writes it, e.g. 'Present'.
Clear enough to supply this argument.
operations › items › anyOf › 3 › fields › url
A link for the item, such as a project's site or repository.
Clear enough to supply this argument.
operations › items › anyOf › 4 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Clear enough to supply this argument.
operations › items › anyOf › 4 › sectionId
The section's id, from get_resume_details.
Clear enough to supply this argument.
operations › items › anyOf › 4 › fields › heading
The item's main line: a role, degree, project or skill group.
When it started, written as the user writes it, e.g. 'Jan 2022'.
Clear enough to supply this argument.
operations › items › anyOf › 4 › fields › endDate
When it ended, written as the user writes it, e.g. 'Present'.
Clear enough to supply this argument.
operations › items › anyOf › 4 › fields › url
A link for the item, such as a project's site or repository.
Clear enough to supply this argument.
operations › items › anyOf › 4 › bullets
The new entry's bullet points, in order.
Clear enough to supply this argument.
operations › items › anyOf › 4 › index
The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 5 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 5 › itemId
The entry's id (a role, degree, project and so on), from get_resume_details.
Clear enough to supply this argument.
operations › items › anyOf › 6 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Clear enough to supply this argument.
operations › items › anyOf › 6 › sectionType
What the new section holds. Use other, with a title, for anything else.
Clear enough to supply this argument.
operations › items › anyOf › 6 › title
The section's heading as it should appear on the resume.
Clear enough to supply this argument.
operations › items › anyOf › 6 › index
The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last.
Clear enough to supply this argument.
operations › items › anyOf › 7 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Clear enough to supply this argument.
operations › items › anyOf › 7 › sectionId
The section's id, from get_resume_details.
Clear enough to supply this argument.
operations › items › anyOf › 7 › title
The section's heading as it should appear on the resume.
Clear enough to supply this argument.
operations › items › anyOf › 8 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Clear enough to supply this argument.
operations › items › anyOf › 8 › sectionId
The section's id, from get_resume_details.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 9 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Clear enough to supply this argument.
operations › items › anyOf › 9 › id
The section, item or bullet to move, within its parent.
Clear enough to supply this argument.
operations › items › anyOf › 9 › index
The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last.
Clear enough to supply this argument.
operations › items › anyOf › 10 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 11 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 11 › name
The resume's new name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 12 › op
What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › anyOf › 12 › template
The layout the resume is shown and downloaded in.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"revision": {
"type": "number",
"description": "The new revision, for the next update_resume call."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "update_resume",
"title": "Edit a resume",
"description": "Edit one of the user's resumes with a list of operations. Read it with get_resume_details first, and pass the revision and ids from there. An unknown id fails the whole call. Free. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"required": [
"resumeId",
"expectedRevision",
"operations"
],
"properties": {
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to edit: an id from get_resumes."
},
"operations": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"op",
"bulletId",
"text"
],
"properties": {
"op": {
"type": "string",
"const": "setBulletText",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"text": {
"type": "string",
"description": "The bullet's full text."
},
"bulletId": {
"type": "string",
"description": "The bullet's id, from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"itemId",
"text"
],
"properties": {
"op": {
"type": "string",
"const": "addBullet",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"text": {
"type": "string",
"description": "The bullet's full text."
},
"index": {
"type": "integer",
"minimum": 0,
"description": "The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last."
},
"itemId": {
"type": "string",
"description": "The entry's id (a role, degree, project and so on), from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"bulletId"
],
"properties": {
"op": {
"type": "string",
"const": "removeBullet",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"bulletId": {
"type": "string",
"description": "The bullet's id, from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"itemId",
"fields"
],
"properties": {
"op": {
"type": "string",
"const": "setItemFields",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"fields": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A link for the item, such as a project's site or repository."
},
"endDate": {
"type": "string",
"description": "When it ended, written as the user writes it, e.g. 'Present'."
},
"heading": {
"type": "string",
"description": "The item's main line: a role, degree, project or skill group."
},
"location": {
"type": "string",
"description": "Where the entry was, or for setContact where the user lives, e.g. 'Bengaluru, India'."
},
"startDate": {
"type": "string",
"description": "When it started, written as the user writes it, e.g. 'Jan 2022'."
},
"subheading": {
"type": "string",
"description": "The item's second line: a company or school."
}
},
"description": "The fields to set. Fields you leave out keep their value.",
"additionalProperties": false
},
"itemId": {
"type": "string",
"description": "The entry's id (a role, degree, project and so on), from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"sectionId"
],
"properties": {
"op": {
"type": "string",
"const": "addItem",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"index": {
"type": "integer",
"minimum": 0,
"description": "The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last."
},
"fields": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A link for the item, such as a project's site or repository."
},
"endDate": {
"type": "string",
"description": "When it ended, written as the user writes it, e.g. 'Present'."
},
"heading": {
"type": "string",
"description": "The item's main line: a role, degree, project or skill group."
},
"location": {
"type": "string",
"description": "Where the entry was, or for setContact where the user lives, e.g. 'Bengaluru, India'."
},
"startDate": {
"type": "string",
"description": "When it started, written as the user writes it, e.g. 'Jan 2022'."
},
"subheading": {
"type": "string",
"description": "The item's second line: a company or school."
}
},
"description": "The fields to set. Fields you leave out keep their value.",
"additionalProperties": false
},
"bullets": {
"type": "array",
"items": {
"type": "string"
},
"description": "The new entry's bullet points, in order."
},
"sectionId": {
"type": "string",
"description": "The section's id, from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"itemId"
],
"properties": {
"op": {
"type": "string",
"const": "removeItem",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"itemId": {
"type": "string",
"description": "The entry's id (a role, degree, project and so on), from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"sectionType"
],
"properties": {
"op": {
"type": "string",
"const": "addSection",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"index": {
"type": "integer",
"minimum": 0,
"description": "The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last."
},
"title": {
"type": "string",
"description": "The section's heading as it should appear on the resume."
},
"sectionType": {
"enum": [
"summary",
"experience",
"projects",
"skills",
"education",
"achievements",
"certifications",
"languages",
"publications",
"volunteering",
"awards",
"other"
],
"type": "string",
"description": "What the new section holds. Use other, with a title, for anything else."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"sectionId",
"title"
],
"properties": {
"op": {
"type": "string",
"const": "setSectionTitle",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"title": {
"type": "string",
"description": "The section's heading as it should appear on the resume."
},
"sectionId": {
"type": "string",
"description": "The section's id, from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"sectionId"
],
"properties": {
"op": {
"type": "string",
"const": "removeSection",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"sectionId": {
"type": "string",
"description": "The section's id, from get_resume_details."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"id",
"index"
],
"properties": {
"id": {
"type": "string",
"description": "The section, item or bullet to move, within its parent."
},
"op": {
"type": "string",
"const": "move",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"index": {
"type": "integer",
"minimum": 0,
"description": "The position within its parent, 0 for first. Past the end means last; when adding, leaving it out also means last."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"fields"
],
"properties": {
"op": {
"type": "string",
"const": "setContact",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"fields": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The email address shown on the resume."
},
"links": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Where the link goes."
},
"label": {
"type": "string",
"description": "The link's text, e.g. 'GitHub' or 'Portfolio'."
}
},
"additionalProperties": false
},
"description": "The links shown on the resume. Replaces the whole list."
},
"phone": {
"type": "string",
"description": "The phone number shown on the resume."
},
"fullName": {
"type": "string",
"description": "The user's name as it heads the resume."
},
"headline": {
"type": "string",
"description": "The line under the name, e.g. 'Senior Frontend Engineer'."
},
"location": {
"type": "string",
"description": "Where the entry was, or for setContact where the user lives, e.g. 'Bengaluru, India'."
}
},
"description": "The fields to set. Fields you leave out keep their value.",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"name"
],
"properties": {
"op": {
"type": "string",
"const": "rename",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"name": {
"type": "string",
"description": "The resume's new name."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"op",
"template"
],
"properties": {
"op": {
"type": "string",
"const": "setTemplate",
"description": "What this edit does: setBulletText, addBullet or removeBullet change bullets; setItemFields, addItem or removeItem change a section's entries; addSection, setSectionTitle or removeSection change sections; move reorders; setContact changes the contact details; rename renames the resume; setTemplate changes its layout."
},
"template": {
"enum": [
"classic",
"compact"
],
"type": "string",
"description": "The layout the resume is shown and downloaded in."
}
},
"additionalProperties": false
}
]
},
"maxItems": 50,
"minItems": 1,
"description": "The edits, applied in order. Each one's op says what it does and which ids it needs."
},
"expectedRevision": {
"type": "integer",
"description": "The revision get_resume_details returned for this resume, or the one your last update_resume call returned. If the resume changed since, the call is refused: read it again and redo the change.",
"exclusiveMinimum": 0
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"revision": {
"type": "number",
"description": "The new revision, for the next update_resume call."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Edit a resume",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Make a copy of one of the user's resumes, to keep a version. Don't copy a resume to tailor it: applying suggested changes makes its own copy. The copy is identical until it's edited. It's never the primary resume. Free.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
resumeId
The resume to copy: an id from get_resumes.
Clear enough to supply this argument.
name
A name for the copy. Leave out to let GetHired name it.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"resumeId",
"url",
"message"
],
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"message": {
"type": "string"
},
"resumeId": {
"type": "string",
"description": "The copy's id."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "duplicate_resume",
"title": "Copy a resume",
"description": "Make a copy of one of the user's resumes, to keep a version. Don't copy a resume to tailor it: applying suggested changes makes its own copy. The copy is identical until it's edited. It's never the primary resume. Free.",
"inputSchema": {
"type": "object",
"required": [
"resumeId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "A name for the copy. Leave out to let GetHired name it."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to copy: an id from get_resumes."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"resumeId",
"url",
"message"
],
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"message": {
"type": "string"
},
"resumeId": {
"type": "string",
"description": "The copy's id."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Copy a resume",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Delete one of the user's resumes, with its reviews. It can't be undone. The last resume and the primary resume can't be deleted: to delete the primary, ask which resume should be primary instead and call set_primary_resume first. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
resumeId
The resume to delete: an id from get_resumes.
Clear enough to supply this argument.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"instruction": {
"type": "string"
},
"reviewsDeleted": {
"type": "integer",
"description": "How many of its reviews were deleted with it."
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "delete_resume",
"title": "Delete a resume",
"description": "Delete one of the user's resumes, with its reviews. It can't be undone. The last resume and the primary resume can't be deleted: to delete the primary, ask which resume should be primary instead and call set_primary_resume first. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"required": [
"resumeId"
],
"properties": {
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to delete: an id from get_resumes."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": "string"
},
"instruction": {
"type": "string"
},
"reviewsDeleted": {
"type": "integer",
"description": "How many of its reviews were deleted with it."
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Delete a resume",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Apply changes from a resume review, by each change's id from improve_resume or get_resume_review_details. They go to a copy by default, which later applies reuse; pass target 'original' only when the user asks to change the reviewed resume. Pass text to use the user's own wording. Text with a [placeholder] is refused: ask the user for the real value, then pass it as text. GetHired asks the user to confirm before it runs.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
reviewId
The review the changes come from: the reviewId from improve_resume, or an id from get_resume_reviews.
Clear enough to supply this argument.
target
Where the changes go: copy (when left out) puts them on a copy of the reviewed resume, which later calls for this review reuse; original changes the reviewed resume itself, only when the user asks for that.
Clear enough to supply this argument.
items › items › id
The change's id, from improve_resume's changes or get_resume_review_details' suggestions.
Clear enough to supply this argument.
items › items › text
The final text, when the user edited the suggestion or gave a real value for a placeholder.
Clear enough to supply this argument.
confirmation_token
Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string"
},
"status": {
"enum": [
"applied",
"already_applied",
"changed",
"not_found"
],
"type": "string"
}
},
"additionalProperties": true
},
"description": "Each change's result. changed means the resume moved on since the review, so it wasn't applied."
},
"target": {
"enum": [
"copy",
"original"
],
"type": "string"
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": [
"string",
"null"
],
"description": "The resume the changes went to."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "apply_review_suggestions",
"title": "Apply review suggestions",
"description": "Apply changes from a resume review, by each change's id from improve_resume or get_resume_review_details. They go to a copy by default, which later applies reuse; pass target 'original' only when the user asks to change the reviewed resume. Pass text to use the user's own wording. Text with a [placeholder] is refused: ask the user for the real value, then pass it as text. GetHired asks the user to confirm before it runs.",
"inputSchema": {
"type": "object",
"required": [
"reviewId",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The change's id, from improve_resume's changes or get_resume_review_details' suggestions."
},
"text": {
"type": "string",
"description": "The final text, when the user edited the suggestion or gave a real value for a placeholder."
}
},
"additionalProperties": false
},
"minItems": 1,
"description": "The changes the user chose."
},
"target": {
"enum": [
"copy",
"original"
],
"type": "string",
"description": "Where the changes go: copy (when left out) puts them on a copy of the reviewed resume, which later calls for this review reuse; original changes the reviewed resume itself, only when the user asks for that."
},
"reviewId": {
"type": "string",
"format": "uuid",
"description": "The review the changes come from: the reviewId from improve_resume, or an id from get_resume_reviews."
},
"confirmation_token": {
"type": "string",
"description": "Leave out on the first call, which returns a preview and this token. Once the user approves the preview, call again with the same input plus the token."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A full https link into GetHired."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string"
},
"status": {
"enum": [
"applied",
"already_applied",
"changed",
"not_found"
],
"type": "string"
}
},
"additionalProperties": true
},
"description": "Each change's result. changed means the resume moved on since the review, so it wasn't applied."
},
"target": {
"enum": [
"copy",
"original"
],
"type": "string"
},
"message": {
"type": "string",
"description": "What happened, e.g. that the user declined and nothing was done."
},
"preview": {
"type": "string",
"description": "What will happen, for the user to approve."
},
"resumeId": {
"type": [
"string",
"null"
],
"description": "The resume the changes went to."
},
"instruction": {
"type": "string"
},
"needsConfirmation": {
"type": "boolean",
"description": "true when nothing ran yet: show preview to the user, and call again with confirmation_token once they approve."
},
"confirmation_token": {
"type": "string",
"description": "Send back with the same input to run it after the user approves."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Apply review suggestions",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Get a link that downloads one of the user's resumes as a PDF or Word file. Give it to the user to open in a browser where they're signed in to GetHired. Free.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
resumeId
The resume to download: an id from get_resumes.
Clear enough to supply this argument.
format
The file type: pdf, or docx for Word. Leave out for pdf.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"resumeId",
"name",
"format",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Downloads the file in a browser where the user is signed in to GetHired."
},
"name": {
"type": [
"string",
"null"
]
},
"format": {
"enum": [
"pdf",
"docx"
],
"type": "string"
},
"resumeId": {
"type": "string"
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "export_resume",
"title": "Download a resume",
"description": "Get a link that downloads one of the user's resumes as a PDF or Word file. Give it to the user to open in a browser where they're signed in to GetHired. Free.",
"inputSchema": {
"type": "object",
"required": [
"resumeId"
],
"properties": {
"format": {
"enum": [
"pdf",
"docx"
],
"type": "string",
"description": "The file type: pdf, or docx for Word. Leave out for pdf."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to download: an id from get_resumes."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"resumeId",
"name",
"format",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Downloads the file in a browser where the user is signed in to GetHired."
},
"name": {
"type": [
"string",
"null"
]
},
"format": {
"enum": [
"pdf",
"docx"
],
"type": "string"
},
"resumeId": {
"type": "string"
}
},
"additionalProperties": true
},
"annotations": {
"title": "Download a resume",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Get a resume review's status, score, overall feedback and its top changes of every kind (pending first, then highest priority), each with the id that apply_review_suggestions needs, any [placeholders] the user must fill in, and its state on the copy and on the original resume (pending, applied, or changed if the resume moved on since the review).
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
reviewId
The review to read: an id from get_resume_reviews, or the reviewId from improve_resume.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"id",
"name",
"status",
"score",
"overallFeedback",
"totalSuggestions",
"pendingOnCopy",
"pendingOnOriginal",
"copyResumeId",
"createdAt",
"suggestions"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"status": {
"enum": [
"draft",
"processing",
"completed",
"failed"
],
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"suggestions": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"kind",
"reason",
"priority",
"onCopy",
"onOriginal"
],
"properties": {
"id": {
"type": "string",
"description": "Pass to apply_review_suggestions."
},
"kind": {
"enum": [
"rewrite",
"add",
"remove",
"move"
],
"type": "string"
},
"onCopy": {
"type": "string",
"description": "pending, applied, changed, or unknown when that resume is gone."
},
"reason": {
"type": "string"
},
"section": {
"type": "string"
},
"original": {
"type": "string",
"description": "The bullet's current text, for rewrites and removals."
},
"priority": {
"type": "string"
},
"suggested": {
"type": "string",
"description": "The new text, for rewrites and additions."
},
"onOriginal": {
"type": "string",
"description": "pending, applied, changed, or unknown when that resume is gone."
},
"placeholders": {
"type": "array",
"items": {
"type": "string"
},
"description": "[placeholders] in suggested that the user must fill in before it can be applied."
}
},
"additionalProperties": true
}
},
"copyResumeId": {
"type": [
"string",
"null"
],
"description": "The copy the changes go to by default, once one exists."
},
"pendingOnCopy": {
"type": "integer"
},
"overallFeedback": {
"type": [
"string",
"null"
]
},
"totalSuggestions": {
"type": "integer"
},
"pendingOnOriginal": {
"type": "integer"
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "get_resume_review_details",
"title": "Resume review details",
"description": "Get a resume review's status, score, overall feedback and its top changes of every kind (pending first, then highest priority), each with the id that apply_review_suggestions needs, any [placeholders] the user must fill in, and its state on the copy and on the original resume (pending, applied, or changed if the resume moved on since the review).",
"inputSchema": {
"type": "object",
"required": [
"reviewId"
],
"properties": {
"reviewId": {
"type": "string",
"format": "uuid",
"description": "The review to read: an id from get_resume_reviews, or the reviewId from improve_resume."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"id",
"name",
"status",
"score",
"overallFeedback",
"totalSuggestions",
"pendingOnCopy",
"pendingOnOriginal",
"copyResumeId",
"createdAt",
"suggestions"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"status": {
"enum": [
"draft",
"processing",
"completed",
"failed"
],
"type": "string"
},
"createdAt": {
"type": [
"string",
"null"
]
},
"suggestions": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"kind",
"reason",
"priority",
"onCopy",
"onOriginal"
],
"properties": {
"id": {
"type": "string",
"description": "Pass to apply_review_suggestions."
},
"kind": {
"enum": [
"rewrite",
"add",
"remove",
"move"
],
"type": "string"
},
"onCopy": {
"type": "string",
"description": "pending, applied, changed, or unknown when that resume is gone."
},
"reason": {
"type": "string"
},
"section": {
"type": "string"
},
"original": {
"type": "string",
"description": "The bullet's current text, for rewrites and removals."
},
"priority": {
"type": "string"
},
"suggested": {
"type": "string",
"description": "The new text, for rewrites and additions."
},
"onOriginal": {
"type": "string",
"description": "pending, applied, changed, or unknown when that resume is gone."
},
"placeholders": {
"type": "array",
"items": {
"type": "string"
},
"description": "[placeholders] in suggested that the user must fill in before it can be applied."
}
},
"additionalProperties": true
}
},
"copyResumeId": {
"type": [
"string",
"null"
],
"description": "The copy the changes go to by default, once one exists."
},
"pendingOnCopy": {
"type": "integer"
},
"overallFeedback": {
"type": [
"string",
"null"
]
},
"totalSuggestions": {
"type": "integer"
},
"pendingOnOriginal": {
"type": "integer"
}
},
"additionalProperties": true
},
"annotations": {
"title": "Resume review details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Compare the user's resumes against a job (jobId) or a pasted job description and pick the one that fits best. Returns the best resume with its score (the share of the job's requirements it shows, 0-100), up to 3 requirements it matches with a quote from the resume and up to 3 it misses, then the other resumes compared, best first, each with its score and what it misses. Pass resumeIds to compare specific resumes; otherwise all ready resumes are compared, and with more than 5 only the closest 5 are compared in detail. Costs 1 AI credit when two or more resumes are compared; free with one.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobId
The job to compare the resumes against: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list. Send this or jobDescription, not both.
Clear enough to supply this argument.
jobDescription
The text of a job description the user pasted, for a job that isn't on GetHired. Send this or jobId, not both.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
resumeIds
Only when the user names which resumes to compare: their ids from get_resumes. Leave out to compare all of the user's ready resumes.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"title": "Pick a resume for a job",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
Output schema65/100
Describe the returned fields so an agent can interpret the result.
{
"name": "pick_resume_for_job",
"title": "Pick a resume for a job",
"description": "Compare the user's resumes against a job (jobId) or a pasted job description and pick the one that fits best. Returns the best resume with its score (the share of the job's requirements it shows, 0-100), up to 3 requirements it matches with a quote from the resume and up to 3 it misses, then the other resumes compared, best first, each with its score and what it misses. Pass resumeIds to compare specific resumes; otherwise all ready resumes are compared, and with more than 5 only the closest 5 are compared in detail. Costs 1 AI credit when two or more resumes are compared; free with one.",
"inputSchema": {
"type": "object",
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "The job to compare the resumes against: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list. Send this or jobDescription, not both."
},
"resumeIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"description": "A resume id from get_resumes."
},
"maxItems": 50,
"minItems": 2,
"description": "Only when the user names which resumes to compare: their ids from get_resumes. Leave out to compare all of the user's ready resumes."
},
"jobDescription": {
"type": "string",
"maxLength": 4000,
"minLength": 50,
"description": "The text of a job description the user pasted, for a job that isn't on GetHired. Send this or jobId, not both."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"best",
"others",
"message"
],
"properties": {
"job": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"company",
"locations",
"salary",
"jobType",
"experience",
"postedAt",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The job id, for get_job_details, favorite_job and the other job tools."
},
"url": {
"type": "string",
"description": "The job's page on GetHired."
},
"title": {
"type": [
"string",
"null"
]
},
"salary": {
"type": [
"string",
"null"
],
"description": "The salary range as the posting gives it."
},
"company": {
"type": [
"string",
"null"
]
},
"jobType": {
"type": [
"string",
"null"
]
},
"postedAt": {
"type": [
"string",
"null"
]
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
},
"experience": {
"type": [
"string",
"null"
],
"description": "The experience the posting asks for, as it gives it."
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "The job compared against, or null for a pasted description."
},
"best": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": "number",
"description": "The share of the job's requirements the resume shows, 0-100, must-haves counting double."
},
"matched": {
"type": "array",
"items": {
"type": "object",
"required": [
"requirement",
"quote"
],
"properties": {
"quote": {
"type": "string"
},
"requirement": {
"type": "string"
}
},
"additionalProperties": true
}
},
"missing": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"importance"
],
"properties": {
"text": {
"type": "string"
},
"importance": {
"enum": [
"must",
"nice"
],
"type": "string"
}
},
"additionalProperties": true
}
}
},
"description": "The best fit, with the requirements it matches and misses.",
"additionalProperties": true
},
"note": {
"type": "string"
},
"others": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": "number",
"description": "The share of the job's requirements the resume shows, 0-100, must-haves counting double."
},
"matched": {
"type": "array",
"items": {
"type": "object",
"required": [
"requirement",
"quote"
],
"properties": {
"quote": {
"type": "string"
},
"requirement": {
"type": "string"
}
},
"additionalProperties": true
}
},
"missing": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"importance"
],
"properties": {
"text": {
"type": "string"
},
"importance": {
"enum": [
"must",
"nice"
],
"type": "string"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
},
"description": "The other resumes compared, best first, with what each misses."
},
"message": {
"type": "string"
},
"shortlisted": {
"type": "string"
},
"requirementCount": {
"type": "integer"
}
},
"additionalProperties": true
},
"annotations": {
"title": "Pick a resume for a job",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Suggest how to improve or tailor one of the user's resumes: rewrites, new bullets, removals, moves, and gaps to ask the user about, each change with its id. Pass a jobId or a pasted jobDescription to tailor it to a job, or neither to judge it on its own. It changes nothing: apply the ones the user chooses with apply_review_suggestions. Costs 2 AI credits once it succeeds.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
resumeId
The resume to improve: an id from get_resumes.
Clear enough to supply this argument.
jobId
A job to tailor the resume to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list. Leave out, with jobDescription, for a general review.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobDescription
The text of a job description the user pasted, to tailor the resume to a job that isn't on GetHired. Don't send it with jobId.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
focus
What the user asked for, in their words, such as 'make it shorter' or 'focus on leadership'.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"reviewId",
"tailoredFor",
"summary",
"counts",
"gaps",
"changes",
"message"
],
"properties": {
"gaps": {
"type": "string",
"description": "Questions for the user about what the resume is missing, as JSON, delimited as data."
},
"counts": {
"type": "object",
"required": [
"rewrites",
"additions",
"removals",
"moves",
"gaps"
],
"properties": {
"gaps": {
"type": "integer"
},
"moves": {
"type": "integer"
},
"removals": {
"type": "integer"
},
"rewrites": {
"type": "integer"
},
"additions": {
"type": "integer"
}
},
"additionalProperties": true
},
"changes": {
"type": "string",
"description": "The suggested changes as JSON, delimited as data: each one's id, kind, reason, priority and text."
},
"message": {
"type": "string"
},
"summary": {
"type": "string",
"description": "The review's summary, delimited as data."
},
"reviewId": {
"type": "string",
"description": "Pass to apply_review_suggestions."
},
"tailoredFor": {
"type": "string",
"description": "What the review was tailored to, delimited as data."
}
},
"additionalProperties": true
}
Original tool metadata
{
"name": "improve_resume",
"title": "Improve a resume",
"description": "Suggest how to improve or tailor one of the user's resumes: rewrites, new bullets, removals, moves, and gaps to ask the user about, each change with its id. Pass a jobId or a pasted jobDescription to tailor it to a job, or neither to judge it on its own. It changes nothing: apply the ones the user chooses with apply_review_suggestions. Costs 2 AI credits once it succeeds.",
"inputSchema": {
"type": "object",
"required": [
"resumeId"
],
"properties": {
"focus": {
"type": "string",
"maxLength": 300,
"description": "What the user asked for, in their words, such as 'make it shorter' or 'focus on leadership'."
},
"jobId": {
"type": "string",
"format": "uuid",
"description": "A job to tailor the resume to: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list. Leave out, with jobDescription, for a general review."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume to improve: an id from get_resumes."
},
"jobDescription": {
"type": "string",
"maxLength": 4000,
"minLength": 50,
"description": "The text of a job description the user pasted, to tailor the resume to a job that isn't on GetHired. Don't send it with jobId."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"reviewId",
"tailoredFor",
"summary",
"counts",
"gaps",
"changes",
"message"
],
"properties": {
"gaps": {
"type": "string",
"description": "Questions for the user about what the resume is missing, as JSON, delimited as data."
},
"counts": {
"type": "object",
"required": [
"rewrites",
"additions",
"removals",
"moves",
"gaps"
],
"properties": {
"gaps": {
"type": "integer"
},
"moves": {
"type": "integer"
},
"removals": {
"type": "integer"
},
"rewrites": {
"type": "integer"
},
"additions": {
"type": "integer"
}
},
"additionalProperties": true
},
"changes": {
"type": "string",
"description": "The suggested changes as JSON, delimited as data: each one's id, kind, reason, priority and text."
},
"message": {
"type": "string"
},
"summary": {
"type": "string",
"description": "The review's summary, delimited as data."
},
"reviewId": {
"type": "string",
"description": "Pass to apply_review_suggestions."
},
"tailoredFor": {
"type": "string",
"description": "What the review was tailored to, delimited as data."
}
},
"additionalProperties": true
},
"annotations": {
"title": "Improve a resume",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
List the user's AI mock interviews, newest first: the job and resume each is for, and each session taken with its analysis status (completed, processing, failed, or null when none).
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many to return in this call. Defaults to 10.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Get the feedback from one AI interview session: overall feedback, communication and role-fit scores (1-5), strengths, areas to improve and practice tips. Defaults to the latest session.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
interviewId
The mock interview: an id from list_interviews.
Clear enough to supply this argument.
sessionId
One of that interview's sessions, from list_interviews' sessions. Leave out for the latest session.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Set up an AI mock interview for a job, using a resume (the primary one by default). Returns the new interview's id and the link where the user starts it. Free to create; each session uses 10 AI credits when it starts.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
jobId
The job to practise for: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list.
Clear enough to supply this argument.
resumeId
The resume the interviewer works from: an id from get_resumes. Leave out to use the primary resume.
Clear enough to supply this argument.
name
A name to find the interview by in the user's list, e.g. 'Stripe frontend practice'. Leave out for 'AI Interview'.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Set up a mock interview",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
Output schema63/100
Describe the returned fields so an agent can interpret the result.
{
"name": "create_interview",
"title": "Set up a mock interview",
"description": "Set up an AI mock interview for a job, using a resume (the primary one by default). Returns the new interview's id and the link where the user starts it. Free to create; each session uses 10 AI credits when it starts.",
"inputSchema": {
"type": "object",
"required": [
"jobId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "A name to find the interview by in the user's list, e.g. 'Stripe frontend practice'. Leave out for 'AI Interview'."
},
"jobId": {
"type": "string",
"format": "uuid",
"description": "The job to practise for: an id from search_jobs, get_relevant_jobs, get_saved_jobs or another job list."
},
"resumeId": {
"type": "string",
"format": "uuid",
"description": "The resume the interviewer works from: an id from get_resumes. Leave out to use the primary resume."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"interviewId",
"url",
"message"
],
"properties": {
"url": {
"type": "string",
"description": "Where the user starts the interview."
},
"message": {
"type": "string"
},
"interviewId": {
"type": "string"
}
},
"additionalProperties": true
},
"annotations": {
"title": "Set up a mock interview",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List the screening interviews companies have invited the user to after they applied, newest first: the job and company, the status (invited, paused, in_progress, completed, expired, declined, cancelled or withdrawn), the deadline, length and attempts left. These are separate from mock interviews. The company keeps the report; the user doesn't see a score.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
How many to return in this call. Defaults to 10.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "list_screening_interviews",
"title": "My screening interviews",
"description": "List the screening interviews companies have invited the user to after they applied, newest first: the job and company, the status (invited, paused, in_progress, completed, expired, declined, cancelled or withdrawn), the deadline, length and attempts left. These are separate from mock interviews. The company keeps the report; the user doesn't see a score.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many to return in this call. Defaults to 10."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"interviews"
],
"properties": {
"interviews": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"applicationId",
"job",
"status",
"invitedAt",
"deadlineAt",
"completedAt",
"durationMinutes",
"attemptsLeft",
"url"
],
"properties": {
"id": {
"type": "string"
},
"job": {
"type": "object",
"required": [
"id",
"title",
"company"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"url": {
"type": "string",
"description": "Where the user takes the interview."
},
"status": {
"type": "string"
},
"invitedAt": {
"type": [
"string",
"null"
]
},
"deadlineAt": {
"type": [
"string",
"null"
]
},
"completedAt": {
"type": [
"string",
"null"
]
},
"attemptsLeft": {
"type": "number"
},
"applicationId": {
"type": [
"string",
"null"
]
},
"durationMinutes": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
},
"annotations": {
"title": "My screening interviews",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Search GetHired's job listings with structured filters
02My profileGet the user's name, AI credit balance, onboarding status, weekly activity and three most recent applications.
03My applicationsList the user's job applications with their status, newest first.
04My resume reviewsList the user's resume reviews, newest first, with each one's status and score.
05My mock interviewsList the user's AI mock interviews, newest first: the job and resume each is for, and each session taken with its analysis status (completed, processing, fai…
Want to run these tasks against your MCP server with us?
GetHired setup, tools, quality score, publishing readiness, and alternatives.
How do I add GetHired to Claude, ChatGPT, or Cursor?
Add GetHired to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://gethired.devhub.co.in/api/mcp.
Is GetHired MCP ready for ChatGPT and Claude?
As of November 12, 2026, GetHired scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is GetHired's MCP tool documentation?
As of November 12, 2026, GetHired scores 89/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 32 of 32 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.