Skip to content

MCP server · Model Context Protocol

baseray in your AI assistant

Ask an AI assistant about buildings in Romania and Czechia and it answers from baseray: the building at an address, the largest roofs in a town, the businesses registered at an address. It can save what it finds to your lead lists, and every answer links back to the building in the app.

Server URL

https://api.baseray.ai/mcp

Streamable HTTP with OAuth sign-in. Works with Claude, ChatGPT, Claude Code, Cursor, VS Code and any client that connects to remote MCP servers. You need a baseray account; the assistant uses it with your workspace’s data and limits.

Ask it things like

  • “Which industrial buildings over 2,000 m² in Ilfov have a business registered at the address?”
  • “Find apartment blocks in Brno with no solar panels on the roof and rank them by height.”
  • “What building is Strada Memorandumului 28, Cluj-Napoca? Who is registered there?”
  • “Save the ten largest commercial roofs in Timișoara to a new lead list called ‘Timișoara solar’.”

Connect an assistant

The server runs at one URL over Streamable HTTP. Add it to your assistant, sign in to baseray when it asks and approve the access.

Claude

  1. In Claude (web or desktop), open Settings → Connectors and choose Add custom connector.
  2. Name it baseray, paste the server URL and choose Connect.
  3. Sign in to baseray and approve the access.

ChatGPT

  1. In ChatGPT, turn on developer mode under Settings → Apps → Advanced settings.
  2. Create an app, name it baseray and paste the server URL. Authentication is OAuth.
  3. Sign in to baseray and approve the access.

Claude Code

claude mcp add --transport http baseray https://api.baseray.ai/mcp
  1. Run the command, then type /mcp in Claude Code and choose baseray to sign in.

Cursor

{
  "mcpServers": {
    "baseray": {
      "url": "https://api.baseray.ai/mcp"
    }
  }
}
  1. Add the server to ~/.cursor/mcp.json (or .cursor/mcp.json in a project). Cursor asks you to sign in to baseray.

VS Code

{
  "servers": {
    "baseray": {
      "type": "http",
      "url": "https://api.baseray.ai/mcp"
    }
  }
}
  1. Add the server to .vscode/mcp.json and start it from the editor. VS Code opens the baseray sign-in.

Any other client that supports remote MCP servers with OAuth connects the same way: give it the URL and it finds the sign-in by itself.

Sign-in and permissions

The assistant signs in as you, with OAuth 2.1 and PKCE. There is no key to copy: the first time the assistant uses baseray, a baseray page opens where you sign in, pick the workspace and approve what the assistant may do.

The consent page lists what the assistant asks for: buildings:read to search and read buildings and see your lead lists, and lead_lists:write to create lead lists and add buildings to them.

The assistant acts in one workspace with your rights there. If you leave the workspace, it stops working at once. Disconnect it any time under Settings → Connected apps in the app.

Tools

The assistant picks the tool; you ask in your own words. Each tool’s description tells it when to use it.

find_buildings read

Find the building at an address

The building at one address, point or company registration number, with its address, use, footprint, height, floors, dwellings, solar potential, existing solar panels and the businesses registered at the address. Nearest first.

address string
A street address with the town, e.g. “Bulevardul Eroilor 10, Brașov”.
latitude, longitude number
A point, WGS84, instead of an address.
companyRegistrationNumber string
A Romanian CUI or a Czech IČO, with country (RO or CZ): the building the business is registered at.
radiusMeters integer
How far to look, 5 to 200 m. Default 40.
limit integer
Buildings to return, 1 to 10. Default 3.

search_buildings read

Search buildings in an area

Find, count and rank buildings across an area, up to about a county. Returns the total that match and one ranked page; page further with offset.

place string
The area as a place name: a county, city, town or district, e.g. “Ilfov”, “Praha 5”.
boundingBox object
The area as west, south, east, north, instead of a place.
categories string[]
Keep only these categories: residential_house, apartment_block, commercial, industrial, agricultural, public, ancillary.
minFootprintAreaSquareMeters, minHeightMeters, minFloors, minDwellings number
Minimum size. Floors and dwellings filter where they are known.
onlyMeasuredHeights boolean
Keep only buildings whose height is measured, not estimated.
hasRegisteredBusiness, registeredBusinessNameContains, minRegisteredBusinessEmployees mixed
Filter on the businesses registered at the address.
existingSolarPanels string[]
detected, not_detected or unclear, from dated roof photos. Roofs never checked are left out.
minSolarCapacityKwp number
Minimum rooftop solar capacity in kWp.
sortBy string
volume (default), footprint_area, height or business_employees, largest first.
limit, offset integer
1 to 25 buildings a page (default 10); offset up to 500.

get_building read

Get building details

Every fact on one building returned by another tool, with the businesses whose registered office is at its address: name, registration number and stated employees.

buildingId uuid required
The id from find_buildings or search_buildings.
includeRegisteredBusinesses boolean
List the businesses registered at the address. Default true.

search_places read

Find a place

Coordinates and, for areas, a bounding box for a city, district, street or address in Romania or Czechia. Up to six matches, best first.

query string required
The place as a person would write it, e.g. “Cluj-Napoca” or “Brno-střed”.

list_lead_lists read

List lead lists

The workspace’s lead lists, most recently changed first, with how many buildings each holds and a link to it.

nameContains string
Keep lists whose name contains this text.
limit integer
1 to 50. Default 20.

save_buildings_to_lead_list writes

Save buildings to a lead list

Add buildings to an existing lead list or create a new one with them. Saving a building already on the list changes nothing. The assistant is told to save only when you ask.

buildingIds uuid[] required
1 to 100 building ids.
leadListId uuid
An existing list, from list_lead_lists.
newListName string
Or a name for a new list.

What the answers hold

Limits

Each connection can make 60 tool calls a minute and 2,000 a day. Over a limit the tool answers with how long to wait, and the assistant tells you.

One search covers at most 3 degrees of latitude and longitude, about the size of a county, and pages up to 500 buildings deep. For whole-country lists, use the REST API or CSV export.