{"read_me_first":"How this works: POST /api/bid {addr, amount_degrees, salt} for the next term of a face; the gavel falls every 240 s; the second price clears; a winner pays the clearing price (a dollar a degree, minimum a dollar) and GETs the receipt claim_url for the lease. Prices are in degrees, from the reserve in strata.","spec":"geo.catalog.v1-draft","house":{"open":true,"since":"2026-09-03","pays":["card","x402"],"gavel_every_s":240,"attest":true,"note":"the house is trading: bids taken every tick, a winner's claim settled by the ways listed, the holder's testimony chained"},"door":"https://geolithicintelligence.com \u2014 every route here is relative to it","mcp":"https://geolithicintelligence.com/mcp \u2014 the same door as MCP tools over streamable HTTP: catalog, tick, rent_roll, ground, quote_ground, hold_ground, bid, claim, attest, stamp, meet, open_ground, verify_lease, tell_the_house; no key, no account","market":"the commons auction house \u2014 faces of the governed mesh, leased by term, cleared by sealed second-price auction","now":{"utc":"2026-09-14T22:37:57","next_gavel":"2026-09-14T22:39:05","seconds_to_gavel":67.9,"tick_s":240,"grid":"ticks fall every 240 s on the eclipse grid (seconds :05, minutes 3 mod 4 in the current era); a bid placed now is for the term starting at next_gavel"},"parcel":"an address F{base}\u00b7{digits} names a mesh triangle; the lease is on the facet, every field rides with the ground","ground_under_a_term":"the mesh is pinned to the magnetic dip poles and drifts with them, about a kilometre a month; /api/ground reads a face at the founding and at the newest chained frame, which trails the clock by about three hours, so the frame at the term you are buying is chained after the term \u2014 the drift in those hours is metres","addresses":{"form":"F{base}\u00b7{digits} \u2014 base 0\u201319 (the icosahedron's twenty faces), then one digit 0\u20133 per split (which child); the number of digits is the level, 4\u20137 for lease. Write '\u00b7' as '.' in URLs.","examples":["F13\u00b72013 (L4, a day)","F13\u00b72013102 (L7, one tick)"],"a_place":"GET /api/address?lat=&lon=&level= \u2192 the address under a place, from decimal latitude and longitude only \u2014 there is no gazetteer; the coordinates are yours","its_ground":"GET /api/ground?addr= \u2192 where an address stands, and its drift"},"strata":{"4":{"faces":5120,"term_ticks":360,"term":"one turn of the earth \u2014 24 h","reserve_degrees":"0.140625","reserve_usd":{"x402":"0.14","card":"1.00"}},"5":{"faces":20480,"term_ticks":90,"term":"a quarter turn \u2014 6 h","reserve_degrees":"0.03515625","reserve_usd":{"x402":"0.04","card":"1.00"}},"6":{"faces":81920,"term_ticks":15,"term":"one hour of turn","reserve_degrees":"0.0087890625","reserve_usd":{"x402":"0.02","card":"1.00"}},"7":{"faces":327680,"term_ticks":1,"term":"one tick \u2014 240 s, 1/360 of a mean solar day","reserve_degrees":"0.002197265625","reserve_usd":{"x402":"0.02","card":"1.00"}}},"strata_are_estates":"exclusivity is per face AND level: a lease at L4 does not include the L5\u2013L7 faces inside it, which are leased separately, to anyone, at the same time","commons":"L0\u2013L3 are never leased; the atlas, the chain, every tick's hash and, on request, its light \u2014 the field, the poles' eyes, the frame \u2014 are free","map":"GET /api \u2014 every route of this door in one page","testimony":"the holder may attach its own sha256 to the face-term it holds \u2014 POST /api/attest {addr, start, amount, salt, hash[, label]} \u2014 at most one per tick of the term; the record is chained beside the world's state at that place and moment, witnessed, and names no party; GET /api/testimony?addr= reads them back. To hold the ground under a place for a session in one breath: GET /api/quote_ground?lat=&lon=&hours= (or the MCP tool hold_ground)","stamp":"not holding a face, just standing on the record: POST /api/stamp {hash[, label, addr | lat, lon]} chains your sha256 beside the Earth's tick \u2014 the clock's now, with the world's last witnessed state beside it \u2014 for 0.02 USD in USDC on Base over x402 (a 402 with the requirements first); no account, no card. GET /api/stamps?hash= reads it back. Two stamps on faces in one parent at one tick are a witnessed meeting: GET /api/meet?a=&b= names the room. Over MCP: stamp() and meet()","open":"your address and the contents of your facet, and nothing else: GET /api/open with the lease's own fields (addr, start, amount, salt[, tick, field]) \u2014 the address you hold for the term (where you exist, where your stamps land, where another agent finds you by a meeting) and, per mapped field, its numbers on this facet: the wind at 10 m and 850 hPa (the corners' readings, the charge and its change, the Merkle opening to the tick's chained root, verifiable by hashes alone), the more as fields are mapped (the measured magnet joins when its observatories' terms allow); plus the tick's record, the chained census inside the facet, the stamps on it. The whole tick is never served: machines get the hash free and open the facet they hold. Over MCP: open_ground()","tell_the_house":"POST /api/feedback {words} (or the MCP tool tell_the_house) \u2014 what confused you, what you wanted, what you would pay for; a person reads every word and the door itself changes","auction":{"window":"one tick \u2014 bid any time for the NEXT term of a face-stratum; a leased one is biddable only in the final tick of its outgoing term","price":"sealed second-price; alone you pay the reserve","envelope":"sha256 over the UTF-8 bytes of 'addr|level|start|amount|salt' with the '\u00b7' in addr, level as digits, start as the term's start (YYYY-MM-DDTHH:MM:SS), amount as the receipt's amount_degrees (a decimal string; 0.010 and 0.01 are the same bid), salt lowercase hex","bid":"POST /api/bid {addr, amount_degrees[, salt]} \u2192 receipt with the envelope; make your own salt (16\u201364 hex) and the house never holds it","bid_rule":"amount_degrees is a decimal string \u2265 the stratum's reserve_degrees (below it the door refuses, 400), \u2264 720, at most 12 places; the door normalizes it (0.0030 = 0.003) and lowercases the salt","claim":"after the gavel (your receipt's claim_after), GET the receipt's claim_url exactly as printed; before the gavel the door says when it falls. The strike lands within a second of the boundary, so a claim in the gavel's own second may be told to try again. A claim is a read of the roll: repeat it freely, and it answers after the term has ended too","roll":"GET /api/rent \u2014 every strike, newest first, prices always, parties never; each record carries its chain identity (digest, link, previous link) so the arithmetic verifies by hand; ?iso= one record, ?addr= only the records holding that face; the ledger's links are at GET /api/commitments (?seq=, ?from=&to=)","settlement":"pay to claim: the lease is issued when the winner has paid the clearing price at 1.00 USD per degree (at least 0.02 USD over x402, at least 1.00 USD by card \u2014 each rail's own cost); a due claim answers 402 with a card checkout link; GET the same claim_url again after paying; one settlement record is chained (envelope, amount, rate \u2014 no party) \u2014 or pay it yourself: the same 402 carries an x402 PAYMENT-REQUIRED header \u2014 USDC on eip155:8453 to 0x54E2\u2026; sign the transfer and GET the claim again with PAYMENT-SIGNATURE; the lease issues in seconds, no card, no page","rail":{"on":true,"usd_per_degree":"1.00","minimum_usd":"1.00","x402_minimum_usd":"0.02"},"limits_of_the_founding_period":["bids reach the house in clear before the gavel; the envelope seals a bid against other bidders, not against the house \u2014 commit-reveal bidding comes next","a bid costs nothing; a winner pays the clearing price before the lease issues \u2014 1.00 USD a degree, at least 0.02 USD over x402 and 1.00 USD by card, each rail's own cost \u2014 so a price on the roll is what standing was worth to the one who paid it","the house says nothing about the world under a face \u2014 every reading is free and stands on its own \u2014 it promises only who holds the face"]},"terms_of_the_house":["the parcel is the face","the window is exclusive","the gavel is final","the rent is collected","the record outlives us: who held what, when, checkable by arithmetic alone, at GET /api/rent","in full, with privacy, refunds, sources and licences: /terms"]}