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://api.steledger.com/
Changed the definition of "list_records", "node_status", "read_record" and 6 more
⟨88 unchanged words⟩ :"RecordEntry","type":"object"}},"description":"A page of records, newest first. Pass `next_offset` back as `offset` for\nthe next page; it is null on the last one.","properties":{"github_id":{"title":"Github ⟨40 unchanged words⟩
{"description":"Node sync status. Fields are nullable: the node may report any of them as null.","properties":{"blocks":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Blocks"},"connections":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Connections"},"headers":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Headers"},"synced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Synced"},"verificationprogress":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Verificationprogress"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Version"}},"title":" ⟨3 unchanged words⟩
{"description":"An NVS record (confirmed from the name DB, or pending from the mempool).\nA field that does not apply is left out: a pending record omits several.\n`status` says whether the write landed; `expired` says\nwhether the name is still held — a lapsed record still reads back as\n'confirmed'.","properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Address"},"address_is_mine":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Address Is Mine"},"days_added": ⟨2 unchanged words⟩ integer"},{"type":"null"}],"default":null,"title":"Days Added"},"expired":{" ⟨2 unchanged words⟩ boolean"},{"type":"null"}],"default":null,"title":"Expired"},"expires_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Expires At"},"expires_in":{" ⟨2 unchanged words⟩ integer"},{"type":"null"}],"default":null,"title":"Expires In"},"name":{" ⟨2 unchanged words⟩ string"},{"type":"null"}],"default":null,"title":"Name"},"operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Operation"},"pending":{"anyOf" ⟨3 unchanged words⟩ object"},{"type":"null"}],"default":null,"
⟨53 unchanged words⟩ :"Quota","type":"object"}},"description":"The on-chain write: the NVS name written, its transaction id, and the\nwrites this account has left afterwards.","properties":{"name":{"title":"Name" ⟨18 unchanged words⟩
{"description":"Confirmation that the message was stored; nothing answers it automatically.","properties":{"id":{"title":"Id" ⟨20 unchanged words⟩
⟨53 unchanged words⟩ :"Quota","type":"object"}},"description":"The on-chain write: the NVS name written, its transaction id, and the\nwrites this account has left afterwards.","properties":{"name":{"title":"Name" ⟨18 unchanged words⟩
⟨53 unchanged words⟩ :"Quota","type":"object"}},"description":"One transaction for the whole batch: its id, every name written, and the\nwrites this account has left afterwards.","properties":{"count":{"title":"Count" ⟨27 unchanged words⟩
⟨102 unchanged words⟩ :"Quota","type":"object"}},"description":"One transaction for the whole transfer: its id, the names moved, where\nthey went, what that means from now on, the network-fee funds if asked for\n(else null), and the writes left afterwards.","properties":{"after":{"title":"After" ⟨47 unchanged words⟩
⟨53 unchanged words⟩ :"Quota","type":"object"}},"propertiesdescription":{"authenticatedThe current session's identity. `authenticated` is always present; the\nGitHub-rooted fields are present only when signed in, and `hint` only when not.","properties":{"defaultauthenticated":null,{"title":"Authenticated","type":"boolean"} ⟨3 unchanged words⟩ integer"},{"type":"null"}],"default":null,"title":"Github Id"},"github_login":{" ⟨2 unchanged words⟩ string"},{"type":"null"}],"default":null,"title":"Github Login"},"hint":{" ⟨2 unchanged words⟩ string"},{"type":"null"}],"default":null,"title":"Hint"},"quota":{"anyOf":[{"$ref":"#/$defs/Quota"},{"type":"null"}],"default":null},"tariff":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tariff"}},"title":" ⟨3 unchanged words⟩
Authorization not required, issuer https://api.steledger.com/
Authorization not required, issuer https://api.steledger.com/
Authorization not required, issuer https://api.steledger.com/
Authorization not required, issuer https://api.steledger.com/
Authorization not required, issuer https://api.steledger.com/
Changed the definition of "transfer_records"
⟨210 unchanged words⟩ new memories are held by the gateway again. ChangingReturnsa record costs a network fee in EMC. If you hold the key and have no EMC, set `fee_grant`: the gateway then also sends 0.01 EMC (about fifty value updates) to `to_address` in a separate transaction — once per GitHub account, within a daily budget. If it is not available the call is refused before anything moves (`fee_grant_used`, `fee_grant_unavailable`), so you can decide to transfer without it. Do not ask for it with an address no one holds a key to: nobody could spend it. Returns the transaction id, the names moved, the fee funds if sent, and a plain statement of what changes.
Added "send_feedback" (8 tools before, 9 now)
Send feedback — Tell the people running this service that something went wrong or is unclear — an error you cannot explain, a result that looks wrong, documentation that misled you, a tool you needed and did not find. Open to everyone; no sign-in. Up to 1000 characters, a few messages per day. A person reads them over the following days; there is no automatic reply, so do not wait for one. If you are signed in, your GitHub id is kept with the message; nothing else about you is. Every refusal from this service points here.
Certificate changed, valid to 2026-12-23
Added "transfer_records" (7 tools before, 8 now)
Transfer records — Hand your records over from the gateway's wallet to an address you choose, in one transaction. IRREVERSIBLE: once the block confirms, the gateway can no longer change, renew or return them — nor can anyone else but the holder of `to_address`. Values are carried over unchanged, and each record gets about a century added to its term, since the gateway will not be able to renew it. Why you might: with an address whose key you hold, the records are really yours — you can prove control by signing, and payments sent to your identity name reach you rather than the gateway. Changing a record afterwa…
Added "store_memory_batch"; changed the definition of "register_identity", "store_memory" and "whoami" (6 tools before, 7 now)
{"$defs":{"Quota":{"description":"Writes this account has left on its tier. `writes_open_on` (a UTC date)\nappears only while the GitHub account is too new to write.","properties":{"writes_left_this_minute":{"title":"Writes Left This Minute","type":"integer"},"writes_left_today":{"title":"Writes Left Today","type":"integer"},"writes_open_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Writes Open On"}},"title":"Quota","type":"object"}},"properties":{"name":{"title":"Name","type":"string"},"quota":{"$ref":"#/$defs/Quota"},"txid":{"title":"Txid","type":"string"}},"required":["name","txid","quota"],"title":"WriteResult","type":"object"}
Added "list_records"; changed the definition of "register_identity", "store_memory" and "whoami" (5 tools before, 6 now)
⟨21 unchanged words⟩ session (OAuth) and counts against the FREE-tierper-minutewritelimit.limits (see `whoami`). Run `whoami` first to confirm you are signed ⟨171 unchanged words⟩
Anchor amemory/artifactfingerprint of a memory or artifact on-chain as the NVS record `ai:gh:<github_id>:mem:<content_hash>`
Changed the definition of "node_status", "read_record", "register_identity" and 2 more
⟨16 unchanged words⟩ height, header height, peer connections and syncstatestate.(`synced` true once block == header height).It is an Emercoin node.Read-only, no sign-in required, no parameters. `synced`Callis not a comparison of the two heights — itfirstisintrue once the node's verification progress passes 0.9999, so it can still be false while `blocks` and `headers` already match. Trust that field, not the arithmetic. While it is false, asession
Changed the definition of "node_status" and "read_record"
ReportCheck that theEmercoinchainnode'snode behind this service is healthy and fully synced: its version, block height, header height, peerconnections and sync state(`synced` true once block == header height). It is an Emercoin node. Read-only, no sign-in required, no parameters. Call ⟨23 unchanged words⟩
Changed the definition of "node_status", "read_record", "register_identity" and 2 more
Report the Emercoin node's version, block height, header height, peerconnections and sync state (`synced` true once block == header height).Read-only, no sign-in required, no parameters. Call it first in a session toconfirm the node is healthy and fully synced before trusting `read_record` orwriting with `register_identity` / `store_memory`.
Certificate recorded, valid to 2026-10-25
Authorization not required
First tool surface recorded: 5 tools (server version 1.27.2)
Showing the latest 19 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$defs":{"FeeGrantResult":{"description":"Network-fee funds sent with a transfer: the amount in EMC, and the id of\nthe transaction that paid it — null if it could not be sent.","properties":{"amount":{"title":"Amount","type":"string"},"txid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txid"}},"required":["amount","txid"],"title":"FeeGrantResult","type":"object"},"Quota":{"description":"Writes this account has ⟨57 unchanged words⟩ ":"Count","type":"integer"},"fee_grant":{"anyOf":[{"$ref":"#/$defs/FeeGrantResult"},{"type":"null"}]},"names":{"items":{"type":"string" ⟨20 unchanged words⟩ ","count","names","to_address","after","fee_grant","quota"],"title":"TransferResult","type":"object"}
{"$defs":{"Quota":{"description":"Writes this account has left on its tier. `writes_open_on` (a UTC date)\nappears only while the GitHub account is too new to write.","properties":{"writes_left_this_minute":{"title":"Writes Left This Minute","type":"integer"},"writes_left_today":{"title":"Writes Left Today","type":"integer"},"writes_open_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Writes Open On"}},"title":"Quota","type":"object"}},"properties":{"name":{"title":"Name","type":"string"},"quota":{"$ref":"#/$defs/Quota"},"txid":{"title":"Txid","type":"string"}},"required":["name","txid","quota"],"title":"WriteResult","type":"object"}
⟨128 unchanged words⟩ a GitHub account at least 30 days old. `quota` says how many writes are left right now (and, for a young account, the date writes open); every write returns the same figures, so plan batches with them. Note what this tool does not do: it ⟨35 unchanged words⟩
{"$defs":{"Quota":{"description":"Writes this account has left on its tier. `writes_open_on` (a UTC date)\nappears only while the GitHub account is too new to write.","properties":{"writes_left_this_minute":{"title":"Writes Left This Minute","type":"integer"},"writes_left_today":{"title":"Writes Left Today","type":"integer"},"writes_open_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Writes Open On"}},"title":"Quota","type":"object"}},"properties":{"authenticated":{"default":null,"title":"Authenticated ⟨30 unchanged words⟩ }],"default":null,"title":"Hint"},"quota":{"anyOf":[{"$ref":"#/$defs/Quota"},{"type":"null"}],"default":null},"tariff":{"anyOf":[{"type" ⟨11 unchanged words⟩
Store memories (batch) — Anchor many fingerprints in ONE on-chain transaction — the way to record a session's worth of artifacts without spending a write per minute on each. Each item becomes `ai:gh:<github_id>:mem:<content_hash>`, exactly as with `store_memory`: only hashes and metadata, never content. All or nothing: if any item is refused (a malformed hash, say), nothing is written. Requires a signed-in session. A batch of N counts as N writes against the FREE-tier limits (10 per minute, 100 per 24 hours), so at most 10 items fit in one call on a fresh minute; the result says how many writes are left. One transac…
⟨103 unchanged words⟩ for every account today; it governs the writerate limitlimits, currently 10 writes perminute.minute and 100 per trailing 24 hours per account, and writing needs a GitHub account at least 30 days old. Note what this tool doesnot do: it reportsthe session only, reading the token your client alreadyholds without callingGitHub, and it proves nothing about control of anEmercoin address — that iswhat signing a challenge at login is for.
List records — List every record under one GitHub id — its identity record `ai:gh:<id>` and all its memories `ai:gh:<id>:mem:<hash>` — newest first, with each memory's content hash and metadata. This is how an agent starting a fresh session finds what it anchored before: `read_record` needs the full name, hash included, and this is where the hashes come from. Read-only, no sign-in needed to list any id; omit `github_id` to list your own when signed in. What comes back is the chain's view: confirmed records only (a write still in the mempool shows up after its block), expired ones included and flagged `expi…
⟨107 unchanged words⟩ required; use `whoami` to find your own github_id.ReturnsAnullname that has never been written is an error, not an empty record — handle the failure, do not test the fields foranull. `name` is the full NVS namethatanddoesisnotcappedexist.at 512 bytes by the chain.
⟨68 unchanged words⟩ once and `confirmed` after the next block (~10aboutmin8 minutes on average lately). Idempotent — calling again rebinds theaddress.address,Returnsand `metadata` is replaced rather than merged. Limits worth knowing before you call: `metadata` is stored verbatim in the record value alongside your github id, login and address, and the whole value must stay under 20 KiB — the chain rejects more. Every 128 bytes of name plus value adds about 0.0001 EMC to the fee the gateway pays for you. The value is written to a public chain exactly as given and cannot be deleted, so put nothing private in it. `address` is not parsed or checked here — any string is accepted, because control is proven later by signing a challenge at login, so a typo surfaces then rather than now. Returns the record name and the transaction id.
⟨45 unchanged words⟩ at once, `confirmed` after the next block (~10aboutmin8 minutes on average lately). Not idempotent — each distinct hash is a new record. Register your identityfirst.first — nothing enforces it, the write succeeds either way, but a memory under an unregistered id anchors to nobody and proves correspondingly little. Limits worth knowing before you call: `content_hash` becomes part of the record *name*, `ai:gh:<github_id>:mem:<hash>`, and NVS names are capped at 512 bytes — a hex digest is the intended shape. It is stored exactly as given and never verified: nothing checks that it is the hash of anything, so a wrong or truncated digest anchors happily and proves nothing. `metadata` goes verbatim into the record value, which must stay under 20 KiB, is public and permanent. Returns the record name and the transaction id.
⟨51 unchanged words⟩ caller must sign in (GitHub OAuth) first. `github_id` is the one field you usually need: every record name is built from it — `ai:gh:<github_id>` and `ai:gh:<github_id>:mem:<hash>` — so this is how you learn which names are yours to write and to read back. `tariff` is `free` for every account today; it governs the write rate limit, currently 10 writes per minute. Note what this tool does not do: it reports the session only, reading the token your client already holds without calling GitHub, and it proves nothing about control of an Emercoin address — that is what signing a challenge at login is for.
Read oneEmercoin NVS (Name-Value Storage)on-chain record by its full name — an agent's ⟨9 unchanged words⟩ <github_id>:mem:<hash>`) written by `register_identity` / `store_memory`. Records live in Emercoin's Name-Value Storage, so anyone can verify one in a public block explorer as well as here. Returns the confirmed on-chain record, or a ⟨70 unchanged words⟩
⟨30 unchanged words⟩ ":null,"title":"Days Added"},"expired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Expired"},"expires_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Expires At"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Expires In"},"name":{"anyOf":[{"type":"string ⟨83 unchanged words⟩
Create or rotate your on-chain identity record `ai:gh:<github_id>`, binding anEmercoin address to your GitHub identity. Requires a signed-in session (OAuth)and counts against the FREE-tier per-minute write limit. Run `whoami` first toconfirm you are signed in; anchor memories under this identity afterwards with`store_memory`. Writes one NVS transaction paid by the gateway (you need no EMC);the record reads back as `pending` at once and `confirmed` after the next block(~10 min on average). Idempotent — calling again rebinds the address. Returns therecord name and the transaction id.
Anchor a memory/artifact on-chain as the NVS record`ai:gh:<github_id>:mem:<content_hash>` — a tamper-evident fingerprint others canverify later. Requires a signed-in session (OAuth) and counts against theFREE-tier per-minute write limit. Writes one NVS transaction paid by the gateway;reads back `pending` at once, `confirmed` after the next block (~10 min). Notidempotent — each distinct hash is a new record. Register your identity first.Returns the record name and the transaction id.
Report the current session's identity. Read-only, no sign-in required: ananonymous session gets `{authenticated: false}` with a hint (not an error),a signed-in one gets `{authenticated: true}` plus the GitHub-rooted id, loginand tariff. Call it to confirm who you are before `register_identity` /`store_memory`; an anonymous caller must sign in (GitHub OAuth) first.