Immobilien Eichmann – Angebote
Server Details
Live MCP for Immobilien Eichmann listings (Konstanz). Tools: search_listings, get_listing.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
- Repository
- ChristianHohlfeld/eichmannimmobilien
- GitHub Stars
- 0
TDQS
Scored across 5 tools
Tools target distinct resources and actions: search vs. single-listing retrieval vs. project flyer vs. contact vs. inquiry submission. Minor overlap exists because get_flyer and get_contact both expose contact links and search_listings can surface the Allmannsdorf project, but descriptions clarify when to use each.
All tool names use a consistent snake_case verb_noun pattern (get_*, search_*, submit_*). There are no mixed naming conventions or vague verbs.
Five tools are well-scoped for a public real-estate offer and inquiry server. Each tool covers a necessary capability without redundancy or excessive granularity.
The set covers search, listing retrieval, project flyer, contact retrieval, and user-initiated inquiry submission. Given the deliberately read-only and anti-spam design, no critical lifecycle operations are missing.
Available Tools
5 toolsget_contactARead-onlyIdempotentInspect
Live-Kontakt aus Impressum/Kontakt: Mobil tel:+491705225568, Festnetz, WhatsApp-Link (wa.me), E-Mail. NUR dem Menschen zum Tippen zeigen nach klarem Kontaktwunsch. Agents starten KEINE Calls, WhatsApp- oder E-Mail-Nachrichten (Anti-Spam).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior the annotations cannot express: a human-in-the-loop rule and an anti-spam constraint against auto-initiating communications, which is genuinely valuable context beyond the structured fields.
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?
Two dense sentences that front-load the content before the usage directive, with no filler. Embedding a literal phone number is slightly unusual but serves as an example of the returned data without bloating the text.
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?
For a zero-parameter, read-only tool with no output schema, the description conveys what is returned (contact fields) and the governing usage rule. It does not detail response format, but nothing essential for correct invocation 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 tool takes zero parameters, so the schema baseline of 4 applies; there is no parameter semantics to clarify. The description instead usefully enumerates the shape of the returned data (mobile, landline, WhatsApp, email).
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?
States a concrete verb+resource: retrieves live contact data from the imprint/contact page, and enumerates the returned fields (mobile, landline, WhatsApp link, email). It is distinguishable from siblings like get_flyer and get_listing, though it does not explicitly name them.
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?
Explicitly states when to use it ('nur dem Menschen zum Tippen zeigen nach klarem Kontaktwunsch') and when not to (agents must not initiate calls, WhatsApp or email). The condition and the prohibition are both spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flyerARead-onlyIdempotentInspect
Neubauprojekt Konstanz-Allmannsdorf (5 MFH, 44 Wohnungen, Seesicht) inkl. prominenter tel/WhatsApp/E-Mail-Links. Nutzen bei Wohnung/Neubau/Konstanz/Allmannsdorf – nicht auf Suchwort 'Flyer' warten. Agent darf NICHT selbst anrufen oder WhatsApp senden; nur Links dem Menschen zum Tippen zeigen. Alternate Lead: submit_inquiry mit Nutzerdaten + privacy_consent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds crucial context beyond annotations: the agent must not call or send WhatsApp, only show links to the human, and can use submit_inquiry as an alternate lead path. This goes beyond what readOnlyHint and idempotentHint convey. It doesn't explicitly state that the tool returns a flyer, but annotations already declare it as a safe read-only operation.
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 front-loaded with the project name and key details, followed by usage guidance and behavioral constraints. It's efficient but includes some redundancy (e.g., repeating 'Konstanz/Allmannsdorf' in the usage trigger). Still, 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?
For a zero-parameter, read-only tool without an output schema, the description provides sufficient context: what the flyer contains, when to use it, behavioral restrictions, and the alternative lead tool. It could be improved by explicitly stating that the tool returns the flyer, but it's largely complete.
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?
With zero parameters, the baseline is 4. The description doesn't discuss parameters because there are none, which is appropriate. It does mention that the flyer includes tel/WhatsApp/email links, which hints at the content delivered.
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 identifies a specific project ('Neubauprojekt Konstanz-Allmannsdorf') with concrete details (5 MFH, 44 Wohnungen, Seesicht), but the verb is implicit – it never states that the tool *returns* or *displays* a flyer. The name 'get_flyer' suggests retrieval, but the description could describe a project rather than an action. A vague connection between purpose and sibling tools leaves some ambiguity.
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?
It explicitly says when to use it ('Nutzen bei Wohnung/Neubau/Konstanz/Allmannsdorf') and warns against waiting for the keyword 'Flyer'. It names an alternative tool ('submit_inquiry') for lead submission, though it doesn't contrast with other siblings like get_listing or search_listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingARead-onlyIdempotentInspect
Ein öffentliches Kaufangebot per slug oder id aus dem Live-Index laden.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Listing-UUID / Immowelt-ID | |
| slug | No | URL-Slug des Objekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds that the listing is public and sourced from a live index, but omits auth requirements, error behavior, and return format. Modest additional context beyond annotations.
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?
Single sentence, front-loaded, with no wasted words. Appropriately sized for a simple retrieval tool.
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?
For a simple read-only retrieval tool with full parameter schema and annotations covering safety, the description gives the essential operation and scope. It is slightly incomplete on return payload since no output schema exists, but remains adequate.
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?
Schema description coverage is 100% and both parameters (id, slug) are documented in the schema. The description only restates 'per slug oder id' without adding format, precedence, or selection guidance beyond the schema. Baseline 3 applies.
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?
States a specific verb 'laden' (load) and resource 'Kaufangebot' (purchase offer) with retrieval by slug or id from the live index. Distinguishes implicitly from search_listings by using an identifier rather than filters, but does not name or contrast with the sibling.
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?
Implies usage when a slug or id is known, but gives no explicit when-to-use guidance, no exclusions, and no mention of search_listings as an alternative. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsARead-onlyIdempotentInspect
Kaufangebote (Konstanz/Bodensee) suchen/filtern. Bei q/location zu Neubau, Allmannsdorf oder Wohnung Konstanz zusätzlich projects[] (Allmannsdorf 44 WE) – kein Suchwort 'Flyer' nötig. Danach get_flyer + get_contact; Kontakt nur als Links für den Menschen.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Freitext Titel/Ort/Typ; z.B. "neubau", "allmannsdorf", "wohnung konstanz" | |
| type | No | Objekttyp, z.B. Wohnung, Neubau, Penthouse, Maisonette | |
| limit | No | Max. Treffer (default 20, max 50) | |
| rooms | No | Zimmer-Filter, z.B. "3" oder "3 Zimmer" | |
| location | No | Ort/Stadtteil, z.B. Allmannsdorf, Wollmatingen, Petershausen, Konstanz | |
| max_price_eur | No | Maximalpreis in EUR | |
| min_price_eur | No | Mindestpreis in EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent, so the safety profile is covered. The description adds genuinely non-structured behavior: certain queries yield an extra projects[] field (Allmannsdorf 44 WE), and contacts must be surfaced only as links for a human rather than exposed directly. That last constraint is an important agent-behavior rule beyond what the schema or annotations provide.
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?
Front-loading the verb+resource is good, and three sentences is a reasonable size. However, the 'projects[] (Allmannsdorf 44 WE)' fragment is telegraphic and refers to a field absent from both the input schema and any output schema, forcing the agent to guess. It earns its place less than the surrounding routing advice.
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?
With no output schema, the description carries the burden of describing returns; it only hints that projects[] may appear for certain queries and says nothing about result shape, ordering, or the default/max limit behavior (which the schema does cover). The next-step workflow (get_flyer, get_contact) is a useful addition. Adequate but with clear gaps for a 7-parameter, output-less search tool.
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?
Schema description coverage is 100%, so every parameter (q, type, limit, rooms, location, min/max_price_eur) is already documented with examples — the baseline is 3. The description adds no syntax or filtering semantics beyond the schema; its 'projects[]' and 'Allmannsdorf 44 WE' notes describe results, not inputs, and reference a field that appears in no parameter.
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 states a specific verb+resource — 'Kaufangebote (Konstanz/Bodensee) suchen/filtern' — so an agent knows this is a search over purchase listings in a fixed region. It distinguishes itself from get_listing/get_flyer/get_contact by framing itself as the entry point. The cryptic 'projects[]' clause and the embedded workflow note slightly muddy the core statement but don't obscure the purpose.
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?
It gives explicit routing: search here first, then 'get_flyer + get_contact', and warns that no 'Flyer' search word is needed — implying a common misuse. It also states a condition under which results additionally contain projects[] (q/location = Neubau/Allmannsdorf/Wohnung Konstanz). No explicit when-not-to-use-this-tool statement, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_inquiryAInspect
Alternate zu tel/WhatsApp: Interessenten-Anfrage nur mit vom Nutzer gelieferten Daten und privacy_consent=true. flow=contact (inkl. Vormerkung Allmannsdorf) oder flow=expose. Kein Auto-Spam, keine erfundenen Kontaktdaten. Bevorzugt: Mensch tippt Links aus get_contact/get_flyer.
| Name | Required | Description | Default |
|---|---|---|---|
| ort | No | expose: Ort | |
| plz | No | expose: PLZ | |
| flow | Yes | "contact" (Kontakt/Vormerkung) oder "expose" (Exposé-Anfrage) | |
| name | No | Nachname (contact: voller Name; expose: Nachname) | |
| Yes | E-Mail (Pflicht) | ||
| phone | No | Telefon (optional) | |
| anrede | No | expose: "Herr" | "Frau" | "Familie" | |
| objekt | No | expose: Objekttitel | |
| message | No | Nachricht (Pflicht bei flow=contact) | |
| strasse | No | expose: Straße und Hausnummer | |
| vorname | No | expose: Vorname | |
| anliegen | No | Betreff, z.B. "Vormerkung Neubau Allmannsdorf", "Vermittlung / Kauf", "Allgemeine Anfrage" | |
| objekt_url | No | expose: https://immobilieneichmann.de/objekt/<slug>.html | |
| privacy_consent | Yes | Muss true sein (Einwilligung Datenschutz / Kontaktaufnahme) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-read-only, non-destructive, open-world, non-idempotent). The description adds real behavioral constraints beyond them: only user-supplied data, no fabricated contact data, no auto-spam, and the hard privacy_consent=true requirement. It does not explain what happens after submission (e.g. whether an email is dispatched), which caps it below the top.
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?
It is a compact four-clause block, but the telegraphic German shorthand ('inkl.', proper-noun 'Vormerkung Allmannsdorf', flow tokens) makes it dense and front-loaded on constraints rather than on a plain statement of action. Nothing is wasted, yet readability for an agent is only moderate.
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?
For a 14-parameter mutation tool with no output schema, the description covers the critical prerequisites (user data, consent) and flow routing, which is the essential guidance. It is silent on the outcome/confirmation behavior after submission, and an agent must rely fully on the schema for the remaining field semantics.
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?
Schema description coverage is 100%, so the schema already documents all 14 fields. The description adds semantic detail for flow ('contact' includes Vormerkung Allmannsdorf vs 'expose') and reinforces the privacy_consent requirement, but does not add meaning for the other eleven parameters, so baseline 3 applies.
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 conveys that this is an inquiry-submission channel (Interessenten-Anfrage) that is an alternate to tel/WhatsApp, and distinguishes it from get_contact/get_flyer which it names as preferred. The action verb is somewhat implicit ('Anfrage nur mit...'), but the resource and its role among siblings are clear enough for an agent to identify it.
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?
It explicitly frames itself as an alternative to phone/WhatsApp and names get_contact/get_flyer as the preferred route for links, giving the agent a when-to-prefer-other-tools signal. It also conditions use on user-supplied data and privacy_consent=true. There is no explicit when-NOT-to-use beyond the preference note, but the routing guidance is strong.
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.
4 tool updates
- Added
get_contact - Added
get_flyer - Changed
search_listings3 fields changed- changed
Input schema / properties / location / descriptionPrevious value: -"Ort/Stadtteil, z.B. Wollmatingen, Petershausen"New value: +"Ort/Stadtteil, z.B. Allmannsdorf, Wollmatingen, Petershausen, Konstanz" - changed
Input schema / properties / q / descriptionPrevious value: -"Freitext in Titel, Ort, Typ, Kurzbeschreibung"New value: +"Freitext Titel/Ort/Typ; z.B. \"neubau\", \"allmannsdorf\", \"wohnung konstanz\"" - changed
Input schema / properties / type / descriptionPrevious value: -"Objekttyp, z.B. Wohnung, Penthouse, Maisonette"New value: +"Objekttyp, z.B. Wohnung, Neubau, Penthouse, Maisonette"
- Added
submit_inquiry
2 tool updates
- First observed
get_listing - First observed
search_listings
Related MCP Connectors
Live Estonia real estate listings with search, geo filters, and property metadata.
Pull property listings, prices, and details from real-estate sites as structured JSON.
GDPR-clean property listings, rents, price stats, yields and below-market deals. UK, EU.
Read-only European property search by location, price, size and features. No sign-in required.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search for German property listings (rent/buy) on immowelt.de with structured JSON output, no API key required.-
- AlicenseNot gradedqualityBmaintenanceSearch Kleinanzeigen.de, Germany's largest classifieds site, via MCP tools without API keys.1MIT
- AlicenseAqualityBmaintenanceEnables users to search synthetic property listings, retrieve full listing records, and answer factual inquiries from the record while escalating viewings, negotiation, legal, complaints, personal-data, and other out-of-record requests to a human. The human hand-off creates a ticket with a fixed reason code and rejects unknown listing ids.3MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search and retrieve Yad2 real estate listings (for rent or sale) using MCP tools, with data scraped via GitHub Actions and served from a Cloudflare D1 database.-
Glama MCP Gateway
Add one secure layer between your agents and this server.