← ImmoprobeCONTENT HISTORY

Update to Immoprobe

Snapshot Nov 11, 2026 · 13:30 UTC · version 1.0.1

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Immoprobe and check future changes in Following.

Up to 3 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Analyse German residential investment listings (Kapitalanlage-Immobilien) with the Immoprobe MCP tools. Map an exposé, a portal page or pasted text to the calculator input, look up the land value (Bodenrichtwert), calculate cashflow, yields and tax effect, write an assessment note with questions for the Makler, and save the object to the user's Immoprobe list; sweep a saved portal search for new listings; review and compare what is saved. Use when the user shares a listing URL, an exposé PDF or text, a portal search, or asks about their saved properties.",
  "included_files": [],
  "name": "immoprobe-research",
  "skill_md_contents": "---\nname: immoprobe-research\ndescription: Analyse German residential investment listings (Kapitalanlage-Immobilien) with the Immoprobe MCP tools. Map an exposé, a portal page or pasted text to the calculator input, look up the land value (Bodenrichtwert), calculate cashflow, yields and tax effect, write an assessment note with questions for the Makler, and save the object to the user's Immoprobe list; sweep a saved portal search for new listings; review and compare what is saved. Use when the user shares a listing URL, an exposé PDF or text, a portal search, or asks about their saved properties.\n---\n\n# Immoprobe research\n\nImmoprobe is the user's system of record for German residential investment\nproperties and a deterministic calculator. It runs no model of its own: you\nread the listing, Immoprobe does the maths, keeps the objects and answers the\ngeodata from public sources. You work with the `immoprobe` MCP server; if it is not\nconnected, tell the user how: claude.ai → Settings → Connectors → add\n`https://api.immoprobe.de/mcp`; Claude Code →\n`claude mcp add --transport http immoprobe https://api.immoprobe.de/mcp`.\n\n## The tools\n\n| Tool | Use it to |\n|---|---|\n| `get_guide` | the field mapping and how to read every layer — read it once per conversation |\n| `calculate_property` | run the calculation for one input; free, but like every tool it needs the user's free account |\n| `lookup_address` | find where a listing is and the Bodenrichtwert at the point |\n| `save_object` | keep a listing with its input, address, note and lists |\n| `find_objects` | list saved objects as compact rows, by status, list, source or text |\n| `get_object` | one object in full: input, assumptions, notes, links, attachments, land value |\n| `clone_object` | save a copy with other financing or a negotiated price, to compare the variants |\n| `add_note` | append a note to a saved object |\n| `add_link` | attach a further page of the flat: another portal, the developer, a plan |\n| `add_attachments_from_urls` | fetch the listing's photos, Grundriss and a linked PDF into the object by URL |\n| `set_object_status` | into the trash (discarded) or back to the list (active) |\n| `set_object_lists` | file an object under list names |\n| `check_known_listings` | which listing ids are already saved — the sweep cursor |\n| `compare_objects` | two to five objects side by side, best value marked |\n| `get_account` | who is connected, plan, what is left of the quotas |\n\nEvery answer that concerns an object carries a `url` into the web app — show\nit. `calculate_property` carries `shareUrl` with charts — show it too.\n\n## Reading a listing\n\nCall `get_guide` once per conversation before the first calculation (or read\n`immoprobe://guide`): it carries the field mapping from a listing to the\ncalculator — Kaufpreis, Wohnfläche, Kaltmiete, Hausgeld, Provision, Baujahr,\nthe state from the postcode, financing, KfW, a new build's Bauphase, the plot\nfor the Kaufpreisaufteilung — with units and defaults, and how to read every\nlayer `lookup_address` answers. The server serves the guide, so it is always\nthe current contract; this skill is the procedure around it.\n\nTake what the listing states; leave out what it does not. Fields left out\ntake defaults and come back in `assumed` — show them to the user as\nassumptions, never as facts. Pass a stated value even when it equals the\ndefault (a Provision of 3.57 %, say): left out, it would come back as an\nassumption although the listing says it. The answer's `summary` lines are the\ncalculation as facts, a `*` on every assumption: quote them instead of retyping\nnumbers. Pass `language` (de or en, the user's language) to every tool that\ntakes it; for any other language pass en and translate yourself. A value you\nestimated yourself (a typical Hausgeld, a guessed rent) is an assumption as\nwell: put its name into `assumed` when you save.\n\n## Locating the listing\n\nCall `lookup_address` before calculating: with `lat` and `lng` when the page\nshows the point (ImmoScout24 does on the exposé map — free and exact),\notherwise the address as the listing writes it. Several candidates: ask the\nuser which, then call again with its `candidateId` (free). `approximate: true`\nmeans the house number was unknown — present the values as assumptions and\nsay why. A missing layer means no data there: say so, never guess a land\nvalue. Pass `layers.brw.eurPerSqm` and `gfz` on to `calculate_property` as\n`landValuePerSqm` and `floorAreaRatio`, with `plotArea`, `coOwnershipShare`\nand `coOwnershipTotal` from the listing. Show `attribution` next to every\nvalue — the licences oblige it. What each layer means and what to tell the\nuser about it is in the guide.\n\n## Calculating and presenting\n\nCall `calculate_property` with the extracted input. Present, in this order:\nthe `verdict` sentence, cashflow per month before and after tax, net yield,\nprice-to-rent factor, total investment and the loan, the land value, and the\nassumptions as a list. Keep the projection to the milestone years the answer\ncarries; do not invent a forecast.\n\n## Without tools\n\nIf the tools are not available to you, hand the user a link instead of a\ncalculation: `https://immoprobe.de/calculator?purchasePrice=…&livingArea=…&stateCode=…&coldRent=…`\nwith every field you read by its name, plus `lat`, `lng`, `address`,\n`listingUrl`, `title`, `note` (your assessment), `model` (your name) and\n`assumed` (the fields you guessed, comma-separated), URL-encoded. The web calculates, looks up the land\nvalue after sign-in and saves the object with your note in one click. Do not\ncompute the cashflow yourself.\n\n## The note\n\nDraft a note of kind `analysis` from the text — what the numbers do not show.\nWrite in the language the user writes in. Cover what applies:\n\n- Erbbaurecht, Sondernutzungsrechte, Teilungserklärung\n- Instandhaltungsrücklage, Sanierungsstau, Sonderumlagen, WEG-Protokolle\n- Denkmalschutz (a depreciation topic), Energieausweis and class\n- Mietvertrag: current rent against the Mietspiegel, Leerstand, Staffel- or\n  Indexmiete\n- Lage as the listing describes it, and what you could verify\n- **Fragen an den Makler** — a block of concrete questions\n\nDo not copy the Makler's contact details into a note unless the user asks.\nNotes are append-only: correcting one means writing another. Pass an\n`idempotencyKey` so a retried call cannot duplicate it.\n\n## Saving\n\nSave with one `save_object` call: the input, the address with the point and\nprecision from the lookup, `source` and the portal's `externalId` (the number\nin `/expose/<id>`), `listingUrl`, the note, and the lists the user names.\n\n- Saving the same source and externalId again updates the object — it never\n  duplicates. Nothing keeps the old price: when the listing's price differs from\n  the last saved one, save it again and add a note with the old and the new\n  price and the date.\n- The object is in the user's list at once, marked as saved by you — so every\n  guessed field must be in `assumed`. `discarded` is the trash: out of the\n  lists, restorable for 90 days, and a sweep does not save the listing again.\n- `possibleDuplicates` lists saved objects at the same address. Nothing is\n  merged — tell the user and let them decide.\n- Found the same flat elsewhere — Immowelt, Kleinanzeigen, the developer's page\n  on neubaukompass? `add_link` it to the saved object instead of saving twice.\n- After saving, `add_attachments_from_urls` with the file URLs the page shows:\n  the photos, the Grundriss (`kind: floorplan`), a linked exposé PDF — the image\n  or PDF URLs, not the page. Immoprobe fetches them itself; the same URL is\n  never stored twice. What fails (login wall, bot check) comes back in\n  `failed` — say so, do not retry in a loop.\n- A file on the user's machine cannot come through a tool. Read the PDF, save\n  what you read, then say: attach the file on the object's page (the `url` in\n  the answer). From Claude Code, `curl -F kind=document -F file=@Exposé.pdf`\n  with the token against `POST /v1/objects/{id}/attachments` works too.\n\n## Sweeping a saved search\n\nOpen the results page sorted newest first, collect the listing ids, call\n`check_known_listings` with them and the source portal, and open only the\nunknown ones. Analyse and save each as above. A known one whose price on the\nresults page differs from the last saved (the answer carries it) is saved again\nwith the new price plus a note with the old and the new one. Stop when a\nwhole page is known. One or two pages is a run; finish with a table and what\nis left of the quotas (`get_account`).\n\n## The portfolio\n\n`find_objects` for the rows, `compare_objects` for two to five side by side,\n`get_object` for the notes. Say which deserve a\nviewing and why, what is still unknown per object, and offer to set\nstatuses, file into lists or add a note of kind `viewing`.\n\n## Conduct on portals\n\n- Read only listings the user opened or asked you to open; work at a human\n  pace, a page or two per run.\n- Never bypass a captcha, a login wall or an automated-access protection.\n  Stop and ask the user.\n- Do not contact sellers or agents on the user's behalf.\n- Automated access is against the terms of most portals; the user carries that\n  responsibility. Keep the volume modest.\n\n## Quotas\n\nOnly a call that actually geocodes counts against the monthly quota; lookups\nby point, candidate picks and repeated addresses are free. Objects are counted\nper plan. `get_account` and every lookup answer say what is left; a refusal\ncarries the numbers and the reset date.\n"
}

SHA-256 of public snapshot: e8f6e07db10c97bf3d936051af8a9e5e228b3c921cd7d82660bdc8fe74e06375