Search / de.nomado24/jobs
Nomado24 Remote Jobs
R0· no sign-inSearch 13,000+ remote/hybrid jobs in Germany/EU, open a posting, get market stats. Free, no auth.
v1.1.0 · active · website · descriptor JSON · versions
Search / de.nomado24/jobs
R0· no sign-inSearch 13,000+ remote/hybrid jobs in Germany/EU, open a posting, get market stats. Free, no auth.
v1.1.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"jobs": {
"type": "http",
"url": "https://api.nomado24.de/api/public/v1/mcp"
}
}
}claude mcp add --transport http jobs https://api.nomado24.de/api/public/v1/mcp[mcp_servers.jobs]
url = "https://api.nomado24.de/api/public/v1/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jobs": {
"type": "remote",
"url": "https://api.nomado24.de/api/public/v1/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"jobs": {
"type": "http",
"url": "https://api.nomado24.de/api/public/v1/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=jobs&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLm5vbWFkbzI0LmRlL2FwaS9wdWJsaWMvdjEvbWNwIn0%3D"
}{
"servers": {
"jobs": {
"type": "http",
"url": "https://api.nomado24.de/api/public/v1/mcp"
}
}
}{
"mcpServers": {
"jobs": {
"httpUrl": "https://api.nomado24.de/api/public/v1/mcp"
}
}
}extensions:
"jobs":
enabled: true
name: "jobs"
type: streamable_http
uri: "https://api.nomado24.de/api/public/v1/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations3 of 3 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 1,568 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes1 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagesearch_jobschangeddescription, input schemaSearch nomado24's remote/hybrid job board. Read-only, free, attribution required (see structuredContent.attribution). Answers over one of two contracts, chosen by the arguments you send. Send only q/language/page/per_page and you get the legacy v1 result shape with page-based paging. Send any structured filter (country, applicant_region, work_arrangement, employment_type, seniority, skills, salary_min/max, published_after, verified_after, source, company, sort, include_total) or a cursor and you get the v2 contract: richer job objects, per-posting provenance (salaryOrigin, firstSeenAt, lastVerifiedAt, verification.method, updatedAt), a corpus changeWatermark, a snapshotId and keyset paging via pagination.nextCursor. The two are mutually exclusive: page plus a structured filter is refused rather than silently resolved. Structured results omit the posting body and the per-field dataOrigin to stay cheap to read; call get_job for those. A filter nomado24 cannot answer honestly is refused with the reason, never answered with the unfiltered corpus. For the same reason pagination.total is null (totalRelation 'not_computed') whenever a post-projection filter (skills, seniority, salary bounds, employment_type=unknown) is in play — a null total is deliberate, not an error.
Search nomado24's remote/hybrid job board. Read-only, free, attribution required (see structuredContent.attribution). Answers over one of two contracts, chosen by the arguments you send. Send only q/language/page/per_page and you get the legacy v1 result shape with page-based paging. Send any structured filter (country, applicant_region, work_arrangement, employment_type, seniority, skills, salary_min/max, published_after, verified_after, source, company, sort, include_total) or a cursor and you get the v2 contract: richer job objects, per-posting provenance (salaryOrigin, firstSeenAt, lastVerifiedAt, verification.method, updatedAt), a corpus changeWatermark, a snapshotId and keyset paging via pagination.nextCursor. The two are mutually exclusive: page plus a structured filter is refused rather than silently resolved. Structured results omit the posting body and the per-field dataOrigin to stay cheap to read; call get_job for those. A filter nomado24 cannot answer honestly is refused with the reason, never answered with the unfiltered corpus. Structured pagination.total is currently null (totalRelation 'not_computed') for every query, because a current-text on-site-only serving gate cannot be counted accurately by the database. A null total is deliberate, not an error.
Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-99% ~updated-36d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://api.nomado24.de/api/public/v1/mcp streamable-http | none | yes | 99% | 584 ms | 2025-11-25 | 2026-10-19 |
get_jobread-only | Fetch ONE nomado24 job posting by id, with the complete v2 payload: the posting body where the source permits redistribution, per-field provenance (dataOrigin: who asserted each field, by which method, when), salaryOrigin, firstSeenAt, lastVerifiedAt with its verification method, and updatedAt (the last genuine content change). Returns an error result for an id that is not a live posting; expired and withdrawn postings are not served. Read-only, free, attribution required (see structuredContent.attribution). |
get_job_statisticsread-only | Get aggregate statistics (active jobs, new-this-week/month, top sources, salary ranges) for nomado24's remote-jobs board. No input required. |
search_jobsread-only | Search nomado24's remote/hybrid job board. Read-only, free, attribution required (see structuredContent.attribution). Answers over one of two contracts, chosen by the arguments you send. Send only q/language/page/per_page and you get the legacy v1 result shape with page-based paging. Send any structured filter (country, applicant_region, work_arrangement, employment_type, seniority, skills, salary_min/max, published_after, verified_after, source, company, sort, include_total) or a cursor and you get the v2 contract: richer job objects, per-posting provenance (salaryOrigin, firstSeenAt, lastVerifiedAt, verification.method, updatedAt), a corpus changeWatermark, a snapshotId and keyset paging via pagination.nextCursor. The two are mutually exclusive: page plus a structured filter is refused rather than silently resolved. Structured results omit the posting body and the per-field dataOrigin to stay cheap to read; call get_job for those. A filter nomado24 cannot answer honestly is refused with the reason, never answered with the unfiltered corpus. Structured pagination.total is currently null (totalRelation 'not_computed') for every query, because a current-text on-site-only serving gate cannot be counted accurately by the database. A null total is deliberate, not an error. |
Schemas: list_tools.
{
"name": "de.nomado24/jobs",
"title": "Nomado24 Remote Jobs",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://api.nomado24.de/api/public/v1/mcp",
"type": "streamable-http"
}
],
"version": "1.1.0",
"websiteUrl": "https://www.nomado24.de/en/developers",
"description": "Search 13,000+ remote/hybrid jobs in Germany/EU, open a posting, get market stats. Free, no auth."
}