Hosted MCP coming soon. v1 data: mazowieckie.Join the waitlist

/ Polish land, for agents

Every Polish parcel.
One call.

landfeed turns whatever a person typed into a parcel and a sourced answer: plan ogólny, MPZP, whether a WZ decision is possible, flood, landslides, protected areas, buildings, road access, permits and prices nearby. REST and MCP return the same JSON envelope.

Add landfeed to your agent

Coming soon

Add a custom connector with this server URL. The hosted server is not live yet; the URL below is the planned address.

https://mcp.landfeed.pl/mcp
Step-by-step for Claude
Works withClaudeChatGPTClaude Codeany MCP clientREST
5,617,140
parcels loaded in v1, all in one voivodeship: mazowieckie
1,074
gminas with plan ogólny polygons in the planning table
6
MCP tools, one per endpoint, same envelope as REST
1
median calls per answer in the week-1 internal run

What your agent sees.

A person types a parcel the way people do. The agent passes the text as it is; landfeed resolves it, runs the named checks and returns the record in the same response.

User, in Claude pogorzelec dziłaka 284/5, da się tam budować?
check(q="pogorzelec dziłaka 284/5")1 request
Verdict: conditional
  • passPlan ogólny zone SW · Rejestr Urbanistyczny, as of 2026-09-28
  • passWZ decision possible · basis: art. 59 ust. 3
  • unknownMPZP parameters · not machine-published, so not guessed
  • passOutside flood zone Q100 · MZP, as of 2026-06-01
  • failNo public road within 30 m
Claude answers The parcel is in zone SW and a WZ decision is possible; it lies outside the Q100 flood zone; there is no public road access, so check for an easement. Sources and dates are quoted with each fact.

Illustrative. Values from the plan's wireframe (§8.1), shape from envelope.json; not a live response.

GET /v1/check?q=… · 200
{
  "status": "ok",
  "query": {
    "input": { "q": "pogorzelec dziłaka 284/5" },
    "resolved": { "from": "q", "method": "text_parcel",
      "id": "142403_2.0027.284/5", "confidence": 0.94 }
  },
  "result": {
    "verdict": "conditional",
    "checks": [
      { "id": "pog_zone", "result": "pass", "value": "SW",
        "source": { "title": "Rejestr Urbanistyczny",
                    "as_of": "2026-09-28", … } },
      { "id": "wz_possible", "result": "pass",
        "basis": "u.p.z.p. art. 59 ust. 3", … },
      { "id": "mpzp_params", "result": "unknown",
        "detail": "not machine-published", … },
      { "id": "flood_q100", "result": "pass", … },
      { "id": "road_access", "result": "fail",
        "detail": "no public road within 30 m", … }
    ],
    "record": { /* every layer: coverage, value, note, source, as_of */ },
    "disclaimer": "…"
  },
  "candidates": [],
  "sources": [ /* each with attribution and as_of */ ],
  "billing": { "cost": 1, "charged": 1, "refunded": 0,
               "rule": "charged" },
  "error": null,
  "meta": { "api_version": "v1", "calls": 1, … }
}
1 call · verdict + checks + recordenvelope.json
Outside loaded data · 200, refunded
{
  "status": "not_covered",
  "query": { "input": { "id": "126105_9.0011.112" }, … },
  "result": null,
  "corpus_coverage": { "scope": "12", "held_parcels": 0,
    "held_pct": 0, "note": "…", … },
  "billing": { "cost": 1, "charged": 0, "refunded": 1,
    "rule": "refunded_not_covered" }
}
"not loaded yet" is not "does not exist"
One layer, where the state publishes nothing · 200
{
  "layer": "mpzp",
  "coverage": "covered_no_data",
  "value": { "status": "none", "symbol": null,
             "plans": [], "effective_from": null },
  "note": "…one sentence an agent can quote…",
  "source": { "attribution": "…", "as_of": "…" },
  "as_of": "…", "layer_version": "…"
}
an MPZP status of none, never "no plan"

Why one call matters.

Every extra call is model time, tokens and one more chance to read the wrong page. In our latest internal run, an agent with landfeed answered in a median of one call; an agent with a browser needed a median of 41.5.

Week-1 internal run, 2026-10-13 · mazowieckie only

Week-1 internal run of Parcel Bench PL questions, 2026-10-13
AgentQuestionsCorrectCorrect in one callMedian callsMedian timeCost
Claude + landfeed MCP onlyno browser, no other tools2617 / 2615129.1 snot reported
Claude + browserraw agent, same bench, 10 questions106 / 10041.56.2 minUSD 8.16 for 10

Parcel Bench PL questions with answers from verified fact bundles · the two arms ran different numbers of questions · not a public benchmark yet

Where we missed

9 of our 26 answers missed, and none of them was a confident wrong answer. MPZP (0 of 4) and landslide (0 of 3) questions missed because those layers are not loaded yet. One building count differs between EGiB and BDOT10k, and one protected-area answer fails closed because our copy of the GDOŚ point objects is incomplete. Under the truth-gate rule, each is a data defect to fix before the next voivodeship loads.

What one call buys

Resolving free text, joining planning, hazards, nature, buildings and access, and saying where the state publishes nothing happen on our side, once. Your agent gets the answer, its sources and its coverage, and a billing block that says what it cost.

Six tools. Small on purpose.

A small tool list keeps an agent's context free for the question. Each tool takes the text as typed, an id or a point, and returns the REST envelope as structured JSON.

ToolCost
check Can you build on this parcel?1request

A verdict (pass, conditional, fail or unknown), named checks each with a result, a source and a statute basis, and the full record embedded, so follow-up questions need no further call.

parcel Parcel record1request

The full sourced record: official area in m², gmina, obręb and number, and every layer with its own coverage and note.

layer One layer for one parcel1request

planning answers plan ogólny, MPZP, WZ possibility and the gmina's planning status at once.

resolve Find the parcel the user means1request

Candidates with confidence from what a person typed, misspelt localities matched fuzzily, and corpus_coverage to tell "does not exist" from "not loaded yet".

search Parcels by address, around a point or in an area1request

Summaries at an address, within a radius up to 2,000 m, or in a bbox up to 4 km², paginated.

events What changed1request

Changes for a parcel since a date. History starts with the first precompute run in October 2026; an empty list before then means no history, not no change.

Four coverage states.

Every layer answer says which one it is, in a plain sentence the agent can quote, with its source and as-of date.

covered

The source holds a record here

The value is that record.

covered_no_data

Covered, and nothing recorded

A real negative: false, 0, an empty list or none. Charged, because it is an answer.

not_covered

The state does not publish it here

Or we hold no data there. The value is null; the agent says so instead of inferring.

not_computed

We hold it, not computed yet

The value is null until the precompute reaches this place.

Pricing is not set yet.

The plan prices requests, not tokens, with hard caps and no overage. The shape below is planned and subject to change.

Planned planPlanned price
Free planned0 zł300 requests a month
Developer planned199 zł5,000 requests
Pro planned999 zł50,000 requests
Monitoring plannedQuotedper parcel per month

Common questions.

Can I add landfeed to Claude or ChatGPT today?

Not yet. The hosted MCP server is coming; the address on this site, https://mcp.landfeed.pl/mcp, is the planned one. Join the waitlist and we will tell you when it opens.

Which parcels are covered?

v1 holds one voivodeship, mazowieckie: 5,617,140 parcels. Plan ogólny polygons cover 1,074 gminas. A parcel outside loaded data comes back as not_covered, refunded, with corpus_coverage saying what is held.

Does landfeed say whether a parcel is safe to buy?

No. It reports what each source says, what it does not cover, and the date. Tool instructions forbid the agent from calling a parcel "safe". It is not legal advice.

Do you return owners or land registry numbers?

Never. No KW numbers, no owner or holder data, no investor names from permits, no address-level transaction prices; price aggregates need at least 5 transactions.

What does a call cost?

Prices are not decided. Every response already carries billing {cost, charged, refunded, rule}; invalid input is free and errors and not_covered answers are refunded. See pricing.

Ask your agent
about the land.

One call from what a person typed to a sourced answer.