# MCP tool: search

Znajdź działki według adresu, w pobliżu punktu lub na obszarze

## Description (verbatim)

Wyszukaj według q/id/point, szerokości i długości geograficznej lub bbox do 4 km². Odpowiedź zawiera skróty informacji o działkach i kursor; każda strona kosztuje 1 kredyt. Filtry typowane obszaru i eksport są niedostępne.

## Cost and binding

`x-request-cost`: 1 request per call.

REST binding: [GET /v1/search](../operations/search.md).

## Inputs

Dokładnie jeden z parametrów q, id, point (lat i lng razem liczą się jako point). Wszystkie punkty odczytu API i wszystkie narzędzia obsługują te trzy warianty.

| Field | Required | Schema / constraints | Description |
| --- | --- | --- | --- |
| `area_max_m2` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `area_min_m2` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `bbox` | no | `{"type": "string"}` | not specified in the source contract |
| `buildings_present` | no | `{"type": "boolean"}` | not specified in the source contract |
| `cursor` | no | `{"type": "string"}` | not specified in the source contract |
| `frontage_min_m` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `gunb_activity_min` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "integer"}` | not specified in the source contract |
| `id` | no | `{"maxLength": 100, "pattern": "^\\s*[0-9]{6}[._][0-9]\\.[0-9]{1,4}\\.[0-9A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u024F_./ -]{0,63}[0-9A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u024F_./-]\\s*$", "type": "string"}` | not specified in the source contract |
| `land_use_class` | no | `{"enum": ["R", "Ł", "Ps", "Br", "B", "Ba", "Bi", "Bp", "Bz", "K", "Ls", "Lz", "Lzr", "N", "Wp", "Ws", "Wsr", "W", "dr", "Tk", "Ti", "Tr", "E"], "type": "string"}` | not specified in the source contract |
| `lat` | no | `{"maximum": 55.0, "minimum": 49.0, "type": "number"}` | not specified in the source contract |
| `limit` | no | `{"maximum": 1000, "minimum": 1, "type": "integer"}` | not specified in the source contract |
| `lng` | no | `{"maximum": 24.5, "minimum": 14.0, "type": "number"}` | not specified in the source contract |
| `pog_zone_class` | no | `{"enum": ["SW", "SJ", "SN", "SU", "SH", "SI", "SZ", "SC", "SG", "SO", "SR", "SK", "SP"], "type": "string"}` | not specified in the source contract |
| `point` | no | `{"pattern": "^-?[0-9]{1,2}(\\.[0-9]+)?, ?-?[0-9]{1,3}(\\.[0-9]+)?$", "type": "string"}` | not specified in the source contract |
| `public_road_max_m` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `q` | no | `{"maxLength": 300, "minLength": 1, "type": "string"}` | not specified in the source contract |
| `radius_m` | no | `{"maximum": 2000, "minimum": 0, "type": "integer"}` | not specified in the source contract |
| `rcn_price_max_pln_m2` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `rcn_price_min_pln_m2` | no | `{"maximum": 1000000000000.0, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `road_access` | no | `{"type": "boolean"}` | not specified in the source contract |
| `shape_regularity_min` | no | `{"maximum": 1, "minimum": 0, "type": "number"}` | not specified in the source contract |
| `teryt` | no | `{"pattern": "^(?:[0-9]{4}\|[0-9]{6}[123])$", "type": "string"}` | not specified in the source contract |

```json
{
  "inputSchema": {
    "allOf": [
      {
        "additionalProperties": false,
        "not": {
          "anyOf": [
            {
              "required": [
                "area"
              ]
            },
            {
              "required": [
                "parcel_ids"
              ]
            },
            {
              "required": [
                "job_id"
              ]
            },
            {
              "required": [
                "idempotency_key"
              ]
            }
          ]
        },
        "oneOf": [
          {
            "required": [
              "q"
            ]
          },
          {
            "required": [
              "id"
            ]
          },
          {
            "required": [
              "point"
            ]
          },
          {
            "required": [
              "lat",
              "lng"
            ]
          },
          {
            "required": [
              "bbox"
            ]
          },
          {
            "required": [
              "teryt"
            ]
          }
        ],
        "properties": {
          "area_max_m2": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "area_min_m2": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "bbox": {
            "type": "string"
          },
          "buildings_present": {
            "type": "boolean"
          },
          "cursor": {
            "type": "string"
          },
          "frontage_min_m": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "gunb_activity_min": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "$ref": "#/$defs/ParcelIdInput"
          },
          "land_use_class": {
            "enum": [
              "R",
              "Ł",
              "Ps",
              "Br",
              "B",
              "Ba",
              "Bi",
              "Bp",
              "Bz",
              "K",
              "Ls",
              "Lz",
              "Lzr",
              "N",
              "Wp",
              "Ws",
              "Wsr",
              "W",
              "dr",
              "Tk",
              "Ti",
              "Tr",
              "E"
            ],
            "type": "string"
          },
          "lat": {
            "maximum": 55.0,
            "minimum": 49.0,
            "type": "number"
          },
          "limit": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "lng": {
            "maximum": 24.5,
            "minimum": 14.0,
            "type": "number"
          },
          "pog_zone_class": {
            "enum": [
              "SW",
              "SJ",
              "SN",
              "SU",
              "SH",
              "SI",
              "SZ",
              "SC",
              "SG",
              "SO",
              "SR",
              "SK",
              "SP"
            ],
            "type": "string"
          },
          "point": {
            "pattern": "^-?[0-9]{1,2}(\\.[0-9]+)?, ?-?[0-9]{1,3}(\\.[0-9]+)?$",
            "type": "string"
          },
          "public_road_max_m": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "q": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "radius_m": {
            "maximum": 2000,
            "minimum": 0,
            "type": "integer"
          },
          "rcn_price_max_pln_m2": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "rcn_price_min_pln_m2": {
            "maximum": 1000000000000.0,
            "minimum": 0,
            "type": "number"
          },
          "road_access": {
            "type": "boolean"
          },
          "shape_regularity_min": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "teryt": {
            "pattern": "^(?:[0-9]{4}|[0-9]{6}[123])$",
            "type": "string"
          }
        },
        "type": "object"
      }
    ],
    "type": "object"
  }
}
```

## Structured results

Tools return `structuredContent (JSON)` using canonical definitions in `envelope.json`.

Compact shared local schemas. Bundle reachable $defs per tool before use; never fetch refs. Examples and detailed guidance: mcp-examples.md.

```json
{
  "allOf": [
    {
      "$ref": "#/$defs/Envelope"
    }
  ],
  "properties": {
    "meta": {
      "properties": {
        "operation": {
          "enum": [
            "search"
          ]
        }
      }
    }
  },
  "type": "object"
}
```

Shared catalog-local `$defs` are published once in [MCP catalogue](../mcp.md). See [Envelope](../envelope.md) and the bound operation for responses.

## Server instructions (verbatim)

Źródłowe informacje o polskich działkach ewidencyjnych. Przekazuj w q tekst wpisany przez użytkownika. Każde narzędzie samodzielnie rozpoznaje działkę, więc wcześniejsze wywołanie resolve nie jest potrzebne. Przy statusie ambiguous pokaż kandydatów albo ponów wywołanie z id wybranego kandydata; nigdy nie wybieraj samodzielnie bez wiedzy użytkownika. Każda odpowiedź dotycząca danych tematycznych zawiera coverage i note: covered oznacza obecność rekordu, covered_no_data oznacza brak rekordu w źródle obejmującym to miejsce, not_covered oznacza brak publikacji przez państwo lub brak danych w tym miejscu, a not_computed oznacza, że wyniku jeszcze nie obliczono. Cytując fakt, przytocz note, source.attribution i as_of. Nie określaj działki jako „bezpiecznej”: podaj, co wynika z każdego źródła i czego ono nie obejmuje. Nie pisz „brak planu” bez wskazania, czy chodzi o plan ogólny czy MPZP, jego statusu (draft, adopted, in_force, none; dla MPZP status może być null, gdy źródło go nie publikuje) i źródła. Jeżeli źródło wymienia strefę MPZP bez statusu prawnego, coverage wynosi covered, a status i effective_from mają wartość null; przytocz note i nie ustalaj statusu samodzielnie. Nie zwracamy numerów ksiąg wieczystych ani danych właścicieli. Pole billing pokazuje koszt wywołania; opłaty za odpowiedzi not_covered i błędy są zwracane. Każda odpowiedź v2 zawiera licencję, zakres i metodę. extracted oznacza metodę pozyskania, a nie stan coverage; wynik poniżej progu ma stan not_covered. Powierzchnia z area.source równym computed nie jest urzędową powierzchnią działki. Klucze API i połączenie OAuth korzystają z kredytów tego samego konta. Wyszukiwanie na podstawie ogłoszenia zwraca wyłącznie identyfikatory kandydatów i wymaga włączenia LANDFEED_LISTING_LOOKUP_ENABLED.

## Annotations

```json
{
  "idempotentHint": true,
  "openWorldHint": false,
  "readOnlyHint": true
}
```

## Coverage states

Cztery stany zakresu danych dla jednej kategorii w danym miejscu. covered: źródło obejmuje to miejsce i zawiera rekord; value zawiera ten rekord. covered_no_data: źródło obejmuje to miejsce, lecz nie zawiera rekordu; value ma określoną dla danej kategorii pustą wartość (false, 0, [], none), nigdy null; jest to potwierdzony brak rekordu, za który naliczana jest opłata. not_covered: źródło nie obejmuje miejsca albo państwo nie publikuje tych danych w postaci do odczytu maszynowego; value=null, agent nie może wyciągać wniosków, a opłata jest zwracana, gdy zapytanie dotyczy tych danych. not_computed: posiadamy źródło, lecz nie obliczyliśmy jeszcze wyniku dla tego miejsca, np. trwa ładowanie zbioru; value=null, opłata jest zwracana. Każdy stan zawiera uwagę napisaną prostym językiem.

States: `covered` | `covered_no_data` | `not_covered` | `not_computed`.

`LayerAnswer` required fields: `layer`, `coverage`, `value`, `note`, `source`, `as_of`, `layer_version`.

## Billing rule

Koszt żądania. charged: liczba naliczonych wywołań po zwrotach. refunded: liczba wywołań naliczonych, a następnie zwróconych. rule: zastosowana reguła. Płatne są odpowiedzi, potwierdzone braki rekordów (covered_no_data) i niejednoznaczne listy kandydatów. Bezpłatne są błędne dane wejściowe (400), brak uwierzytelnienia (401), odpowiedzi bez zmiany danych (304) i operacje bezpłatne. Zwrot obejmuje pozostałe 4xx, każde 5xx, status not_covered oraz odpowiedź dotyczącą jednej kategorii ze stanem not_covered lub not_computed. W operacjach zbiorczych liczby dotyczą poszczególnych elementów.

Rule values: `charged` | `free_operation` | `free_invalid_input` | `free_unauthorized` | `free_not_modified` | `refunded_client_error` | `refunded_server_error` | `refunded_not_covered` | `refunded_not_computed` | `batch_mixed`.

## curl example of the REST binding

```sh
curl --silent --show-error --request GET "https://mcp.agentdzialek.pl/v1/search" --get \
  -H "X-Api-Key: ${LANDFEED_API_KEY}" \
  --data-urlencode 'id=141803_2.0001.12/3'
```

MCP transport invocation: not specified in the source contract.
