Jobherder job search
Paid job search: 7 matched roles, each with a tailored CV and cover letter.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"job-search": {
"url": "https://jobherder.com/mcp"
}
}
}远程端点
https://jobherder.com/mcpstreamable-http它能做什么
工具清单
工具(5)
🟢get_pricing
What a Jobherder search costs and how to pay for it, in card and stablecoin terms. No auth required.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"service": {
"type": "string",
"description": "Service name"
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "Which tool buys this product"
},
"unit": {
"type": "string",
"description": "What one purchase delivers"
},
"price": {
"type": "string",
"description": "Human-readable price"
},
"typical_time": {
"type": "string",
"description": "How long delivery usually takes"
}
},
"required": [
"tool",
"unit",
"price",
"typical_time"
],
"additionalProperties": false
},
"description": "The two things Jobherder sells"
},
"packs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"pack": {
"type": "string",
"description": "Pack code to pass to checkout or to pay for over x402"
},
"credits": {
"type": "number",
"description": "How many runs the pack buys"
},
"price": {
"type": "string",
"description": "Human-readable price"
},
"buys": {
"type": "string",
"description": "Which product these credits are valid for: search or quick"
},
"description": {
"type": "string"
}
},
"required": [
"pack",
"credits",
"price",
"buys",
"description"
],
"additionalProperties": false
},
"description": "Buyable credit packs"
},
"credits_are_per_product": {
"type": "boolean",
"description": "Always true: a quick credit cannot pay for a full search"
},
"card_checkout": {
"type": "string",
"description": "URL for card payment"
},
"x402": {
"anyOf": [
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "Chain the payment settles on"
},
"asset": {
"type": "string",
"description": "Token accepted, USDC"
},
"pay_to": {
"type": "string",
"description": "Receiving address"
},
"prices": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
},
"description": "Pack code to atomic USDC amount"
},
"how": {
"type": "string",
"description": "How to complete the payment loop"
}
},
"required": [
"network",
"asset",
"pay_to",
"prices",
"how"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Stablecoin payment terms, null if x402 is not configured"
},
"free_searches": {
"type": "boolean",
"description": "Always false: registration grants no credits"
}
},
"required": [
"service",
"products",
"packs",
"credits_are_per_product",
"card_checkout",
"x402",
"free_searches"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡register_agent(email, name)
Create an agent identity and receive an API key. Registration is free and includes no free searches.
输入模式
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email that will own the account and receive results. Must be the job seeker's own address, and must match cfg_email on every later search"
},
"name": {
"description": "Display name for the account. Optional; the profile name is used on documents regardless",
"type": "string"
}
},
"required": [
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"api_key": {
"description": "Bearer token for every later call. Shown once and never again",
"type": "string"
},
"email": {
"description": "The address the account is registered to",
"type": "string"
},
"note": {
"type": "string"
},
"next": {
"description": "Suggested next call",
"type": "string"
},
"message": {
"description": "What to do about the error, when one is present",
"type": "string"
},
"owner_action_url": {
"description": "Present only on account_owned_by_human. A person already owns this address, so no key can be issued here. Send them to this page to create one and paste it back",
"type": "string"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢start_job_search(profile, cv_json, cv_base64, cv_type)
Spend one credit to run a full search: 7 roles matched to the profile, each with a tailored CV and cover letter returned as markdown by get_search_status and emailed as PDFs. Requires an API key. With no credit left it returns an x402 PaymentRequired; retry the same call with the signed payment in _meta["x402/payment"] to pay in USDC and run immediately.
输入模式
{
"type": "object",
"properties": {
"profile": {
"type": "object",
"properties": {
"cfg_name": {
"type": "string",
"description": "Full name of the job seeker, as it should appear on the tailored CV"
},
"cfg_email": {
"type": "string",
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status"
},
"cfg_location": {
"type": "string",
"description": "Where the job seeker actually lives, e.g. \"Limassol, Cyprus\". Used for commute and time zone reasoning, not as a filter on its own"
},
"cfg_location_preference": {
"type": "string",
"description": "Prose description of acceptable locations, e.g. \"anywhere remote in Europe, or on-site in Berlin\". Free text; matching reads it as intent rather than parsing it"
},
"cfg_work_style": {
"type": "string",
"enum": [
"remote_only",
"mix"
],
"description": "remote_only rejects anything requiring office attendance; mix means local or hybrid near the candidate plus remote in the chosen regions"
},
"cfg_want_remote_eu": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes"
},
"cfg_want_remote_uk": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles advertised as remote within the UK"
},
"cfg_want_usa": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"type": "array",
"items": {
"type": "string"
}
},
"cfg_seniority_level": {
"type": "string",
"description": "Seniority band as a single label or a contiguous range, e.g. \"Director\" or \"Manager – Head of Department\". Not a free-text mix of titles and industries"
},
"cfg_target_titles": {
"type": "string",
"description": "Comma-separated target job titles, e.g. \"Head of Production, COO, Product Director\""
},
"cfg_local_country": {
"type": "string",
"description": "ISO country name for where they live, e.g. \"Germany\". Required so local vs remote gating does not guess from a free-text city line"
},
"cfg_uk_onsite": {
"default": "no",
"description": "Also include on-site roles in the UK. Defaults to no; UK remote is a separate flag",
"type": "string",
"enum": [
"yes",
"no"
]
},
"cfg_industries": {
"type": "string",
"description": "Comma-separated sectors of interest, e.g. \"Music, Fintech, Healthcare\". Sectors only — job functions go in cfg_target_titles"
},
"cfg_not_interested_in": {
"default": "",
"description": "Comma-separated industries or employer types to exclude, e.g. \"gambling, defence\". Applied as a hard filter",
"type": "string"
},
"cfg_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"type": "string",
"enum": [
"yes",
"no"
]
},
"cfg_additional_context": {
"default": "",
"description": "Anything else that shapes the search and is not covered by the other fields: visa position, notice period, salary floor, companies to avoid",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"type": "string",
"enum": [
"yes",
"no"
]
}
},
"required": [
"cfg_name",
"cfg_email",
"cfg_location",
"cfg_location_preference",
"cfg_work_style",
"cfg_want_remote_eu",
"cfg_want_remote_uk",
"cfg_want_usa",
"cfg_seniority_level",
"cfg_target_titles",
"cfg_local_country",
"cfg_industries"
],
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking"
},
"cv_json": {
"description": "The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64",
"type": "object",
"properties": {
"basics": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"label": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 60
},
"url": {
"type": "string",
"maxLength": 300
},
"summary": {
"type": "string",
"maxLength": 4000
},
"location": {
"type": "object",
"properties": {
"address": {
"type": "string",
"maxLength": 200
},
"postalCode": {
"type": "string",
"maxLength": 30
},
"city": {
"type": "string",
"maxLength": 120
},
"region": {
"type": "string",
"maxLength": 120
},
"countryCode": {
"type": "string",
"maxLength": 10
}
}
},
"profiles": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"network": {
"type": "string",
"maxLength": 80
},
"username": {
"type": "string",
"maxLength": 120
},
"url": {
"type": "string",
"maxLength": 300
}
}
}
}
}
},
"work": {
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"company": {
"type": "string",
"maxLength": 200
},
"position": {
"type": "string",
"maxLength": 200
},
"location": {
"type": "string",
"maxLength": 200
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 3000
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"volunteer": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"company": {
"type": "string",
"maxLength": 200
},
"position": {
"type": "string",
"maxLength": 200
},
"location": {
"type": "string",
"maxLength": 200
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 3000
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"education": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"institution": {
"type": "string",
"maxLength": 200
},
"area": {
"type": "string",
"maxLength": 200
},
"studyType": {
"type": "string",
"maxLength": 100
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"score": {
"type": "string",
"maxLength": 60
},
"courses": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"skills": {
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"level": {
"type": "string",
"maxLength": 60
},
"keywords": {
"maxItems": 60,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
},
"languages": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"language": {
"type": "string",
"maxLength": 80
},
"fluency": {
"type": "string",
"maxLength": 80
}
}
}
},
"certificates": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"issuer": {
"type": "string",
"maxLength": 200
},
"date": {
"type": "string",
"maxLength": 40
}
}
}
},
"awards": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 200
},
"awarder": {
"type": "string",
"maxLength": 200
},
"date": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 1000
}
}
}
},
"publications": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 300
},
"publisher": {
"type": "string",
"maxLength": 200
},
"releaseDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 1000
}
}
}
},
"projects": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 3000
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
},
"keywords": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
},
"interests": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"keywords": {
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
}
}
},
"cv_base64": {
"description": "The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file",
"type": "string"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
}
},
"required": [
"profile"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"run_id": {
"description": "Pass this to get_search_status to poll",
"type": "string"
},
"status": {
"description": "Run state at the moment of starting, normally \"running\"",
"type": "string"
},
"credits_remaining": {
"description": "Credits left for this product after the spend",
"type": "number"
},
"message": {
"description": "What happens next and roughly when, or what to do about the error",
"type": "string"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢quick_job_search(profile, cv_json, cv_base64, cv_type)
The single best current role for a profile, with a tailored CV and cover letter, in minutes rather than an hour. $2.50 in USDC. Use this when you want one answer fast; use start_job_search when you want a shortlist of 7 to choose from. With no credit it returns an x402 PaymentRequired; retry the same call with the signed payment in _meta["x402/payment"].
输入模式
{
"type": "object",
"properties": {
"profile": {
"type": "object",
"properties": {
"cfg_name": {
"type": "string",
"description": "Full name of the job seeker, as it should appear on the tailored CV"
},
"cfg_email": {
"type": "string",
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status"
},
"cfg_location": {
"type": "string",
"description": "Where the job seeker actually lives, e.g. \"Limassol, Cyprus\". Used for commute and time zone reasoning, not as a filter on its own"
},
"cfg_location_preference": {
"type": "string",
"description": "Prose description of acceptable locations, e.g. \"anywhere remote in Europe, or on-site in Berlin\". Free text; matching reads it as intent rather than parsing it"
},
"cfg_work_style": {
"type": "string",
"enum": [
"remote_only",
"mix"
],
"description": "remote_only rejects anything requiring office attendance; mix means local or hybrid near the candidate plus remote in the chosen regions"
},
"cfg_want_remote_eu": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes"
},
"cfg_want_remote_uk": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles advertised as remote within the UK"
},
"cfg_want_usa": {
"type": "string",
"enum": [
"yes",
"no"
],
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"type": "array",
"items": {
"type": "string"
}
},
"cfg_seniority_level": {
"type": "string",
"description": "Seniority band as a single label or a contiguous range, e.g. \"Director\" or \"Manager – Head of Department\". Not a free-text mix of titles and industries"
},
"cfg_target_titles": {
"type": "string",
"description": "Comma-separated target job titles, e.g. \"Head of Production, COO, Product Director\""
},
"cfg_local_country": {
"type": "string",
"description": "ISO country name for where they live, e.g. \"Germany\". Required so local vs remote gating does not guess from a free-text city line"
},
"cfg_uk_onsite": {
"default": "no",
"description": "Also include on-site roles in the UK. Defaults to no; UK remote is a separate flag",
"type": "string",
"enum": [
"yes",
"no"
]
},
"cfg_industries": {
"type": "string",
"description": "Comma-separated sectors of interest, e.g. \"Music, Fintech, Healthcare\". Sectors only — job functions go in cfg_target_titles"
},
"cfg_not_interested_in": {
"default": "",
"description": "Comma-separated industries or employer types to exclude, e.g. \"gambling, defence\". Applied as a hard filter",
"type": "string"
},
"cfg_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"type": "string",
"enum": [
"yes",
"no"
]
},
"cfg_additional_context": {
"default": "",
"description": "Anything else that shapes the search and is not covered by the other fields: visa position, notice period, salary floor, companies to avoid",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"type": "string",
"enum": [
"yes",
"no"
]
}
},
"required": [
"cfg_name",
"cfg_email",
"cfg_location",
"cfg_location_preference",
"cfg_work_style",
"cfg_want_remote_eu",
"cfg_want_remote_uk",
"cfg_want_usa",
"cfg_seniority_level",
"cfg_target_titles",
"cfg_local_country",
"cfg_industries"
],
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking"
},
"cv_json": {
"description": "The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64",
"type": "object",
"properties": {
"basics": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"label": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 200
},
"phone": {
"type": "string",
"maxLength": 60
},
"url": {
"type": "string",
"maxLength": 300
},
"summary": {
"type": "string",
"maxLength": 4000
},
"location": {
"type": "object",
"properties": {
"address": {
"type": "string",
"maxLength": 200
},
"postalCode": {
"type": "string",
"maxLength": 30
},
"city": {
"type": "string",
"maxLength": 120
},
"region": {
"type": "string",
"maxLength": 120
},
"countryCode": {
"type": "string",
"maxLength": 10
}
}
},
"profiles": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"network": {
"type": "string",
"maxLength": 80
},
"username": {
"type": "string",
"maxLength": 120
},
"url": {
"type": "string",
"maxLength": 300
}
}
}
}
}
},
"work": {
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"company": {
"type": "string",
"maxLength": 200
},
"position": {
"type": "string",
"maxLength": 200
},
"location": {
"type": "string",
"maxLength": 200
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 3000
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"volunteer": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"company": {
"type": "string",
"maxLength": 200
},
"position": {
"type": "string",
"maxLength": 200
},
"location": {
"type": "string",
"maxLength": 200
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 3000
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"education": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"institution": {
"type": "string",
"maxLength": 200
},
"area": {
"type": "string",
"maxLength": 200
},
"studyType": {
"type": "string",
"maxLength": 100
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"score": {
"type": "string",
"maxLength": 60
},
"courses": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
}
}
},
"skills": {
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"level": {
"type": "string",
"maxLength": 60
},
"keywords": {
"maxItems": 60,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
},
"languages": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"language": {
"type": "string",
"maxLength": 80
},
"fluency": {
"type": "string",
"maxLength": 80
}
}
}
},
"certificates": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"issuer": {
"type": "string",
"maxLength": 200
},
"date": {
"type": "string",
"maxLength": 40
}
}
}
},
"awards": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 200
},
"awarder": {
"type": "string",
"maxLength": 200
},
"date": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 1000
}
}
}
},
"publications": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 300
},
"publisher": {
"type": "string",
"maxLength": 200
},
"releaseDate": {
"type": "string",
"maxLength": 40
},
"summary": {
"type": "string",
"maxLength": 1000
}
}
}
},
"projects": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 3000
},
"url": {
"type": "string",
"maxLength": 300
},
"startDate": {
"type": "string",
"maxLength": 40
},
"endDate": {
"type": "string",
"maxLength": 40
},
"highlights": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
},
"keywords": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
},
"interests": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"keywords": {
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
}
}
}
}
},
"cv_base64": {
"description": "The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file",
"type": "string"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
}
},
"required": [
"profile"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"run_id": {
"description": "Pass this to get_search_status to poll",
"type": "string"
},
"status": {
"description": "Run state at the moment of starting, normally \"running\"",
"type": "string"
},
"credits_remaining": {
"description": "Credits left for this product after the spend",
"type": "number"
},
"message": {
"description": "What happens next and roughly when, or what to do about the error",
"type": "string"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_search_status(run_id)
Progress of a search, and the matched roles with the reason each was picked once it finishes.
输入模式
{
"type": "object",
"properties": {
"run_id": {
"description": "The run_id returned by start_job_search or quick_job_search. Omit to get the most recent run for this account",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"run_id": {
"type": "string"
},
"status": {
"description": "running, success, no_matches or failed",
"type": "string"
},
"done": {
"description": "True once the run has finished, whether or not it found anything",
"type": "boolean"
},
"plan": {
"description": "Which product this run was: one_off or agent_quick",
"type": "string"
},
"target_jobs": {
"description": "How many roles this run is meant to deliver",
"type": "number"
},
"started_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"matches": {
"description": "The delivered roles, each with its tailored documents. Absent until the run succeeds",
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Job title as advertised"
},
"company": {
"type": "string",
"description": "Hiring company"
},
"url": {
"type": "string",
"description": "Link to the live posting"
},
"score": {
"description": "Fit score out of 100, higher is better",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"rank": {
"description": "Position in the delivered set, 1 is the strongest match",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"match_reason": {
"description": "Why this role was picked for this profile",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"documents": {
"description": "The tailored documents for this role. Null while the run is still going, and on older runs that predate document return",
"anyOf": [
{
"type": "object",
"properties": {
"cv_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The CV rewritten for this specific role, as markdown"
},
"cover_letter_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "A cover letter written for this specific role, as markdown"
}
},
"required": [
"cv_markdown",
"cover_letter_markdown"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"company",
"url"
],
"additionalProperties": false
}
},
"message": {
"description": "Progress in plain language while running, or what to do about the error",
"type": "string"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}社区
证据