# Geolithic

> One face of the Earth, yours alone for one term, proven on a public chain. A dollar. Readings free.

- name: io.github.HowardZheni/geolithic
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 77/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.HowardZheni%2Fgeolithic
- tools: https://api.protogrid.dev/v1/servers/io.github.HowardZheni%2Fgeolithic/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "geolithic": {
      "type": "http",
      "url": "https://geolithicintelligence.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 45
- drivers: +website +reachable +uptime-100% ~updated-41d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: rent_roll (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); bid (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); tick (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,676 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 15, about 2,676 tokens to load them all
- tool set hash: 921f4a750471cf47ceb93acb70088cf6
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.HowardZheni/geolithic.svg)](https://protogrid.dev/servers/io.github.HowardZheni/geolithic)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://geolithicintelligence.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (15)

- `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.
- `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().
- `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.
- `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.
- `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.
- `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.
- `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.
- `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.
- `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.
- `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.
- `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().
- `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.
- `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().
- `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/.
- `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.
