MCPサーバー

Geolithic

io.github.HowardZheni/geolithic
暗号資産・Web3 地図・位置情報 公開・接続可能 MCP 2025-11-25

このMCPでできること

Supports leasing and verifying geographic Earth segments, recording cryptographic attestations tied to locations and time, and settling bids and payments on a public chain.

attest
Attach your own sha256 to the face-term you hold: the claim and the attach in one. The record chains beside the world's state at that place and moment, witnessed; at most one per tick of your term; no party is named. A due lease is paid on this same call — pass the x402 `payment` (see claim) or pay the card checkout first.
入力スキーマ
{'type': 'object', 'title': 'attestArguments', 'required': ['addr', 'start', 'amount_degrees', 'salt', 'hash'], 'properties': {'addr': {'type': 'string', 'title': 'Addr'}, 'hash': {'type': 'string', 'title': 'Hash'}, 'salt': {'type': 'string', 'title': 'Salt'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'start': {'type': 'string', 'title': 'Start'}, 'payment': {'type': 'string', 'title': 'Payment', 'default': ''}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees'}}}
bid
Bid for the NEXT term of a face-stratum (address F{base}·{digits}, level 4–7 by digit count; amount in degrees ≥ the reserve, ≤ 720, at most 12 decimals). Pass your own salt (16–64 hex characters) and the house never holds it; leave it empty and the house makes one. Returns a receipt: KEEP THE SALT — it is the only credential. The gavel strikes at the receipt's `gavel` tick; then use claim().
入力スキーマ
{'type': 'object', 'title': 'bidArguments', 'required': ['addr', 'amount_degrees'], 'properties': {'addr': {'type': 'string', 'title': 'Addr'}, 'salt': {'type': 'string', 'title': 'Salt', 'default': ''}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees'}}}
catalog
What is for lease: the strata (L4–L7), their terms on the Earth ladder, the reserve prices in degrees, how to bid and claim, and the founding period's stated limits.
入力スキーマ
{'type': 'object', 'title': 'catalogArguments', 'properties': {}}
claim
After the gavel: present your bid's exact fields and salt. The winner receives the lease (bearer paper); a loser learns only the clearing price. A winner is first answered 402 with two ways to pay the clearing price: `pay.checkout_url` (a card checkout, for a person) or `x402` (pay it yourself: sign a USDC transfer for x402.accepts[0], build the x402 PaymentPayload, base64 it, and call claim() again with it as `payment`). The lease issues at once.
入力スキーマ
{'type': 'object', 'title': 'claimArguments', 'required': ['addr', 'start', 'amount_degrees', 'salt'], 'properties': {'addr': {'type': 'string', 'title': 'Addr'}, 'salt': {'type': 'string', 'title': 'Salt'}, 'start': {'type': 'string', 'title': 'Start'}, 'payment': {'type': 'string', 'title': 'Payment', 'default': ''}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees'}}}
ground
Where a face address stands on the earth — at the founding and at a tick's chained frame, with the parcel's drift in km.
入力スキーマ
{'type': 'object', 'title': 'groundArguments', 'required': ['addr'], 'properties': {'addr': {'type': 'string', 'title': 'Addr'}, 'tick_iso': {'type': 'string', 'title': 'Tick Iso', 'default': ''}}}
hold_ground
Hold the ground you work on, in one call: quote the face under the place for the session's length, bid, wait for the gavel (at most four minutes), then claim and attach your sha256 — paying by x402 on the way if you pass `payment` signed for the quote's requirements. Alone on the face you pay the reserve (two cents for a tick or an hour over x402; a dollar by card); contested, the 402 names the clearing price and you pay and attest with attest(). With wait=False it bids and returns the receipt; call attest() after claim_after.
入力スキーマ
{'type': 'object', 'title': 'hold_groundArguments', 'required': ['lat', 'lon', 'hours', 'hash'], 'properties': {'lat': {'type': 'number', 'title': 'Lat'}, 'lon': {'type': 'number', 'title': 'Lon'}, 'hash': {'type': 'string', 'title': 'Hash'}, 'salt': {'type': 'string', 'title': 'Salt', 'default': ''}, 'wait': {'type': 'boolean', 'title': 'Wait', 'default': True}, 'hours': {'type': 'number', 'title': 'Hours'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'payment': {'type': 'string', 'title': 'Payment', 'default': ''}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees', 'default': ''}}}
meet
Did two stamps meet? Pass the two stamps' chain.digest values. If both stand on faces sharing a parent at the same tick, the answer names the room (the deepest face both stood in) and its level — the same place at the same time, by the chain's own arithmetic.
入力スキーマ
{'type': 'object', 'title': 'meetArguments', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'title': 'A'}, 'b': {'type': 'string', 'title': 'B'}}}
open_ground
Your address and the contents of your facet, and nothing else: present the lease's own fields (the receipt's addr, start, amount_degrees, salt) and get, for the newest chained tick of your term or the `tick` you name, the address you hold — 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 with hashes alone), and 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 and the stamps on it. The whole tick is never served. `field` narrows to wind_10m, wind_850, magnet.
入力スキーマ
{'type': 'object', 'title': 'open_groundArguments', 'required': ['addr', 'start', 'amount_degrees', 'salt'], 'properties': {'addr': {'type': 'string', 'title': 'Addr'}, 'salt': {'type': 'string', 'title': 'Salt'}, 'tick': {'type': 'string', 'title': 'Tick', 'default': ''}, 'field': {'type': 'string', 'title': 'Field', 'default': ''}, 'start': {'type': 'string', 'title': 'Start'}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees'}}}
quote_ground
The plan to hold the ground under a place for a session: the face at the level the duration asks (a tick, an hour, six hours, a day), the next term, the reserve, the dollars if you bid alone, the claim_url — and the exact x402 requirements to sign before the gavel. Pass your own salt (16–64 hex) and the house never holds it.
入力スキーマ
{'type': 'object', 'title': 'quote_groundArguments', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'title': 'Lat'}, 'lon': {'type': 'number', 'title': 'Lon'}, 'salt': {'type': 'string', 'title': 'Salt', 'default': ''}, 'hours': {'type': 'number', 'title': 'Hours', 'default': 1}}}
rent_roll
The public rent roll: every strike (prices always, parties never) with each record's chain identity, plus current occupancy. The market data that prices the market.
入力スキーマ
{'type': 'object', 'title': 'rent_rollArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 24}}}
stamp
Stamp the moment: chain your sha256 beside the Earth's tick — the clock's now, with the world's last witnessed state beside it — for two cents over x402, no account. Name where, if you like: an address, or lat and lon for the face under a place. Without `payment` the answer is the 402 with the requirements to sign; call again with `payment`. Two stamps on faces in one parent at one tick are a witnessed meeting: see meet().
入力スキーマ
{'type': 'object', 'title': 'stampArguments', 'required': ['hash'], 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lat', 'default': None}, 'lon': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lon', 'default': None}, 'addr': {'type': 'string', 'title': 'Addr', 'default': ''}, 'hash': {'type': 'string', 'title': 'Hash'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'payment': {'type': 'string', 'title': 'Payment', 'default': ''}}}
tell_the_house
Say what confused you, what you wanted, what you would pay for — a person reads every word and the door itself changes. `where` may name the tool or route you were on. Nothing is promised back but a reading.
入力スキーマ
{'type': 'object', 'title': 'tell_the_houseArguments', 'required': ['words'], 'properties': {'where': {'type': 'string', 'title': 'Where', 'default': ''}, 'words': {'type': 'string', 'title': 'Words'}}}
tick
The newest tick of the Earth, free. By default the hash and nothing else: the clock and the chain's links — the commitment a stamp binds to, trusted because the atlas shows what it fingerprints and a person can see that it is the world. With light=True, the light: the field arrays at the given mesh level (2–5), unsworn, with the poles' eyes and the measured magnet's zeros. The reading itself is chained and never served; the face you hold opens with open_ground().
入力スキーマ
{'type': 'object', 'title': 'tickArguments', 'properties': {'light': {'type': 'boolean', 'title': 'Light', 'default': False}, 'slice': {'type': 'integer', 'title': 'Slice', 'default': 4}}}
verify_lease
Verify a lease LOCALLY against the public chain. Fetches the named rent-roll record with its chain identity, then redoes the arithmetic here: sha256(canonical record) must equal the served digest and the lease's roll.digest; sha256(prev_chained + digest) must equal the served link; the link must match the ledger's own listing at /api/commitments; the row must carry this lease's term, serial, clearing price and winner envelope; and, given the salt, sha256(addr|level|start|amount|salt) must open winner_env — with the receipt's amount_degrees if the bid differed from the clearing price. Nothing is taken on the door's say-so: every hash is recomputed. What remains trusted is the chain's content itself, whose external witnesses are the anchors in server/anchors/.
入力スキーマ
{'type': 'object', 'title': 'verify_leaseArguments', 'required': ['lease_json'], 'properties': {'salt': {'type': 'string', 'title': 'Salt', 'default': ''}, 'lease_json': {'type': 'string', 'title': 'Lease Json'}, 'amount_degrees': {'type': 'string', 'title': 'Amount Degrees', 'default': ''}}}
witness
Ask what the Earth was doing: the wind at a place at a moment as the chain committed it — the nest face's three corners at 10 m and 850 hPa with their coordinates, the Merkle opening to the tick's chained root, the chain identity of that state, and the outside anchor that covers it. `at` is an ISO hour or tick (UTC); without it, the newest chained tick. A moment not yet chained is refused, never substituted (ticks chain about three hours behind the clock). Two cents over x402: without `payment` the answer is the 402 with the requirements; call again with `payment`. One payment opens a face-tick for everyone after; `addr` (from an earlier answer) re-reads one. Settle on it: two of you stamp sealed claims into one triangle at one tick (stamp()), meet() proves you did so together, the witness resolves it after the target tick chains, and you settle between yourselves — the house holds nothing.
入力スキーマ
{'type': 'object', 'title': 'witnessArguments', 'properties': {'at': {'type': 'string', 'title': 'At', 'default': ''}, 'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lat', 'default': None}, 'lon': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lon', 'default': None}, 'addr': {'type': 'string', 'title': 'Addr', 'default': ''}, 'payment': {'type': 'string', 'title': 'Payment', 'default': ''}}}
追加
verify_lease
2026年9月17日12:42
追加
tell_the_house
2026年9月17日12:42
追加
hold_ground
2026年9月17日12:42
追加
quote_ground
2026年9月17日12:42
追加
witness
2026年9月17日12:42
追加
meet
2026年9月17日12:42
追加
stamp
2026年9月17日12:42
追加
attest
2026年9月17日12:42
追加
claim
2026年9月17日12:42
追加
bid
2026年9月17日12:42
追加
ground
2026年9月17日12:42
追加
rent_roll
2026年9月17日12:42
追加
open_ground
2026年9月17日12:42
追加
tick
2026年9月17日12:42
追加
catalog
2026年9月17日12:42