Use with Claude
Ask Claude about
a Polish parcel.
Add landfeed as a remote MCP server. Claude then answers parcel questions with one tool call, and quotes the source and as-of date of every fact.
Coming soon. The hosted server is not live yet. https://mcp.landfeed.pl/mcp is the planned address; join the waitlist to hear when it opens.
Claude app and Claude Desktop
landfeed is a remote MCP server reached over Streamable HTTP. In Claude it is added as a custom connector.
- Open Settings, then Connectors.
- Choose Add custom connector.
- Name it
landfeedand paste the server URL:https://mcp.landfeed.pl/mcp - Choose Add, and sign in when Claude asks.
- In a chat, open the tools menu and make sure landfeed is on.
Menu names are Claude's, as of October 2026, and may change. On Team and Enterprise plans an owner may need to add the connector for the organisation first.
Claude Code
One command adds the server for your user or project:
claude mcp add --transport http landfeed https://mcp.landfeed.pl/mcpThen run /mcp inside Claude Code to see the server, its six tools and its sign-in state.
Building your own agent instead? The same six tools are plain REST endpoints; see API and docs.
Sign-in
The plan is OAuth 2.1 for the hosted server at release, so Claude can sign you in without pasting a key. REST calls use an X-Api-Key header. Neither is open yet.
Example prompts
Type the parcel the way people do. The tools accept free text, an EGiB id in slash or dash form, or a point.
In English
- Can I build a house on parcel 25/18 in Lesznowola?Claude calls
check: a verdict, named checks with sources, and the parcel record. - Is 141803_2.0006.25/18 in a flood zone?Claude calls
layerwithflood: Q10, Q100 and Q500 flags with their coverage, note and map source. - What do the plans say for Lesnowola 25/18?Claude calls
layerwithplanning. The misspelt locality is matched fuzzily, with lowered confidence and the assumption stated. - Has anything changed on this parcel since 1 October?Claude calls
events. History starts with the first precompute run in October 2026.
In Polish
-
pogorzelec dziłaka 284/5, da się tam budować?
English: "Pogorzelec, plot 284/5, can you build there?" Claude calls
checkwith the text as typed. -
PL pendingEnglish gloss: "Can I build a house on plot 25/18 in Lesznowola?"
Claude calls
check. -
PL pendingEnglish gloss: "Is plot 25/18 in Lesznowola in a flood zone?"
Claude calls
layerwithflood. -
PL pendingEnglish gloss: "Does this plot have a plan ogólny in force, and which zone is it in?"
Claude calls
layerwithplanning.
What Claude gets back
Every tool returns the REST envelope as structured JSON, so Claude reads fields, not prose.
{
"status": "ok", // or "ambiguous" with candidates, "not_found", "not_covered"
"query": { "input": { "q": "Lesnowola 25/18" },
"resolved": { "method": "text_parcel_fuzzy", "note": "…", … } },
"result": { /* the answer; every layer has coverage, value, note, source, as_of */ },
"candidates": [],
"needs_obreb": false,
"sources": [ /* title, attribution, licence, as_of */ ],
"billing": { "cost": 1, "charged": 1, "refunded": 0, "rule": "charged" },
"error": null,
"meta": { "calls": 1, "excluded": [ /* never served */ ], … }
}
When the text matches several parcels, status is ambiguous and Claude shows you the candidates or asks which obręb (needs_obreb); it never picks one silently.
Rules Claude follows
The server's instructions travel with the tools. They tell the agent to:
- quote each layer's
noteand citesource.attributionandas_of; - say "the state does not publish this here" for
not_covered, and not guess; - never call a parcel "safe", and never say "no plan" without naming which plan, its status and the source;
- not expect land registry (KW) numbers or owner data: landfeed never returns them.