Jobero job search
Paid job search: 7 matched roles, each with a tailored CV and cover letter.
Allow With Approval
trustsnap_d1bf5f4b71b3a5cd.- Utility Coverage
- Resource Contract
- Request Association
- Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tool…
- Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.
- Advertise a current MCP protocol revision (2025-06-18 or later) in both the initialize response and the MCP-Protocol-Ve…
- Search crawler activity
- profile inspection
Dispute this assessment
If any published claim about this server -- its score, a risk flag, a capability classification, or its taxonomy -- is factually wrong, tell us what evidence shows and we will review it. This does not require claiming or verifying ownership of the server first.
Verify responds to disputes within 5 business days and resolves them within 15.
Dispute history
No disputes filed for this server.
Risks
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes | Evidence |
|---|---|---|---|---|---|
get_pricing |
read | Low | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"capabilities": [
"read"
],
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
register_agent |
write | Medium | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": false
},
"capabilities": [
"write"
],
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"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",
"type": "string"
},
"name": {
"description": "Display name for the account. Optional; the profile name is used on documents regardless",
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
start_job_search |
network | Medium | arbitrary network egress | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"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_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 \u2014 you do not need to render a file. Supply either cv_json or cv_base64",
"properties": {
"awards": {
"items": {
"properties": {
"awarder": {
"maxLength": 200,
"type": "string"
},
"date": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
},
"title": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"basics": {
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"label": {
"maxLength": 200,
"type": "string"
},
"location": {
"properties": {
"address": {
"maxLength": 200,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"countryCode": {
"maxLength": 10,
"type": "string"
},
"postalCode": {
"maxLength": 30,
"type": "string"
},
"region": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"name": {
"maxLength": 120,
"type": "string"
},
"phone": {
"maxLength": 60,
"type": "string"
},
"profiles": {
"items": {
"properties": {
"network": {
"maxLength": 80,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
},
"username": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"summary": {
"maxLength": 4000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"certificates": {
"items": {
"properties": {
"date": {
"maxLength": 40,
"type": "string"
},
"issuer": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"education": {
"items": {
"properties": {
"area": {
"maxLength": 200,
"type": "string"
},
"courses": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"institution": {
"maxLength": 200,
"type": "string"
},
"score": {
"maxLength": 60,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"studyType": {
"maxLength": 100,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"interests": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"languages": {
"items": {
"properties": {
"fluency": {
"maxLength": 80,
"type": "string"
},
"language": {
"maxLength": 80,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"projects": {
"items": {
"properties": {
"description": {
"maxLength": 3000,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"name": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"publications": {
"items": {
"properties": {
"name": {
"maxLength": 300,
"type": "string"
},
"publisher": {
"maxLength": 200,
"type": "string"
},
"releaseDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"skills": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 60,
"type": "array"
},
"level": {
"maxLength": 60,
"type": "string"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
},
"volunteer": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"work": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
}
},
"type": "object"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
},
"profile": {
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking",
"properties": {
"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_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_email": {
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status",
"type": "string"
},
"cfg_industries": {
"description": "Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones",
"type": "string"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"items": {
"type": "string"
},
"type": "array"
},
"cfg_location": {
"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",
"type": "string"
},
"cfg_location_preference": {
"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",
"type": "string"
},
"cfg_name": {
"description": "Full name of the job seeker, as it should appear on the tailored CV",
"type": "string"
},
"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_seniority": {
"description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_eu": {
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_uk": {
"description": "Include roles advertised as remote within the UK",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_usa": {
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_work_style": {
"description": "remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement",
"enum": [
"remote_only",
"mix",
"hybrid"
],
"type": "string"
}
},
"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",
"cfg_industries"
],
"type": "object"
}
},
"required": [
"profile"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress"
]
}
Dispute this classification
|
quick_job_search |
network | Medium | arbitrary network egress | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
},
"capabilities": [
"network"
],
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"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_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 \u2014 you do not need to render a file. Supply either cv_json or cv_base64",
"properties": {
"awards": {
"items": {
"properties": {
"awarder": {
"maxLength": 200,
"type": "string"
},
"date": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
},
"title": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"basics": {
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"label": {
"maxLength": 200,
"type": "string"
},
"location": {
"properties": {
"address": {
"maxLength": 200,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"countryCode": {
"maxLength": 10,
"type": "string"
},
"postalCode": {
"maxLength": 30,
"type": "string"
},
"region": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"name": {
"maxLength": 120,
"type": "string"
},
"phone": {
"maxLength": 60,
"type": "string"
},
"profiles": {
"items": {
"properties": {
"network": {
"maxLength": 80,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
},
"username": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"summary": {
"maxLength": 4000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"certificates": {
"items": {
"properties": {
"date": {
"maxLength": 40,
"type": "string"
},
"issuer": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"education": {
"items": {
"properties": {
"area": {
"maxLength": 200,
"type": "string"
},
"courses": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"institution": {
"maxLength": 200,
"type": "string"
},
"score": {
"maxLength": 60,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"studyType": {
"maxLength": 100,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"interests": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"languages": {
"items": {
"properties": {
"fluency": {
"maxLength": 80,
"type": "string"
},
"language": {
"maxLength": 80,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"projects": {
"items": {
"properties": {
"description": {
"maxLength": 3000,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"name": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"publications": {
"items": {
"properties": {
"name": {
"maxLength": 300,
"type": "string"
},
"publisher": {
"maxLength": 200,
"type": "string"
},
"releaseDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"skills": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 60,
"type": "array"
},
"level": {
"maxLength": 60,
"type": "string"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
},
"volunteer": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"work": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
}
},
"type": "object"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
},
"profile": {
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking",
"properties": {
"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_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_email": {
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status",
"type": "string"
},
"cfg_industries": {
"description": "Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones",
"type": "string"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"items": {
"type": "string"
},
"type": "array"
},
"cfg_location": {
"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",
"type": "string"
},
"cfg_location_preference": {
"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",
"type": "string"
},
"cfg_name": {
"description": "Full name of the job seeker, as it should appear on the tailored CV",
"type": "string"
},
"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_seniority": {
"description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_eu": {
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_uk": {
"description": "Include roles advertised as remote within the UK",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_usa": {
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_work_style": {
"description": "remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement",
"enum": [
"remote_only",
"mix",
"hybrid"
],
"type": "string"
}
},
"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",
"cfg_industries"
],
"type": "object"
}
},
"required": [
"profile"
],
"type": "object"
},
"risk_flags": [
"arbitrary_network_egress"
]
}
Dispute this classification
|
get_search_status |
read | Low | none | No explicit safeguard hints detected. |
Schema & evidence{
"annotations": {
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"capabilities": [
"read"
],
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
}
},
"type": "object"
},
"risk_flags": []
}
Dispute this classification
|
Write-action governance
Status detail: No high-risk write actions; auth boundary is oauth or auth required with 0 safeguard(s) and 0 confirmation signal(s).
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
| No high-risk tools were detected on the latest run. | |||
Recommended runtime policy
No policy blockers under the default policy stance.
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
| No newly added actions. | ||
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Critical alerts
Compatibility
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• Warningconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Evidence provenance
action_safety_probe• Warning
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Client compatibility gate details
Remediation checklist
- Limit the exposed surface to search/fetch-style read tools.
- Remove or isolate write, delete, and exec-capable tools before using this read/search-only client profile.
- Remove export, bulk, mutating, and high-blast-radius exposure before certifying company-knowledge use.
- Satisfy OAuth, compatibility, and connector-refresh requirements before using the Messages API remote MCP path.
- Resolve transport compliance issues before wider client rollout.
Remediation checklist
- Limit the exposed surface to search/fetch-style read tools.
- Remove or isolate write, delete, and exec-capable tools before using this read/search-only client profile.
- Remove export, bulk, mutating, and high-blast-radius exposure before certifying company-knowledge use.
- Satisfy OAuth, compatibility, and connector-refresh requirements before using the Messages API remote MCP path.
- Resolve transport compliance issues before wider client rollout.
Remediation checklist
- Add confirmation or dry-run semantics for: register_agent, start_job_search, quick_job_search.
- Confirm the flagged action-safety risk before treating this as write-safe.
Verdict traces
- No active alert triggers.
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Not client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Not client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing blocked | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Passes
- frozen_tool_snapshot_refresh: Passes
- request_association: Not Assessed
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Recommended for
Evidence
Current trust snapshot
trustsnap_d1bf5f4b71b3a5cdCanonical machine links
Evidence confidence
Latest validation evidence
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Warning | n/a | 2 egress-capable, 3 declared non-read-only, non-read capabilities: write tool(s); auth present; safeguards=0; confirmation=none. |
advanced_capabilities_probe |
Warning | n/a | Only 1 capability signal(s): structured outputs. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: request association. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 443.6 ms | Check completed |
initialize |
OK | 185.6 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
OK | 162.4 ms | 1 authorization server(s) |
oauth_protected_resource |
OK | 439.2 ms | 1 authorization server(s) |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
OK | 789.5 ms | authorization_endpoint, backchannel_logout_supported, claims_supported, code_challenge_methods_supported |
probe_noise_resilience |
OK | 479.8 ms | Fetched https://jobero.ai/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 948.1 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
Not_Assessed | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
Missing | 2866.8 ms | not supported |
schema_divergence_probe |
Missing | n/a | no server card tools |
server_card |
OK | 411.7 ms | $schema, _meta, description, icons |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Warning | n/a | Scopes=checkout, email, offline access, openid, +5 more; broad scopes=searches:write. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 479.4 ms | 5 tool(s) exposed |
transport_compliance_probe |
Warning | 358.1 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 142.3 ms | No completions evidence; no pagination evidence; tasks missing. |
Known versions
1.0.0
Public server reputation
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Degraded |
|
| OAuth-required connect | Passes |
|
| Safe write flow with confirmation | Degraded |
|
Utility coverage
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Validation diff
Regressed checks: none
Improved checks: none
Newly assessed dimensions: none
No longer assessed dimensions: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
| No component deltas between the latest two runs. | |||
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | Jobero job search |
| Version | n/a | 1.0.0 |
| Homepage | n/a | n/a |
Active alerts
No active alerts for the current server state.
Aliases & registry graph
| Identifier | Source | Canonical | Identity evidence | Score |
|---|---|---|---|---|
ai.jobero/job-search |
official_registry | yes | canonical | 72.9 |
Alias consolidation
Strong alias identity requires matching remote URL, server-card URL, repository slug, or explicit registry cross-reference; shared provider namespace alone is not identity.
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Fix it
Why this score?
Algorithmic score breakdown
1 component(s) not assessed for this run: Provenance Divergence
Experimental candidate components
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Add an explicit confirm/dry-run parameter or two-step confirmation flow to write, delete, exec, and egress-capable tools before they can make destructive changes.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Advertise a current MCP protocol revision (2025-06-18 or later) in both the initialize response and the MCP-Protocol-Version header.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | |
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Persist session state keyed by Mcp-Session-Id and honor Last-Event-ID on GET reconnects so clients can resume a dropped Streamable HTTP session.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Advertise only the advanced capabilities (roots, sampling, elicitation) you have actually implemented end to end in the initialize capabilities object.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Utility Coverage | 0/4 | -4.0 |
| Resource Contract | 0/4 | -4.0 |
| Request Association | 0/4 | -4.0 |
| Prompt Contract | 0/4 | -4.0 |
| Advanced Capability Coverage | 0/4 | -4.0 |
| Dependency Supply Chain Signal | 1/4 | -3.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Egress SSRF Resilience | 2/4 | -2.0 |
| Discovery Metadata | 2/4 | -2.0 |
| Action Safety | 2/4 | -2.0 |
Compatibility profiles
Connector URL: https://jobero.ai/mcp # Complete OAuth in the client when prompted. # Server: ai.jobero/job-search
{
"mcpServers": {
"job-search": {
"command": "npx",
"args": ["mcp-remote", "https://jobero.ai/mcp"]
}
}
}
smithery mcp add "https://jobero.ai/mcp"
curl -sS https://jobero.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Governance
MCP TrustOps
TrustOps turns this report into operational controls: validation targets and SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/decideAlert subscription types
MCP Runtime hosting
Verify Hosted MCP turns a trusted server report into a managed remote MCP endpoint with GitHub deployment provenance, sandbox policy, encrypted secrets, release history, rollback, and audit/usage events.
/hosted/{namespace}/{name}/mcp| Deployment | Status | Endpoint | Release |
|---|---|---|---|
| No hosted runtime deployments yet. | |||
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewInstall snippets
Connector URL: https://jobero.ai/mcp # Complete OAuth in the client when prompted. # Server: ai.jobero/job-search
{
"mcpServers": {
"job-search": {
"command": "npx",
"args": ["mcp-remote", "https://jobero.ai/mcp"]
}
}
}
smithery mcp add "https://jobero.ai/mcp"
curl -sS https://jobero.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.ai.jobero/job-search.History
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| Aug 12, 2026 02:14:50 PM UTC | Healthy | 72.9 | 8211.6 ms | 5 |
| Aug 12, 2026 08:13:54 AM UTC | Healthy | 72.9 | 8937.1 ms | 5 |
| Aug 12, 2026 02:13:40 AM UTC | Healthy | 72.9 | 5454.4 ms | not fetched |
| Aug 11, 2026 08:12:32 PM UTC | Healthy | 72.9 | 5569.2 ms | not fetched |
| Aug 11, 2026 02:12:24 PM UTC | Healthy | 73.4 | 5454.7 ms | not fetched |
| Aug 11, 2026 08:11:49 AM UTC | Healthy | 73.4 | 4969.8 ms | not fetched |
| Aug 11, 2026 02:11:29 AM UTC | Healthy | 73.4 | 5365.0 ms | not fetched |
| Aug 10, 2026 07:54:02 PM UTC | Healthy | 73.4 | 6004.9 ms | not fetched |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Aug 12, 2026 02:14:50 PM UTC | Healthy | 72.9 | 2025-03-26 | oauth_supported | 5 | 0 | none |
| Aug 12, 2026 08:13:54 AM UTC | Healthy | 72.9 | 2025-03-26 | oauth_supported | 5 | 0 | none |
| Aug 12, 2026 02:13:40 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 11, 2026 08:12:32 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 11, 2026 02:12:24 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 11, 2026 08:11:49 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 11, 2026 02:11:29 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 10, 2026 07:54:02 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 10, 2026 01:53:48 PM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
| Aug 10, 2026 07:53:13 AM UTC | Healthy | n/a | unknown | unknown | not fetched | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Aug 12, 2026 02:14:42 PM UTC | Completed | Healthy | 8211.6 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, schema_divergence_probe, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Aug 12, 2026 08:13:45 AM UTC | Completed | Healthy | 8937.1 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, schema_divergence_probe, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Aug 12, 2026 02:13:34 AM UTC | Completed | Healthy | 5454.4 ms | not fetched (not counted in confidence) |
| Aug 11, 2026 08:12:27 PM UTC | Completed | Healthy | 5569.2 ms | not fetched (not counted in confidence) |
| Aug 11, 2026 02:12:18 PM UTC | Completed | Healthy | 5454.7 ms | not fetched (not counted in confidence) |
| Aug 11, 2026 08:11:44 AM UTC | Completed | Healthy | 4969.8 ms | not fetched (not counted in confidence) |
| Aug 11, 2026 02:11:24 AM UTC | Completed | Healthy | 5365.0 ms | not fetched (not counted in confidence) |
| Aug 10, 2026 07:53:56 PM UTC | Completed | Healthy | 6004.9 ms | not fetched (not counted in confidence) |
| Aug 10, 2026 01:53:43 PM UTC | Completed | Healthy | 4444.9 ms | not fetched (not counted in confidence) |
| Aug 10, 2026 07:53:07 AM UTC | Completed | Healthy | 6791.1 ms | not fetched (not counted in confidence) |
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Aug 12, 2026 02:14:50 PM UTC | Latest validation: healthy | Score 72.9 with status healthy. |
Technical details
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": true,
"confirmation_signals": [],
"reason": null,
"safeguard_count": 0,
"summary": {
"annotation_conflict_tools": 0,
"bulk_access_tools": 0,
"capability_distribution": {
"network": 2,
"read": 2,
"write": 1
},
"declared_non_read_only_tools": 3,
"destructive_tools": 0,
"egress_tools": 2,
"exec_tools": 0,
"has_mutating_capability": true,
"has_non_read_capability": true,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 2,
"medium": 3
},
"secret_tools": 0,
"tool_count": 5
}
},
"latency_ms": null,
"status": "warning"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": true
},
"enabled": [
"structured_outputs"
],
"enabled_count": 1,
"initialize_capability_keys": [
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"request_association"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": false,
"server_card": true,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 0,
"tool_count": 5,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "f12cf5884b506cfc8fd65bd766ed1799d0b5dd9cba917e1d12c067746af9544d",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 443.56,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": {
"listChanged": true
}
},
"instructions": "Jobero runs paid job searches. There are two: start_job_search returns 7 matched roles in about an hour for \u20ac9.99, and quick_job_search returns the single best current role in a few minutes for $2.50. Both include a CV and cover letter tailored to each role, returned as markdown by get_search_status and emailed as PDFs. There are no free searches: call get_pricing, register with register_agent, then start a search and poll get_search_status. Credits are per product, so a quick credit does not pay for a full search. A wallet-equipped agent needs no separate purchase step \u2014 either tool answers with an x402 PaymentRequired and runs as soon as the call is retried with payment in _meta[\"x402/payment\"].",
"protocolVersion": "2025-03-26",
"serverInfo": {
"icons": [
{
"mimeType": "image/png",
"sizes": [
"512x512"
],
"src": "https://jobero.ai/android-chrome-512x512.png"
},
{
"mimeType": "image/png",
"sizes": [
"192x192"
],
"src": "https://jobero.ai/android-chrome-192x192.png"
},
{
"mimeType": "image/png",
"sizes": [
"32x32"
],
"src": "https://jobero.ai/favicon-32x32.png"
}
],
"name": "jobero",
"title": "Jobero \u2014 paid job search",
"version": "1.1.0",
"websiteUrl": "https://jobero.ai"
}
}
},
"url": "https://jobero.ai/mcp"
},
"latency_ms": 185.64,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": true,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"agent_auth": {
"claim_endpoint": "https://jobero.ai/api/v1/agent/identity/claim",
"credential_types_supported": [
"api_key"
],
"events_endpoint": "https://jobero.ai/api/v1/agent/events",
"events_supported": [],
"identity_assertion": {
"assertion_types_supported": []
},
"identity_endpoint": "https://jobero.ai/api/v1/agent/identity",
"identity_types_supported": [
"anonymous",
"service_auth"
],
"register_uri": "https://jobero.ai/api/v1/register",
"revocation_uri": "https://jobero.ai/api/v1/keys",
"skill": "https://jobero.ai/auth.md"
},
"authorization_endpoint": "https://jobero.ai/sign-in",
"authorization_servers": [
"https://jobero.ai"
],
"bearer_methods_supported": [
"header"
],
"grant_types_supported": [
"urn:jobero:agent-auth:grant-type:api-key"
],
"issuer": "https://jobero.ai",
"registration_endpoint": "https://jobero.ai/api/v1/register",
"resource": "https://jobero.ai/api/v1",
"response_types_supported": [
"token"
],
"revocation_endpoint": "https://jobero.ai/api/v1/keys",
"scopes_supported": [
"searches:read",
"searches:write",
"checkout"
],
"service_documentation": "https://jobero.ai/auth.md",
"token_endpoint": "https://jobero.ai/api/v1/register",
"token_endpoint_auth_methods_supported": [
"none"
]
},
"url": "https://jobero.ai/.well-known/oauth-authorization-server"
},
"latency_ms": 162.44,
"status": "ok"
},
"oauth_protected_resource": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"authorization_servers": [
"https://jobero.ai"
],
"bearer_methods_supported": [
"header"
],
"resource": "https://jobero.ai/api/v1",
"resource_documentation": "https://jobero.ai/auth.md",
"resource_name": "Jobero",
"scopes_supported": [
"searches:read",
"searches:write",
"checkout"
]
},
"url": "https://jobero.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 439.19,
"status": "ok"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.jobero/job-search",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"authorization_endpoint": "https://jobero.ai/__clerk/oauth/authorize",
"backchannel_logout_supported": false,
"claims_supported": [
"iss",
"iat",
"email",
"family_name",
"name",
"sub",
"aud",
"exp",
"email_verified",
"given_name",
"preferred_username",
"picture"
],
"code_challenge_methods_supported": [
"S256"
],
"frontchannel_logout_supported": false,
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"id_token_signing_alg_values_supported": [
"RS256"
],
"introspection_endpoint": "https://jobero.ai/__clerk/oauth/token_info",
"issuer": "https://jobero.ai/__clerk",
"jwks_uri": "https://jobero.ai/__clerk/.well-known/jwks.json",
"response_modes_supported": [
"form_post",
"query"
],
"response_types_supported": [
"code"
],
"revocation_endpoint": "https://jobero.ai/__clerk/oauth/token/revoke",
"scopes_supported": [
"public_metadata",
"private_metadata",
"openid",
"offline_access",
"email",
"profile"
],
"subject_types_supported": [
"public"
],
"token_endpoint": "https://jobero.ai/__clerk/oauth/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"none",
"client_secret_post"
],
"userinfo_endpoint": "https://jobero.ai/__clerk/oauth/userinfo"
},
"url": "https://jobero.ai/.well-known/openid-configuration"
},
"latency_ms": 789.45,
"status": "ok"
},
"probe_noise_resilience": {
"details": {
"consent_error": null,
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://jobero.ai/robots.txt",
"validation_disallowed": false
},
"latency_ms": 479.81,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://jobero.ai/mcp"
},
"latency_ms": 948.06,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"comparable_field_count": 0,
"compared_fields": [
"title",
"version",
"homepage",
"repository"
],
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 3,
"readable_sources": [
"registry",
"server_card"
],
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": "Jobero job search",
"server_card_version": "1.0.0"
},
"latency_ms": null,
"status": "not_assessed"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 5,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://jobero.ai/mcp"
},
"latency_ms": 2866.78,
"status": "missing"
},
"schema_divergence_probe": {
"details": {
"auth_scheme_mismatch": false,
"card_server_name": null,
"card_server_version": null,
"compared_dimensions": [
"server_name",
"server_version",
"declared_vs_observed_auth",
"tool_membership",
"parameter_names",
"required_parameters",
"parameter_types",
"output_schema_presence"
],
"compared_tool_count": 0,
"live_server_name": "jobero",
"live_server_version": "1.1.0",
"reason": "no_server_card_tools",
"server_name_mismatch": false,
"server_version_mismatch": false
},
"latency_ms": null,
"status": "missing"
},
"server_card": {
"details": {
"headers": {
"content-type": "application/mcp-server-card+json"
},
"http_status": 200,
"payload": {
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
"_meta": {
"ai.jobero/payment": {
"card": "https://jobero.ai/api/v1/checkout",
"x402": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "Base mainnet",
"pay_to": "0x6f5e9009157eceb33713af63057293b97cbf6415",
"prices": [
{
"amount_atomic": "11500000",
"amount_usdc": "11.50",
"credits": 1,
"pack": "pack1",
"product": "search"
},
{
"amount_atomic": "28750000",
"amount_usdc": "28.75",
"credits": 3,
"pack": "pack3",
"product": "search"
},
{
"amount_atomic": "2500000",
"amount_usdc": "2.50",
"credits": 1,
"pack": "quick1",
"product": "quick"
}
],
"transport": "x402 MCP: start_job_search and quick_job_search return PaymentRequired; retry with _meta[\"x402/payment\"]"
}
},
"ai.jobero/service": {
"docs": "https://jobero.ai/auth.md",
"free_tier": false,
"openapi": "https://jobero.ai/openapi.json",
"pricing": "https://jobero.ai/pricing",
"products": [
{
"jobs": 7,
"price": "EUR 9.99",
"tool": "start_job_search",
"typical_time": "about an hour"
},
{
"jobs": 1,
"price": "2.50 USDC",
"tool": "quick_job_search",
"typical_time": "3 to 8 minutes"
}
],
"rest_api": "https://jobero.ai/api/v1",
"tools": [
"get_pricing",
"register_agent",
"start_job_search",
"quick_job_search",
"get_search_status"
]
}
},
"description": "Paid job search: 7 matched roles, or one quick match. Tailored CV and cover letter.",
"icons": [
{
"mimeType": "image/png",
"sizes": [
"512x512"
],
"src": "https://jobero.ai/android-chrome-512x512.png"
},
{
"mimeType": "image/png",
"sizes": [
"192x192"
],
"src": "https://jobero.ai/android-chrome-192x192.png"
}
],
"name": "ai.jobero/job-search",
"remotes": [
{
"headers": [
{
"description": "Bearer <agent API key>. Optional: get_pricing and register_agent work without one.",
"isRequired": false,
"isSecret": true,
"name": "Authorization",
"placeholder": "Bearer jbr_live_\u2026"
}
],
"supportedProtocolVersions": [
"2025-11-25",
"2025-06-18",
"2025-03-26",
"2024-11-05"
],
"type": "streamable-http",
"url": "https://jobero.ai/mcp"
}
],
"title": "Jobero job search",
"version": "1.0.0",
"websiteUrl": "https://jobero.ai/agents"
},
"url": "https://jobero.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 411.66,
"status": "ok"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [
"searches:write"
],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": true,
"scope_specificity_ratio": 0.2727,
"step_up_signals": [],
"supported_scopes": [
"checkout",
"email",
"offline_access",
"openid",
"private_metadata",
"profile",
"public_metadata",
"searches:read",
"searches:write"
]
},
"latency_ms": null,
"status": "warning"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 5,
"previous_tool_count": 5,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "text/event-stream"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "What a Jobero search costs and how to pay for it, in card and stablecoin terms. No auth required.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "get_pricing",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"card_checkout": {
"description": "URL for card payment",
"type": "string"
},
"credits_are_per_product": {
"description": "Always true: a quick credit cannot pay for a full search",
"type": "boolean"
},
"free_searches": {
"description": "Always false: registration grants no credits",
"type": "boolean"
},
"packs": {
"description": "Buyable credit packs",
"items": {
"additionalProperties": false,
"properties": {
"buys": {
"description": "Which product these credits are valid for: search or quick",
"type": "string"
},
"credits": {
"description": "How many runs the pack buys",
"type": "number"
},
"description": {
"type": "string"
},
"pack": {
"description": "Pack code to pass to checkout or to pay for over x402",
"type": "string"
},
"price": {
"description": "Human-readable price",
"type": "string"
}
},
"required": [
"pack",
"credits",
"price",
"buys",
"description"
],
"type": "object"
},
"type": "array"
},
"products": {
"description": "The two things Jobero sells",
"items": {
"additionalProperties": false,
"properties": {
"price": {
"description": "Human-readable price",
"type": "string"
},
"tool": {
"description": "Which tool buys this product",
"type": "string"
},
"typical_time": {
"description": "How long delivery usually takes",
"type": "string"
},
"unit": {
"description": "What one purchase delivers",
"type": "string"
}
},
"required": [
"tool",
"unit",
"price",
"typical_time"
],
"type": "object"
},
"type": "array"
},
"service": {
"description": "Service name",
"type": "string"
},
"x402": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"asset": {
"description": "Token accepted, USDC",
"type": "string"
},
"how": {
"description": "How to complete the payment loop",
"type": "string"
},
"network": {
"description": "Chain the payment settles on",
"type": "string"
},
"pay_to": {
"description": "Receiving address",
"type": "string"
},
"prices": {
"additionalProperties": {
"type": "string"
},
"description": "Pack code to atomic USDC amount",
"propertyNames": {
"type": "string"
},
"type": "object"
}
},
"required": [
"network",
"asset",
"pay_to",
"prices",
"how"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Stablecoin payment terms, null if x402 is not configured"
}
},
"required": [
"service",
"products",
"packs",
"credits_are_per_product",
"card_checkout",
"x402",
"free_searches"
],
"type": "object"
},
"title": "Get pricing"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": false
},
"description": "Create an agent identity and receive an API key. Registration is free and includes no free searches.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"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",
"type": "string"
},
"name": {
"description": "Display name for the account. Optional; the profile name is used on documents regardless",
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"name": "register_agent",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"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"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
},
"message": {
"description": "What to do about the error, when one is present",
"type": "string"
},
"next": {
"description": "Suggested next call",
"type": "string"
},
"note": {
"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"
}
},
"type": "object"
},
"title": "Register for an API key"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
},
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"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_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 \u2014 you do not need to render a file. Supply either cv_json or cv_base64",
"properties": {
"awards": {
"items": {
"properties": {
"awarder": {
"maxLength": 200,
"type": "string"
},
"date": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
},
"title": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"basics": {
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"label": {
"maxLength": 200,
"type": "string"
},
"location": {
"properties": {
"address": {
"maxLength": 200,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"countryCode": {
"maxLength": 10,
"type": "string"
},
"postalCode": {
"maxLength": 30,
"type": "string"
},
"region": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"name": {
"maxLength": 120,
"type": "string"
},
"phone": {
"maxLength": 60,
"type": "string"
},
"profiles": {
"items": {
"properties": {
"network": {
"maxLength": 80,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
},
"username": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"summary": {
"maxLength": 4000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"certificates": {
"items": {
"properties": {
"date": {
"maxLength": 40,
"type": "string"
},
"issuer": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"education": {
"items": {
"properties": {
"area": {
"maxLength": 200,
"type": "string"
},
"courses": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"institution": {
"maxLength": 200,
"type": "string"
},
"score": {
"maxLength": 60,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"studyType": {
"maxLength": 100,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"interests": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"languages": {
"items": {
"properties": {
"fluency": {
"maxLength": 80,
"type": "string"
},
"language": {
"maxLength": 80,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"projects": {
"items": {
"properties": {
"description": {
"maxLength": 3000,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"name": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"publications": {
"items": {
"properties": {
"name": {
"maxLength": 300,
"type": "string"
},
"publisher": {
"maxLength": 200,
"type": "string"
},
"releaseDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"skills": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 60,
"type": "array"
},
"level": {
"maxLength": 60,
"type": "string"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
},
"volunteer": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"work": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
}
},
"type": "object"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
},
"profile": {
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking",
"properties": {
"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_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_email": {
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status",
"type": "string"
},
"cfg_industries": {
"description": "Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones",
"type": "string"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"items": {
"type": "string"
},
"type": "array"
},
"cfg_location": {
"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",
"type": "string"
},
"cfg_location_preference": {
"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",
"type": "string"
},
"cfg_name": {
"description": "Full name of the job seeker, as it should appear on the tailored CV",
"type": "string"
},
"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_seniority": {
"description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_eu": {
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_uk": {
"description": "Include roles advertised as remote within the UK",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_usa": {
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_work_style": {
"description": "remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement",
"enum": [
"remote_only",
"mix",
"hybrid"
],
"type": "string"
}
},
"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",
"cfg_industries"
],
"type": "object"
}
},
"required": [
"profile"
],
"type": "object"
},
"name": "start_job_search",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"credits_remaining": {
"description": "Credits left for this product after the spend",
"type": "number"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
},
"message": {
"description": "What happens next and roughly when, or what to do about the error",
"type": "string"
},
"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"
}
},
"type": "object"
},
"title": "Start a job search"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
},
"description": "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\"].",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"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_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 \u2014 you do not need to render a file. Supply either cv_json or cv_base64",
"properties": {
"awards": {
"items": {
"properties": {
"awarder": {
"maxLength": 200,
"type": "string"
},
"date": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
},
"title": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"basics": {
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"label": {
"maxLength": 200,
"type": "string"
},
"location": {
"properties": {
"address": {
"maxLength": 200,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"countryCode": {
"maxLength": 10,
"type": "string"
},
"postalCode": {
"maxLength": 30,
"type": "string"
},
"region": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"name": {
"maxLength": 120,
"type": "string"
},
"phone": {
"maxLength": 60,
"type": "string"
},
"profiles": {
"items": {
"properties": {
"network": {
"maxLength": 80,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
},
"username": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"summary": {
"maxLength": 4000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"certificates": {
"items": {
"properties": {
"date": {
"maxLength": 40,
"type": "string"
},
"issuer": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"education": {
"items": {
"properties": {
"area": {
"maxLength": 200,
"type": "string"
},
"courses": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"institution": {
"maxLength": 200,
"type": "string"
},
"score": {
"maxLength": 60,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"studyType": {
"maxLength": 100,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"interests": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 30,
"type": "array"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"languages": {
"items": {
"properties": {
"fluency": {
"maxLength": 80,
"type": "string"
},
"language": {
"maxLength": 80,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"projects": {
"items": {
"properties": {
"description": {
"maxLength": 3000,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"name": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"publications": {
"items": {
"properties": {
"name": {
"maxLength": 300,
"type": "string"
},
"publisher": {
"maxLength": 200,
"type": "string"
},
"releaseDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 1000,
"type": "string"
}
},
"type": "object"
},
"maxItems": 30,
"type": "array"
},
"skills": {
"items": {
"properties": {
"keywords": {
"items": {
"maxLength": 80,
"type": "string"
},
"maxItems": 60,
"type": "array"
},
"level": {
"maxLength": 60,
"type": "string"
},
"name": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
},
"volunteer": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"work": {
"items": {
"properties": {
"company": {
"maxLength": 200,
"type": "string"
},
"endDate": {
"maxLength": 40,
"type": "string"
},
"highlights": {
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"location": {
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"position": {
"maxLength": 200,
"type": "string"
},
"startDate": {
"maxLength": 40,
"type": "string"
},
"summary": {
"maxLength": 3000,
"type": "string"
},
"url": {
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"maxItems": 40,
"type": "array"
}
},
"type": "object"
},
"cv_type": {
"description": "Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied",
"type": "string"
},
"profile": {
"description": "Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking",
"properties": {
"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_advisory_open": {
"default": "yes",
"description": "Whether to include advisory, fractional, board and consulting roles alongside employment",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_email": {
"description": "Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status",
"type": "string"
},
"cfg_industries": {
"description": "Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones",
"type": "string"
},
"cfg_languages": {
"default": [
"english"
],
"description": "Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped",
"items": {
"type": "string"
},
"type": "array"
},
"cfg_location": {
"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",
"type": "string"
},
"cfg_location_preference": {
"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",
"type": "string"
},
"cfg_name": {
"description": "Full name of the job seeker, as it should appear on the tailored CV",
"type": "string"
},
"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_seniority": {
"description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered",
"type": "string"
},
"cfg_share_with_employers": {
"default": "no",
"description": "Consent to share the profile with employers. \"no\" keeps the search entirely one-way",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_eu": {
"description": "Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_remote_uk": {
"description": "Include roles advertised as remote within the UK",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_want_usa": {
"description": "Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide",
"enum": [
"yes",
"no"
],
"type": "string"
},
"cfg_work_style": {
"description": "remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement",
"enum": [
"remote_only",
"mix",
"hybrid"
],
"type": "string"
}
},
"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",
"cfg_industries"
],
"type": "object"
}
},
"required": [
"profile"
],
"type": "object"
},
"name": "quick_job_search",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"credits_remaining": {
"description": "Credits left for this product after the spend",
"type": "number"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
},
"message": {
"description": "What happens next and roughly when, or what to do about the error",
"type": "string"
},
"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"
}
},
"type": "object"
},
"title": "Quick job match"
},
{
"annotations": {
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Progress of a search, and the matched roles with the reason each was picked once it finishes.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
}
},
"type": "object"
},
"name": "get_search_status",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"done": {
"description": "True once the run has finished, whether or not it found anything",
"type": "boolean"
},
"error": {
"description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"",
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"matches": {
"description": "The delivered roles, each with its tailored documents. Absent until the run succeeds",
"items": {
"additionalProperties": false,
"properties": {
"company": {
"description": "Hiring company",
"type": "string"
},
"documents": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"cover_letter_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "A cover letter written for this specific role, as markdown"
},
"cv_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The CV rewritten for this specific role, as markdown"
}
},
"required": [
"cv_markdown",
"cover_letter_markdown"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The tailored documents for this role. Null while the run is still going, and on older runs that predate document return"
},
"match_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why this role was picked for this profile"
},
"rank": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Position in the delivered set, 1 is the strongest match"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Fit score out of 100, higher is better"
},
"title": {
"description": "Job title as advertised",
"type": "string"
},
"url": {
"description": "Link to the live posting",
"type": "string"
}
},
"required": [
"title",
"company",
"url"
],
"type": "object"
},
"type": "array"
},
"message": {
"description": "Progress in plain language while running, or what to do about the error",
"type": "string"
},
"plan": {
"description": "Which product this run was: one_off or agent_quick",
"type": "string"
},
"run_id": {
"type": "string"
},
"started_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"description": "running, success, no_matches or failed",
"type": "string"
},
"target_jobs": {
"description": "How many roles this run is meant to deliver",
"type": "number"
}
},
"type": "object"
},
"title": "Check a search"
}
]
}
},
"url": "https://jobero.ai/mcp"
},
"latency_ms": 479.4,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 358.14,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 142.31,
"status": "missing"
}
},
"failures": {},
"remote_url": "https://jobero.ai/mcp",
"server_card_payload": {
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
"_meta": {
"ai.jobero/payment": {
"card": "https://jobero.ai/api/v1/checkout",
"x402": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "Base mainnet",
"pay_to": "0x6f5e9009157eceb33713af63057293b97cbf6415",
"prices": [
{
"amount_atomic": "11500000",
"amount_usdc": "11.50",
"credits": 1,
"pack": "pack1",
"product": "search"
},
{
"amount_atomic": "28750000",
"amount_usdc": "28.75",
"credits": 3,
"pack": "pack3",
"product": "search"
},
{
"amount_atomic": "2500000",
"amount_usdc": "2.50",
"credits": 1,
"pack": "quick1",
"product": "quick"
}
],
"transport": "x402 MCP: start_job_search and quick_job_search return PaymentRequired; retry with _meta[\"x402/payment\"]"
}
},
"ai.jobero/service": {
"docs": "https://jobero.ai/auth.md",
"free_tier": false,
"openapi": "https://jobero.ai/openapi.json",
"pricing": "https://jobero.ai/pricing",
"products": [
{
"jobs": 7,
"price": "EUR 9.99",
"tool": "start_job_search",
"typical_time": "about an hour"
},
{
"jobs": 1,
"price": "2.50 USDC",
"tool": "quick_job_search",
"typical_time": "3 to 8 minutes"
}
],
"rest_api": "https://jobero.ai/api/v1",
"tools": [
"get_pricing",
"register_agent",
"start_job_search",
"quick_job_search",
"get_search_status"
]
}
},
"description": "Paid job search: 7 matched roles, or one quick match. Tailored CV and cover letter.",
"icons": [
{
"mimeType": "image/png",
"sizes": [
"512x512"
],
"src": "https://jobero.ai/android-chrome-512x512.png"
},
{
"mimeType": "image/png",
"sizes": [
"192x192"
],
"src": "https://jobero.ai/android-chrome-192x192.png"
}
],
"name": "ai.jobero/job-search",
"remotes": [
{
"headers": [
{
"description": "Bearer <agent API key>. Optional: get_pricing and register_agent work without one.",
"isRequired": false,
"isSecret": true,
"name": "Authorization",
"placeholder": "Bearer jbr_live_\u2026"
}
],
"supportedProtocolVersions": [
"2025-11-25",
"2025-06-18",
"2025-03-26",
"2024-11-05"
],
"type": "streamable-http",
"url": "https://jobero.ai/mcp"
}
],
"title": "Jobero job search",
"version": "1.0.0",
"websiteUrl": "https://jobero.ai/agents"
},
"server_identifier": "ai.jobero/job-search"
}
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://jobero.ai/agents
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://jobero.ai/mcp
- Server card: https://jobero.ai/.well-known/mcp/server-card.json
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header
Request association
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||