Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Changed the definition of "look_up_parcel"
⟨46 unchanged words⟩ it, access and nearby amenities, and,whereforresearcha building that hasfoundbeenitlisted on SPACEXPLORATION, the county public record (owner, assessed ⟨46 unchanged words⟩ the background, which takes a minute or two, and researches its county record, which can take several minutes: while status.gathering or status.researching_county_record is true, check ⟨17 unchanged words⟩
Authorization not required, issuer https://spacexploration.com
Added "get_parcel" and "look_up_parcel"; removed "confirm_attachment_upload" and "sign_attachment_upload"
Get building — Read a building SPACEXPLORATION already has, by the hashid that look_up_parcel returns or that a building page URL (/parcel/{hashid}/...) contains. Returns the same data as look_up_parcel: the address and building page URL, the FEMA flood zone and natural hazard risk, EPA records nearby, Census demographics, access and nearby amenities, the county public record with numbered sources where research has found it, and any live listings in it. It looks nothing up and starts nothing, so use it to check on a building whose status.gathering or status.researching_county_record was true.
Look up a building — Look up any US building by its street address and get the public data SPACEXPLORATION keeps on it, whether or not it is for sale or lease: the FEMA flood zone and natural hazard risk, EPA records nearby (including leaking underground storage tanks), Census demographics around it, access and nearby amenities, and, where research has found it, the county public record (owner, assessed and market values, taxes, tax lots, recorded sales) with a numbered source for each figure. Also returns the building page URL to share and any live listings in it (pass a listing hashid to get_listing). The first…
Confirm attachment upload — Finalize an out-of-band upload after the file bytes have been PUT to the presigned URL. Verifies the stored object matches what was signed (size and content-type) and marks the attachment ready. Returns the attachment snapshot with its public variant URLs. Idempotent: confirming an already-confirmed upload returns the same snapshot.
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Changed the definition of "get_listing" and "update_listing"
⟨47 unchanged words⟩ is included only when the requesting user isauthorised.authorised to manage the listing; such a user also gets every lease suite with its id and status, the rows update_listing takes back.
Update a listing's parcel, pricing, or marketingdata.data, or a lease's suites. Pass at least one group (parcel, pricing, marketing, spaces); send each group whole, not just ⟨11 unchanged words⟩
Authorization not required
Authorization not required, issuer https://spacexploration.com
Changed the definition of "list_my_listings" and "sign_attachment_upload"
{"properties":{"status":{"description":"Filter by listing status.OneOmitof:to return all statuses.","enum":["draft","pending_payment","active","suspended","sold",
Changed the definition of "sign_attachment_upload"
⟨81 unchanged words⟩ . Omit to auto-route by MIME (images→photos,docs→documentsPDFs→documents; documents are PDF only). Singleton slots (avatar/cover/logo) must be set ⟨76 unchanged words⟩
Changed the definition of "get_listing"
⟨16 unchanged words⟩ including parcel data, all attribute details, andattachments.attachments: photos, plus the public documents the broker attached (brochures, offering memoranda, site plans) with their filename and a direct download URL. Broker contact is included only when the requesting user is authorised.
Changed the definition of "geocode_address", "get_listing", "get_registry" and 5 more
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Geocode address"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Get listing"}
Authorization not required, issuer https://spacexploration.com
Changed the definition of "search_listings"
Search commercial real estate listings. Returns paginated hits with facetcounts.counts; every hit carries the public `url` to cite and its `listed_at` / `updated_at` stamps. For AI-driven search, call interpret_search first to ⟨19 unchanged words⟩
Changed the definition of "attach_listing_photo", "confirm_attachment_upload", "create_listing" and 12 more
AttachListing PhotolistingToolphoto
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Attach listing photo"}
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Changed the definition of "sign_attachment_upload"
⟨40 unchanged words⟩ (photos, documents), users (avatar), teams (logo), and pages (cover, photos). Avatars and logos pass an automated content check before they appear publicly.
Authorization not required, issuer https://spacexploration.com
Recently observed → Live
Live → Recently observed
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Certificate changed, valid to 2026-12-14
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Authorization not required, issuer https://spacexploration.com
Certificate recorded, valid to 2026-10-16
Authorization not required, issuer https://spacexploration.com
First tool surface recorded: 15 tools (server version 1.0.0)
Showing the latest 34 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
Sign attachment upload — Begin an out-of-band file upload. Returns a presigned R2 PUT URL and the headers to use; the file bytes are uploaded directly to storage, never through this channel. After PUTting the file, call confirm_attachment_upload with the returned attachment_id. Supports listings (photos, documents), users (avatar), and pages (cover, photos). Avatars pass an automated content check before they appear publicly.
⟨94 unchanged words⟩ :"Pricing fields to update: listing_type (sale|lease);.forFor a sale set sale_price (dollars), or omit it and set price_on_request=true fora\"price upon request\". A leasesetislease_ratepriced(perthesuite (see spaces); lease_rate_periodbasis(per_sqft_year|per_sqft_month|per_month|per_year, default per_sqft_year) is the basis every suite's rate is quoted in. A lease with at most one suite, such as a whole building leased as one, can instead be priced here: lease_rate andoptionallyavailable_sqftlease_rate_period(INTEGER SQUARE FEET), or price_on_request=true, set that one suite, creating it when there is none. Optionally expires_at (per_sqft_year|per_sqft_month|per_month|per_yearISO date).","type":["object","null"]},"spaces":{"description":"AOmitlease's suites, as thepricewhole list: a suite left out is removed, andsetanprice_on_request=trueempty list removes them all. A whole building leased as one is a single suite. To change suites, start from the spaces get_listing returns to you as the owner: a suite sent with its id is updated, and any field it leaves out keeps its stored value; a suite without an id is added. Publishing a lease needs at least one available suite with available_sqft and a lease_rate or price_on_request=true.","items":{"additionalProperties":false,"properties":{"available_date":{"description":"ISO date the suite is available from.","type":["string","null"]},"available_sqft":{"description":"Available space in INTEGER SQUARE FEET.","type":["integer","null"]},"id":{"description":"The suite's id, as get_listing returns it to you as the owner. Omit to add a suite.","type":"integer"},"lease_rate":{"description":"Asking rate in the listing's lease_rate_period basis, e.g. 24.5 for $24.50/SF/yr. Null when quoted on request.","type":["number","null"]},"lease_type":{"description":"How operating expenses are split: nnn, fsg (full service gross), mg (modified gross), or gross.","enum":["nnn","fsg","mg","gross",null],"type":["string","null"]},"max_term_months":{"description":"Longest lease term offered, in months.","type":["integer","null"]},"min_term_months":{"description":"Shortest lease term offered, in months.","type":["integer","null"]},"name":{"description":"Suite label, e.g. \"priceSuiteupon200\"request\or \"Floor 3\".","type":["string","null"]},"price_on_request":{"description":"trueOptionallywhenexpires_atthe rate is quoted on request.","type":"boolean"},"space_type":{"description":"Use of the space: a value from the space_type attribute get_registry returns.","type":["string","null"]},"status":{"description":"available (ISOadatenew suite's default)., pending, or leased. Only available suites are shown and priced.","typeenum":["available","pending","leased"],"type":"string"}},"type":"object"},"type":["array","null"]}},"required":["hashid ⟨2 unchanged words⟩
⟨40 unchanged words⟩ (photos, documents), users (avatar),teams (logo),and pages (cover, photos). Avatarsand logospass an automated content check before they appear publicly.
⟨71 unchanged words⟩ photos\", \"documents\", \"avatar\",\"logo\",or \"cover\". Omit to auto-route by MIME (images→photos, PDFs→documents; documents are PDF only). Singleton slots (avatar/cover/logoavatar/cover) must be set explicitly.","type":[ ⟨74 unchanged words⟩
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Get attribute registry"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Interpret search query"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List my listings"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":" ⟨4 unchanged words⟩
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Save search"}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Search listings"}
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Confirm attachment upload"}
CreateListing Toollisting
{"properties":{"apn":{"description":"The county assessor parcel number (APN / parcel ID), if known. Used with the county to find the building if another listing already has it.","type":["string","null"]},"city":{"description":"City.","type": ⟨152 unchanged words⟩
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Create listing"}
DeleteSaved SearchsavedToolsearch
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete saved search"}
GeocodeAddress Tooladdress
{"openWorldHint":true,"readOnlyHint":true,"title":"Geocode address"}
GetListing Toollisting
{"openWorldHint":false,"readOnlyHint":true,"title":"Get listing"}
GetRegistryattributeToolregistry
{"openWorldHint":false,"readOnlyHint":true,"title":"Get attribute registry"}
InterpretSearchsearchToolquery
{"openWorldHint":false,"readOnlyHint":true,"title":"Interpret search query"}
ListMy ListingsmyToollistings
{"openWorldHint":false,"readOnlyHint":true,"title":"List my listings"}
ListMy SavedmySearchessavedToolsearches
{"openWorldHint":false,"readOnlyHint":true,"title":"List my saved searches"}
SaveSearch Toolsearch
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Save search"}
SearchListings Toollistings
{"openWorldHint":false,"readOnlyHint":true,"title":"Search listings"}
SetListing AttributeslistingToolattributes
{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Set listing attributes"}
SignAttachment UploadattachmentToolupload
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Sign attachment upload"}
UpdateListing Toollisting
⟨63 unchanged words⟩ | sqm | hectares; display-only), year_built,property_type.property_type, place_id (from geocode_address — when the address moves, it matches the listing to a building already on file).","type":["object","null"]} ⟨55 unchanged words⟩
{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Update listing"}