Indeed MCP Server
Indeed MCP Server
Ein gehosteter MCP-Server (Model Context Protocol), der Claude, Cursor, Windsurf und jedem anderen MCP-Client zwei schreibgeschützte Indeed-Tools bereitstellt. Suchen Sie Stellenanzeigen nach Stichwort und Ort und lesen Sie eine einzelne Anzeige vollständig – alles als strukturiertes JSON, ohne Indeed-Entwicklerkonto und ohne Partnerfreigabe.
Er liest öffentliche Stellenanzeigen, die ein nicht angemeldeter Besucher sehen kann.
https://mcp.hasdata.com/api/mcp?apis=indeed
Inhalt
Related MCP server: Indeed Skills
Was Sie brauchen
Ein MCP-Client und ein HasData-API-Schlüssel vom Dashboard, kostenlos und ohne Karte erstellbar; die Testversion deckt etwa 200 Aufrufe zum 5-Credit-Tarif ab. Dies ist ein Remote-Server, daher ist der einfachste Weg eine URL und ein x-api-key-Header – ohne Container, den Sie ausführen müssen, und ohne Indeed-Entwicklerkonto im gesamten Ablauf. Ein Client, der nur stdio spricht, erreicht ihn über einen schlanken Launcher, der als @hasdata/indeed-mcp auf npm und hasdata-indeed-mcp auf PyPI veröffentlicht ist, wie unten gezeigt.
Schnellstart
Die Server-URL ist für jeden Client dieselbe. Wir haben sie in Claude Code und Claude Desktop praktisch ausprobiert. Die anderen Blöcke folgen dem jeweils dokumentierten Format der Clients für einen Remote-Server.
Feld | Wert |
URL |
|
Transport | HTTP, streamable |
Auth-Header |
|
Clients mit OAuth-Unterstützung können dieselbe URL als Connector hinzufügen und sich anmelden, ohne einen Schlüssel in eine Konfigurationsdatei einzutragen.
claude mcp add --transport http indeed "https://mcp.hasdata.com/api/mcp?apis=indeed" \
--header "x-api-key: HASDATA_API_KEY"Einstellungen, dann Connectors, dann Add custom connector, dann https://mcp.hasdata.com/api/mcp?apis=indeed einfügen und anmelden.
Für den Weg über die Konfigurationsdatei lädt Claude Desktop nur lokale (stdio) Server, daher erreicht es einen Remote-Server über einen stdio-Launcher. Das Paket @hasdata/indeed-mcp ist dieser Launcher und liest den Schlüssel aus der Umgebung. Fügen Sie dies zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": ["-y", "@hasdata/indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}Für Python statt Node tauschen Sie den Launcher gegen das PyPI-Paket, das uvx ohne manuelle Installation ausführt:
{
"mcpServers": {
"indeed": {
"command": "uvx",
"args": ["hasdata-indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}~/.cursor/mcp.json für jedes Projekt oder .cursor/mcp.json für ein einzelnes Projekt:
{
"mcpServers": {
"indeed": {
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf nennt das Feld serverUrl, nicht url:
{
"mcpServers": {
"indeed": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}.vscode/mcp.json im Workspace:
{
"servers": {
"indeed": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}Beispiel-Prompts
Prompts, kein Code. Fügen Sie einen ein, und der Agent wählt das Tool selbst aus. Jeder Prompt ist mit den Aufrufen annotiert, die er benötigt, denn jeder erfolgreiche Aufruf kostet 5 Credits.
Suchen Sie auf Indeed nach „python developer"-Jobs in New York, sortiert nach Datum, und nennen Sie mir die zehn neuesten mit Unternehmen und Gehalt.
Ein Aufruf, 5 Credits. Eine Listenseite enthält bereits Unternehmen, Gehalt und Veröffentlichungsdatum.
Nehmen Sie die oberste Anzeige aus dieser Suche und rufen Sie ihre vollständige Beschreibung und Anforderungen ab.
Ein Aufruf, 5 Credits. Die Auflistung enthält eine Job-URL, die das Details-Tool direkt übernimmt.
Finden Sie Jobs als „data analyst" in Austin und rufen Sie dann vollständige Details zu den drei ab, die ein Gehalt angeben.
Vier Aufrufe, 20 Credits. Eine Auflistung, dann ein Details-Aufruf für jeden der drei.
Vergleichen Sie die veröffentlichten Gehälter für „registered nurse" in Chicago mit denen in Houston.
Zwei Aufrufe, 10 Credits, eine Auflistung pro Stadt.
Ein Gehalt steht in einer Auflistung nur dann, wenn die Anzeige eines angibt. Ein Prompt wie „jobs with salary" filtert also nach dem Feld, statt es vorauszusetzen. Das Blättern kostet jedes Mal einen Aufruf über den start-Offset.
Tools
Zwei Tools, schreibgeschützt. Die Beispiele unten sind aus echten Aufrufen gekürzt, und die Zahlen ändern sich, wenn Indeed aktualisiert. Betrachten Sie sie als Strukturbeispiele. Jeder Tool-Name verlinkt auf seine Endpunkt-Referenz, die die vollständige Feldliste enthält.
Die Beispiele sind die Payload, nicht die gesamte Antwort. Ein tools/call-Ergebnis enthält einen Textblock, und dieser Text ist selbst JSON und enthält url, status, text und json, wobei die gescrapten Daten unter json liegen. Bei einer rohen JSON-RPC-Antwort ist der Pfad result.content[0].text, geparst, dann .json. Ein Chat-Client packt das für Sie aus; Code, der direkt mit dem Endpunkt spricht, tut das nicht.
Indeed-Jobangebote abrufen
hasdata_indeed_listing_getJobListings
Eine Seite mit Suchergebnissen nach Stichwort und Ort.
Parameter | Typ | Erforderlich | Hinweise |
| string | ja | Der Suchbegriff, wie ihn ein Bewerber eingeben würde |
| string | ja | Stadt und Bundesstaat oder eine beliebige Ortsangabe, die Indeed akzeptiert |
| string |
| |
| string | Eine Länderseite wie | |
| number | Ergebnis-Offset für die nächste Seite, eine Zahl und keine URL. Lesen Sie den Offset aus |
Gibt searchInformation, ein jobs-Array, peopleAlsoSearchFor und pagination zurück, dessen nextPage die URL der folgenden Seite ist. Jeder Job enthält title, company, location, url, eine kurze description, sponsored, das relative date und das absolute isoDate, ein details-Array mit Bezeichnungen wie Full-time und Hybrid work, ein benefits-Array sowie ein salary-Objekt, wenn die Anzeige eines angibt.
Eine Auflistung enthält
detailsals Array aus einfachen Zeichenketten. Das Job-Details-Tool unten gibtdetailsals Objekt mitjobType- undworkSetting-Arrays zurück. Gleicher Name, andere Form – lesen Sie also jedes gemäß seinem eigenen Tool.
{
"title": "Hedge Fund Application Developer",
"company": "TBA",
"location": "Stamford, CT 06901",
"url": "https://www.indeed.com/pagead/clk?...",
"sponsored": true,
"date": "30+ days ago",
"isoDate": "2025-06-03T17:22:54.869Z",
"details": ["Full-time", "Hybrid work"],
"benefits": ["Health insurance", "401(k)", "401(k) matching"],
"salary": { "min": 80000, "max": 150000, "type": "YEARLY" }
}Indeed-Jobdetails abrufen
hasdata_indeed_job_getJobDetails
Eine einzelne Anzeige vollständig anhand ihrer Job-URL.
Parameter | Typ | Erforderlich | Hinweise |
| string | ja | Eine Anzeigen-URL, das |
Gibt title, company, location, sponsored, ein details-Objekt mit jobType- und workSetting-Arrays, ein salary-Objekt, falls vorhanden, sowie den Anzeigentext sowohl als description (Klartext) als auch als descriptionHtml (derselbe Inhalt mit beibehaltenem Listen- und Absatz-Markup) zurück. Verwenden Sie descriptionHtml, wenn Sie die Struktur möchten, und description, wenn Sie einem Modell sauberen Text zuführen möchten.
{
"title": "Python Developer",
"company": "Think IT Technologies",
"location": "New York, NY 10114",
"sponsored": false,
"details": { "jobType": ["Contract"], "workSetting": ["In-person"] },
"salary": { "min": 60.5, "max": 65, "type": "HOURLY" },
"description": "Overview\nWe are seeking a Python Developer...",
"descriptionHtml": "<p><b>Overview</b></p><p>We are seeking a Python Developer...</p>"
}Fehler und Fehlerpfade
Ihr Client sieht bei einem Tool-Aufruf fast nie einen HTTP-Fehlercode. Die MCP-Schicht antwortet mit 200 und legt den Fehler in das Ergebnis, mit isError auf true und dem Grund als Text. Der Agent liest eine Nachricht, wo Sie eine Statuszeile erwarten würden.
Ein falscher Schlüssel erscheint als Tool-Ausgabe, nicht als fehlgeschlagene Verbindung. tools/list akzeptiert jeden nicht-leeren Schlüssel und gibt beide Tools zurück, sodass der Client seinen Handshake abschließt und Grün anzeigt. Der erste Tool-Aufruf kommt dann mit isError: true und dem Text HasData API error: 401 Unauthorized zurück. Achten Sie auf diese Zeichenkette, denn nichts früher im Ablauf meldet das Problem.
Ein fehlender Schlüssel ist der einzige echte HTTP-Fehler. Die Autorisierung erfolgt vor jedem Tool, und die Verbindung selbst schlägt mit 401 fehl. CORS-Header sind vorhanden, und ein Browser-Client liest den Status statt eines undurchsichtigen Netzwerkfehlers.
Ein Argument, das das Schema eines Tools verletzt, wird abgelehnt, bevor es zu einem Scrape kommt. Der Server antwortet mit isError: true und dem Text MCP error -32602: Input validation error und nennt das fehlerhafte Feld. Es wird nichts abgerufen und nichts berechnet.
Eine Suche ohne Treffer liefert ein erfolgreiches Ergebnis mit einem leeren jobs-Array, keinen Fehler. Eine Kombination aus Stichwort und Ort ohne offene Stellen kommt weiterhin mit requestMetadata.status auf ok zurück. Prüfen Sie die Länge des Arrays, bevor Sie iterieren.
Eine Anzeige, die entfernt wurde, gibt 400 mit requestMetadata.status auf error zurück. Indeed lässt Anzeigen schnell verfallen, daher kann eine URL aus einer alten Suche nicht mehr verfügbar sein.
Ergebnisse mit Daten enthalten außerdem eine requestMetadata.id, die es wert ist, im Support angegeben zu werden.
Preise, kostenlose Stufe und Limits
Jedes Indeed-Tool kostet 5 Credits pro erfolgreichem Aufruf. Die Antwortgröße ändert den Preis nicht. Eine Listenseite mit fünfzig Jobs kostet dasselbe wie eine mit zwei.
Die kostenlose Testversion umfasst 1.000 Credits über 30 Tage ohne Karte, also 200 Indeed-Aufrufe. Danach erhält ein aktives Konto weiterhin jeden Tag 100 Credits aufgeladen, sobald sein Guthaben unter 100 fällt. Ein Agent mit geringem Volumen läuft so dauerhaft auf der kostenlosen Stufe.
Bezahlte Pläne beginnen bei 49 $ pro Monat für 200.000 Credits, also 40.000 Aufrufe. Der Stückpreis sinkt mit dem Volumen: von 1,23 $ pro 1.000 Aufrufen im Einstiegsplan über 0,50 $ bei Business und 0,42 $ bei Growth bis 0,37 $ bei den größten High-Volume-Plänen.
Ihr Plan legt auch die Parallelität fest. Die kostenlose Testversion erlaubt 1 Anfrage gleichzeitig, Startup 15, Business 30, Growth 50, und die High-Volume-Pläne reichen von 200 bis 1.500. Behandeln Sie den Überlauf-Fall bei allem, was unbeaufsichtigt läuft, defensiv.
Eine Anfrage, die nicht mit 200 zurückkommt, wird nicht berechnet. Ein erfolgreicher Aufruf ohne Treffer ist trotzdem ein Aufruf.
Tool-Auswahl
Der apis-Query-Parameter entscheidet, welche Tools Ihr Agent sieht. Weniger Tools bedeutet weniger Kontext für Tool-Definitionen und weniger Gelegenheiten für das Modell, zum falschen zu greifen.
?apis=indeed the two tools in this repo
?apis=indeed,glassdoor add Glassdoor jobs
?apis=indeed,google_serp add Google searchDer Parameter akzeptiert Providernamen wie indeed und einzelne API-Namen wie indeed_listing. Falsch geschriebene Namen werden ignoriert. Wenn jeder Name falsch ist, schlägt die Anfrage mit 400 fehl, und der Body listet sowohl das, was er nicht erkannt hat, als auch jeden gültigen Wert auf. Wenn Sie den Parameter weglassen, legt derselbe Endpunkt alle 57 HasData-Tools offen.
Vergleich
Indeed hat seine öffentlichen Publisher- und Job-Search-APIs eingestellt, und der programmatische Zugriff läuft jetzt über genehmigte Partnerschaften und ATS-Integrationen statt über einen Self-Service-Schlüssel. Für das Lesen öffentlicher Einträge und Anzeigen bei beliebigen Suchanfragen gibt es keinen offenen offiziellen Weg.
Offizieller Indeed-Zugriff | Dieser Server | |
Zugriff | Partner- oder ATS-Genehmigung | Ein Schlüssel und eine URL |
Umfang | Was die Partnerschaft gewährt | Beliebige öffentliche Suche oder Anzeige |
Einrichtung | Business-Review | Keine |
Ausgabe | Hängt von der Integration ab | Strukturiertes JSON, salary vorab geparst |
Schreibzugriff | Bewerbungsabläufe für genehmigte Partner | Nur lesend, nur öffentliche Daten |
Was dieser Server nicht tut. Keine Bewerbungseinreichung, kein Arbeitgeber-Dashboard, keine Kandidatendaten, keine privaten Stellenausschreibungen. Er liest, was ein nicht angemeldeter Besucher sehen kann.
FAQ
Gibt es einen offiziellen Indeed-MCP-Server?
Indeed veröffentlicht keinen. Dieser wird von HasData gepflegt und liest öffentliche Seiten, weshalb er kein Indeed-Entwicklerkonto benötigt.
Was ist ein Indeed-MCP-Server?
Ein Server, der Indeed-Jobdaten als Tools bereitstellt, die ein KI-Client aufrufen kann. Der Client sendet einen Tool-Aufruf über das Model Context Protocol, der Server ruft die Daten ab und gibt strukturiertes JSON zurück, und das Modell arbeitet mit dem Ergebnis. Dieser Server stellt zwei Tools bereit und läuft remote.
Brauche ich einen Indeed-API-Schlüssel oder ein Partnerkonto?
Nein. Die einzige Anmeldeinformation ist Ihr HasData-Schlüssel. Es gibt kein Publisher-Konto, für das Sie sich bewerben müssen, da die Tools öffentliche Indeed-Seiten lesen.
Wie blättere ich durch mehr als eine Ergebnisseite?
Übergeben Sie den start-Offset als Zahl an das Listing-Tool, nicht als URL. Die Antwort gibt pagination.nextPage zurück, dessen eigener start-Wert der Offset für die nächste Seite ist. Lesen Sie also diese Zahl und geben Sie sie zurück, anstatt die URL einzusetzen.
Warum fehlt manchmal ein Gehalt?
Weil die Anzeige kein Gehalt angibt. Das salary-Objekt ist nur vorhanden, wenn Indeed einen Betrag anzeigt. Lesen Sie es defensiv.
Kann ich das zusammen mit anderen HasData-APIs verwenden?
Ja. Der Parameter apis akzeptiert eine Liste, und ?apis=indeed,glassdoor versorgt Ihren Agenten mit Indeed und Glassdoor. Lassen Sie den Parameter weg und Sie erhalten alles.
Compliance und personenbezogene Daten
HasData greift ausschließlich auf öffentlich verfügbare Daten zu. Die Nutzungsbedingungen einer Plattform können den automatisierten Zugriff einschränken, und Sie sind für Ihre eigene Compliance verantwortlich. Soweit die von Ihnen erhobenen Daten personenbezogene Informationen enthalten, stellen Sie sicher, dass Sie eine rechtmäßige Grundlage dafür nach DSGVO, CCPA oder den entsprechenden Regelungen Ihrer Rechtsordnung haben.
HasData-Links
Produktseite und Request-Builder | |
Server-Dokumentation | |
Alle 57 Tools in einem Server | |
Client-Anleitungen | |
Alles andere, was wir scrapen | |
Pläne und Credit-Kosten | |
Schlüssel und Nutzung | |
Node-Launcher auf npm | |
Python-Launcher auf PyPI |
Entwicklung
Dieses Repository ist Konfiguration und Dokumentation für einen Remote-Server. Es gibt keinen Build-Schritt und nichts zu containerisieren.
Die Tests in test/ prüfen den Tool-Vertrag, also den Teil, der ohne einen Commit hier brechen kann. Sie prüfen, dass ?apis=indeed genau zwei Tools zurückgibt, dass jedes Tool weiterhin seine erforderlichen Parameter deklariert, dass sich kein Name geändert hat und dass der verwendete Schlüssel tatsächlich akzeptiert wird. Dieser letzte Check ruft ein Tool tatsächlich auf und kostet 5 Credits – das ist der Preis eines Kanarienvogels, der aus dem richtigen Grund fehlschlagen kann.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm testDieselbe Testsuite läuft in CI bei jedem Push und einmal pro Woche planmäßig, weil sich die Upstream-Tool-Liste ändern kann, ohne dass jemand dieses Repository anfasst. Ein Fehler bedeutet, dass sich die Tool-Liste geändert hat, der Schlüssel nicht mehr funktioniert oder der Endpunkt nicht erreichbar war – die Assertion-Meldung sagt, welcher Fall vorliegt.
Mitwirken
Korrekturen an den Tool-Tabellen und den Antwortbeispielen sind der nützlichste Beitrag, weil dies die Teile sind, die abweichen. Geben Sie den von Ihnen gemachten Aufruf und die erhaltene Antwort an. Pull Requests aus Forks führen die Suite ohne Schlüssel aus, und die Live-Checks werden übersprungen, statt rot zu werden.
Lizenz
MIT. Siehe LICENSE.
Available Tools
2 toolshasdata_indeed_job_getJobDetailsindeed_job: GET /AInspect
Get Indeed Job Details
Fetches a single Indeed job posting by its viewjob URL. Returns job title, company, location, salary/compensation, employment type, posted date, full description, requirements/benefits, and apply URL. Use for ATS/CRM enrichment, compensation benchmarking, resume-to-JD matching with LLMs, and structured archival of postings discovered via the Indeed Listing endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the job vacancy to retrieve details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states what is returned but does not mention side effects, error handling, rate limits, or any read-only guarantees. The 'Fetches' wording implies a safe GET, but transparency is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the core function, second lists return fields and use cases. It is concise, well-structured, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, no output schema), the description fully covers what the tool does, what it returns, and when to use it. The relationship to the listing sibling is clarified, and no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'url' is clearly described in the schema as 'The URL of the job vacancy to retrieve details for.' The tool description reinforces this with 'viewjob URL,' leaving no ambiguity about what input is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches a single Indeed job posting by viewjob URL, lists the returned fields, and distinguishes itself from the listing sibling by focusing on a single posting. The verb 'Fetches' and resource 'Indeed job posting' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (ATS/CRM enrichment, compensation benchmarking, resume-to-JD matching, structured archival) and references the Indeed Listing endpoint as the discovery source, implying this tool is for postings already found. Does not explicitly contrast with Glassdoor job details, but the context is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_indeed_listing_getJobListingsindeed_listing: GET /AInspect
Get Indeed Job Listings
Searches Indeed job listings by keyword and location with sort (relevance/date), country domain targeting, and offset-based pagination (start). Returns an array of jobs with title, company, location, salary, posted date, job URL, and jobKey for the requested page. Use for job-market dashboards, role/geo hiring-trend analysis, sourcing pipelines, and generating URL lists to feed into the Indeed Job endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | The sorting option for the search results. | |
| start | No | The starting index of the results to retrieve (optional). | |
| domain | No | The domain of the Indeed site (optional). Provide one exact documented value (62 allowed), e.g. `ar.indeed.com`, `au.indeed.com`. | |
| keyword | Yes | The keyword used to search for job listings. | |
| location | Yes | The location to search for job listings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only search operation (GET) but does not explicitly state side effects, rate limits, or authentication requirements. The behavior is mostly transparent but lacks explicit safety language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and readable but contains slight redundancy, repeating the search criteria and return format in consecutive sentences. It remains concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description adequately explains the return format (array of jobs with listed fields). It also covers pagination and domain selection, giving sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters have descriptions, covering required and optional fields. The description adds context by explaining sort options, domain examples, and offset-based pagination, which goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves Indeed job listings by keyword and location, with sorting and pagination options. It also distinguishes from the sibling tool by mentioning generating URL lists for the Indeed Job endpoint, implying a listing vs. detail perspective.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases such as job-market dashboards, hiring-trend analysis, and sourcing pipelines. It doesn't explicitly contrast with the sibling tool, but the intended scenarios are clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
hasdata_indeed_job_getJobDetails - First observed
hasdata_indeed_listing_getJobListings
TDQS
Scored across 2 tools
The two tools have clearly distinct roles: one searches/fetchs the listing index while the other fetches full details for a specific job. There is no meaningful overlap or ambiguity in selecting between them.
Both tool names follow the same hasdata_indeed_<resource>_get<Action> pattern, with consistent snake_case prefixing and camelCase action suffixes. The naming is predictable and coherent across the set.
Two tools is on the low end for an MCP server, though the pair covers the essential list-and-detail retrieval flow for Indeed job data. The server feels minimal but not unreasonable for its focused purpose.
The server provides the core job-search workflow: get listings, then fetch details for a chosen URL. Minor gaps exist, such as no direct fetch by jobKey and no batch/company-level tools, but agents can accomplish the primary intended use case without dead ends.
Maintenance
Related MCP Connectors
Search job postings across Indeed, LinkedIn, and more from one request - titles, companies
DISCONTINUED 2026-05-23. Indeed.com Cloudflare + DataDome anti-bot returns HTTP 403 on all scraping
Hibrit iş ilanı arama MCP sunucusu — anahtarsız resmî ATS board API'leri (Greenhouse, Lever,…
Job search for Switzerland. Searches current listings on funkyjobs.ch by keyword, place with radius, workload, category and publishing date, and fetches a single listing with employer, location, workload and salary where stated. Read-only, no account needed. Docs: https://www.funkyjobs.ch/mcp-connector
Related MCP Servers
AlicenseAqualityAmaintenanceDirect access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.6320MIT- AlicenseNot gradedqualityDmaintenanceLive Indeed job-postings data for AI agents via the RolesAPI REST API: search listings by keyword and location, and fetch role details, salary, description, company, and benefits. Available as drop-in agent skills or a hosted remote MCP server.1MIT No Attribution
- FlicenseNot gradedqualityBmaintenanceEnables searching real job listings from multiple job boards (Indeed, LinkedIn, Glassdoor, Google Jobs, etc.) through a single MCP tool, designed for use as a custom connector in Claude Cowork.-
- AlicenseAqualityAmaintenanceEnables MCP clients to perform live Google searches and retrieve structured SERP data including organic results, AI Overviews, People Also Ask, AI Mode answers, news, shopping, and short-video results via eight read-only tools.1031 npm64 PyPI17MIT