# spacexploration > Commercial real estate listings, built for AI agents. Search, inspect, and save CRE listings over a Model Context Protocol (MCP) server — connect with OAuth + PKCE and self-register via Dynamic Client Registration, so there's no API key to request. Listing pages and the sitemap are openly crawlable. The MCP server is the primary surface for agents, and connecting is frictionless: clients register themselves (RFC 7591 Dynamic Client Registration) and authorize with OAuth 2.0 Authorization Code + PKCE — no human provisions a key. Read and write tools share one `mcp:use` scope; writes are additionally gated on owning the underlying listing. ## MCP server (start here) - [MCP endpoint](https://spacexploration.com/mcp): Streamable-HTTP MCP server, OAuth-protected. The endpoint advertises its authorization server via RFC 9728 protected-resource metadata and supports Dynamic Client Registration, so compliant clients connect with no manual setup. Read tools: `get_registry`, `search_listings`, `get_listing`, `interpret_search`, `geocode_address`. Authoring tools (your own listings): `create_listing`, `update_listing`, `set_listing_attributes`, `attach_listing_photo`, `sign_attachment_upload`, `confirm_attachment_upload`, `delete_attachment`, `publish_listing`, `withdraw_listing`. Saved searches: `save_search`, `list_my_saved_searches`, `delete_saved_search`, `list_my_listings`. - [Server manifest](https://spacexploration.com/.well-known/mcp/server.json): MCP registry `server.json` for this server. - Recommended search flow: call `get_registry` for the filterable attribute schema (field names, types, allowed values), then `search_listings` with structured filters — or hand a natural-language query to `interpret_search` to get those filters back first. `get_listing` takes a hashid for the full projection. - Recommended authoring flow: `geocode_address` (turns an address string into the coordinates + county `create_listing` needs) → `create_listing` (returns the full listing incl. its hashid) → `update_listing` (pricing/marketing/parcel) → `set_listing_attributes` (the rich registry fields — pass a map of field name to value; only the fields `get_registry` marks `writable: true`, e.g. `attr_parking_spaces`, `attr_office_class`; the rest are computed at publish) → `attach_listing_photo` (one call per image URL; the server fetches and ingests it) → `publish_listing`. Everything is keyed by the listing hashid; the numeric id is never needed. Authoring requires a verified email. ## Open data (no auth) - [Search](https://spacexploration.com/listings): Human-facing search UI. Every listing has a stable, citable permalink. - [Sitemap](https://spacexploration.com/sitemap.xml): All publicly visible listings with last-modified timestamps.