agentprivacy
This server exposes a read-only, reproducible knowledge and identity toolkit over a baked 20-site FedWiki federation — search and traverse the guide, operate on a 64-vertex sovereignty lattice, derive/evolve City Keys and sigils, and verify VTA records and AgentCards without holding any secrets.
Guide search and navigation:
guide_searchruns BM25 over the baked lexical index plus link-graph expansion, returning an ordered walk of pages (site, slug, lattice vertex, PSI element) with limits and optional site restriction.Page retrieval:
guide_pagefetches a page by slug (site optional — slug is the identity), returning text, weave/links, lattice vertex, six-bit posture, PSI element and public URL.Neighbour exploration:
guide_neighbourslists outgoing and backlinks, each labelled with the named lattice move (succ · neg · bnot · flip · jump ×k) from the current page.Lattice operations:
lattice_moveapplies an operator to a vertex 0–63 (succ, neg, bnot, flip a dimension, or name a target vertex) and returns the resulting vertex, its six bits, dimensions, stratum and a derived reading.Key derivation (Law L5):
key_derivere-derives a City Key’s κ from canonical JSON (or a sigil PNG carrying the key) via sha256, compares it to the stamped κ, and returns verdict, derived κ, prior, 64 glyphs, and lit/walked vertices.Key evolution:
key_evolvedeterministically appends a walk (steps, pathway.v1, or star-chart constellation) to a City Key, resolving each step against the bake to its vertex and PSI element; the evolved key gainswalks[],prior, and a fresh κ — or starts from the default key if omitted.Sigil rendering:
sigil_renderdraws a PNG of 64 glyphs lit by the re-derived κ, coloured by stratum with coral/cyan rings for lit/walked vertices, embeds the key in a tEXtcityKeychunk, optionally writes to a file, and is importable on soulbis.com/star, /lattice, /sigil.VTA record verification (public):
key_verifychecks a signed VTA record (kind agentprivacy.vta/1) — bearer public key, κ, prior, at, walks, vrcs, ed25519 signature — and, when a key is given, confirms the record names that key via L5 re-derivation; also supportssince/horizonDaysforevolved_sinceevaluation; holds no secret.AgentCard verification (public):
card_verifyvalidates an AgentCard as signed by the agentprivacy /ceremony (ed25519 over the card payload), returning participantId (ap-<16 hex>), did:key, displayName, trustTier and Drake Orb tier — the identity mages.city admits.Plaintext intersection (development only, hidden under VTA_MODE=1):
compare_plaincomputes the intersection of two City Keys in plaintext; this is a development-only helper slated for replacement by DH-PSI in Rung 3.General guarantees: all tools read the bake, never the live farm, so walks are reproducible; nothing holds secrets, and no tool signs or sends messages on its own.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agentprivacySearch the privacy guide for data minimization."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agentprivacy-mcp
The privacy guide, the 64-vertex sovereignty lattice and the City Key, exposed as
MCP tools. This is the Mage's half of the Verifiable Trust Agent described in
agentprivacy_master/docs/PLAN_KNOWLEDGE_GRAPH_TO_VTA_2026-09-03.md (Phase 3, read
tools): every tool is a pure function over a City Key or a graph snapshot, so an agent
can compose them and a human can audit the composition. Nothing here holds a secret.
Zero dependencies. Node ≥ 18. MCP over stdio.
claude mcp add agentprivacy -- node C:/Users/mitch/agentprivacy-mcp/server.mjs
node server.mjs --list # what the bake holds + the tool roster
npm test # canon vectors + the scripted agent (bin/walk-demo.mjs)What it reads
The bake, never the live farm, so a walk is reproducible (plan §7):
file | written by | carries |
|
| one row per page: |
| same | title · date · links · vertex · posture |
| same (from | the BM25 search core + per-site lexical indexes |
|
| the page itself |
Point elsewhere with AGENTPRIVACY_GUIDE_SITE=<dir>.
Related MCP server: OpenWorkProof
Tools
tool (plan name) | in | out |
| query, limit?, sites? | an ordered walk: steps with site · slug · vertex · posture · PSI element · url |
| slug, site? | text, weave (links), vertex + six bits, dims, stratum, element, copies across sites |
| slug, site? | out-links and backlinks, each with the named lattice move: succ · neg · bnot · flip dim · jump ×k |
| vertex, op | the resulting vertex, bits, dims, stratum, reading. |
| key (JSON · sigil PNG · path) | Law L5: canonical form → κ → verdict |
| key?, walk, name? | the evolved key: |
| key, out?, size? | a PNG that carries the key (tEXt |
| a, b | the ∩ in the open. Development only; hidden under |
Identity is the slug, never the host: guide_page and key_evolve take a slug and an
optional site; the same page forked across sites is one reference.
The walk, as content
key_evolve appends to the City Key's additive walks field:
{ "chart": "https://guide.agentprivacy.ai/star-chart/", "name": "…",
"steps": [ { "site": "guide", "slug": "the-private-knowledge-network", "vertex": 36,
"element": "sha256:…" } ], // element = sha256("<vertex>|<slug>|<sorted links>")
"digest": "sha256:…", // over the canonical steps
"moves": [ "flip connection", "jump ×2 (memory value)" ] }It is deterministic: no timestamps, no randomness. The same key and the same walk give
the same κ whoever calls, which is what lets a human's constellation on spellweb and an
agent's walk on the guide evolve the same key (Phase 1). Consumers that do not know
walks ignore it (the v1 extensibility clause); prior chains to the key it grew from
(C87: the key accumulates).
The bit canon
d1 protection = 32 · d2 delegation = 16 · d3 memory = 8 · d4 connection = 4 · d5 computation = 2 · d6 value = 1
(game42 axisSpace, soulbis /sigil, agentprivacy_master/src/lib/lattice-vertex.ts,
spellweb's vertex nodes, and agentprivacy.guide/tools/lattice.mjs all agree;
test/canon.test.mjs checks this package against the game42 file when it is present).
The Swordsman ⚔️ (Rung 1) — a second process, no LLM
swordsman/swordsman.mjs holds the bearer's ed25519 seed and signs what it is handed
after a fixed policy check it will not argue about. It is its own MCP server, so a
prompt-injected Mage can request a bad signature and still not get one.
node swordsman/swordsman.mjs init [--seed <ceremony privateKeyHex>] [--card AgentCard.json]
node swordsman/swordsman.mjs status
claude mcp add swordsman -- node C:/Users/mitch/agentprivacy-mcp/swordsman/swordsman.mjsKeystore ~/.agentprivacy/swordsman/ (identity.json 0600 · policy.json · ledger.jsonl).
--seed imports the identity /ceremony minted, so the Swordsman IS the AgentCard that
mages.city admits.
tool | does | policy it enforces |
| signs a City Key evolution → the VTA record | κ must re-derive (L5) · own bearer only · |
| what a VTA publishes: public key · κ · prior · VRC commitments, plus a ready | never the key, never the walk, never the seed |
| writes the record into a sigil PNG as a | record must verify |
| the policy + ledger head | read-only; the seed is never returned |
Public verification lives on the Mage side, holding nothing: key_verify (record ±
key ± PNG, and the liveness predicate evolved_since(t)) and card_verify (an AgentCard
as /ceremony signs it). The signed record travels beside the key, so the κ rule is
unchanged everywhere.
node bin/walk-demo.mjs --sign runs the whole Phase 3 done-when across the two processes.
Not here yet
Rungs 2–5 of agentprivacy_master/docs/PLAN_CITY_KEY_CRYPTO_UPGRADE_2026-09-03.md:
carrier.seal, psi.blind/unblind, proof.predicate, vrc.issue, and the two
human-consent tools. Designed there; not built.
Browser game integration (in progress)
browser_action_prepare creates an exact, short-lived spell/sticker proposal for extension review. It does not dispatch or authorise a browser effect. See browser action boundary for receipt folding, durable effect idempotency and missing live adapters. The server is trusted local stdio software; filesystem-capable tools must not be exposed directly as a public network service.
VTA + Star: agent knowledge spaces (2026-09-08)
MCP task engine records this surface's responsibilities and acceptance gates. The shared design places FedWiki records, browser-carried Star state, first-contact intent, MCP Trust Tasks, VTA permission enforcement and earned Mages City names in one continuing journey. Status is explicitly partial; follow the note's source and deployment distinctions.
City invitation and experience entry
Use experience_route to select arrival, learning, key custody, casting or collaboration. city_invitation_draft prepares a private public-summary candidate in the City's visitor-event shape; publish remains false. See City entry workflow. These tools neither sign nor send messages, and an invitation does not establish membership, credentials or MyTerms agreement validity.
Complete capability overview
Begin with experience_overview: one source inventory covers the key, journey, invitation, game action, Star orb, VTA pair, agreements/tasks/VRCs, City access and core-artefact proposal. lib/experience-overview.json is the source; the City serves its current copy at /experience-overview.json. Keep this copy byte-identical when updating capability status. No status here substitutes for live service discovery.
Available Tools
10 toolscard_verifycard.verify (public)A
Verify an AgentCard as agentprivacy /ceremony signs it (ed25519 over the card payload; participantId = ap-<16 hex of the public key>). Returns participantId, did:key, displayName, trustTier, Drake Orb tier. This is the identity mages.city admits with; the board never re-issues it.
| Name | Required | Description | Default |
|---|---|---|---|
| card | Yes | the AgentCard JSON (object, JSON text, or a path) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the operation is verification, lists return data, and notes the board never re-issues it, implying a read-only/non-mutating action. It does not detail error behavior, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and informative. The final sentence about mages.city adds context but is not strictly necessary for invocation, keeping it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It explains the verification algorithm, the participantId derivation, and the return fields, which is sufficient despite the lack of an output schema. It does not specify failure behavior, but that is less critical for a verify operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the schema with accepted formats (object, JSON text, or path). The tool description adds no additional semantic detail beyond referencing the card payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool verifies an AgentCard, specifies the signature scheme (ed25519), and lists the returned identity fields. It is distinct from sibling key_verify by targeting AgentCard/ceremony identity verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (when an AgentCard needs verification), but it does not explicitly compare against sibling tools like key_verify or state conditions for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_plaincompare.plain (development only)B
The ∩ of two keys (walked + lit vertices, shared PSI elements) computed IN THE OPEN by reading both keys. Development only: Rung 3 replaces it with DH-PSI, and it is hidden when VTA_MODE=1.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavior. It reveals that the tool reads both keys and computes the intersection 'IN THE OPEN', implying a potentially insecure or development-only behavior. It also notes the tool is hidden under VTA_MODE=1. However, it lacks details on side effects, security implications, return values, or error conditions, leaving the agent with limited understanding of consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that front-load the core operation and then add lifecycle context. It avoids unnecessary verbosity. However, the use of specialized jargon ('walked + lit vertices', 'PSI', 'Rung 3') slightly hampers immediate clarity but does not add bloat. Overall structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two parameters, no output schema, no enums), the description provides sufficient context about its development-only nature and hidden status. It lacks information about the return format, possible outputs, or error scenarios, but these are absent from the schema as well. The cryptic terminology and lack of parameter mapping create gaps, but the basic usage context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal parameter-specific meaning. It mentions 'two keys' but does not differentiate between parameters 'a' and 'b' or explain their roles. The schema itself provides identical generic descriptions for both parameters (JSON object, string, PNG, or path), so the description contributes nothing beyond the schema. The agent must guess which key is which or infer from the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: comparing two keys and computing their intersection ('∩ of two keys'), with a parenthetical explaining the inputs ('walked + lit vertices, shared PSI elements'). It clearly identifies the resource (two keys) and the operation (computed by reading both). Some jargon remains cryptic, but the core purpose is recognizable and distinct from sibling tools like key_verify or card_verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage constraints: it is 'development only', mentions a future replacement (Rung 3 / DH-PSI), and notes it is hidden when VTA_MODE=1. This gives the agent explicit conditions for when not to use it, but it does not explicitly compare to sibling tools or state when to prefer this over alternatives like key_verify. The guidance is useful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_neighboursguide.neighboursD
Linked pages (outgoing and backlinks) of a page, each with the NAMED LATTICE MOVE from this page to it: succ · neg · bnot · flip · jump ×k (dimensions), per the 64-vertex sovereignty lattice.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose side effects, permissions, data mutation, rate limits, or whether the operation is read-only. The agent is given no behavioral expectations beyond an unclear statement about linked pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but poorly structured and filled with unexplained jargon like 'succ · neg · bnot · flip <dimension> · jump ×k'. The opening phrase is somewhat concise, but the rest detracts from clarity and does not effectively front-load useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits essential context such as the return format, the meaning of the lattice moves, the relationship between parameters and the page, and any example usage. With no output schema and cryptic terminology, the tool is not sufficiently specified for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lists 'site' and 'slug' with no descriptions, and the tool description does not explain what these parameters mean or how they relate to the 'page'. Schema coverage is 0%, and the description provides no meaningful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool deals with 'linked pages (outgoing and backlinks) of a page', but it is phrased as a noun phrase rather than a clear action. The appended 'NAMED LATTICE MOVE' terminology is cryptic and does not clarify the tool's primary purpose or distinguish it from sibling tools like guide_search or guide_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling tools. The description does not mention alternatives, conditions, or scenarios, leaving the agent to infer usage solely from the tool name and vague description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_pageguide.pageA
One page by slug (site optional — identity is the slug, never the host): its text, weave (links), lattice vertex + six-bit posture, PSI element and public URL.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It lists returned content (text, weave, lattice vertex, PSI element, public URL), suggesting read-only behavior, but does not explicitly confirm side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single compact sentence conveys the tool's purpose, key parameter guidance, and return contents without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple page-retrieval tool, the description is adequately complete: it names the resource, parameters, and output fields. It omits error scenarios, but these are not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that slug is the identity and site is optional, which partially compensates for the sparse schema. It does not explain the format or possible values for slug or site.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies the tool as retrieving a single page by slug and distinguishes it from search/neighbor tools by emphasizing the slug as the identity. Lacks an explicit verb like 'get' or 'fetch', but the intent is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful guidance that the slug is the identity and site is optional, but does not explicitly state when to prefer this tool over sibling tools like guide_search or guide_neighbours.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_searchguide.searchA
Search the guide (the baked fedwiki federation, 20 sites). Returns an ORDERED WALK of pages — BM25 over the baked lexical index, then link-graph expansion — each step with its site, slug, lattice vertex and PSI element. The agent reads the bake, never the live farm, so a walk is reproducible.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| sites | No | restrict to chart site ids (guide, atlas, skill, dtg, …) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'reads the bake, never the live farm' and 'a walk is reproducible', indicating no side effects and deterministic behavior. This fully discloses the read-only, non-mutating nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the main purpose front-loaded. However, it includes several idiosyncratic terms (baked fedwiki, lattice vertex, PSI element) that add length and may obscure meaning, though they are likely domain-specific for this toolset.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It describes the output structure (each step with site, slug, lattice vertex, PSI element) and the two-stage algorithm, giving the agent enough context to understand the result format. It does not cover edge cases or error behavior, but this is acceptable for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (sites has a description, but query and limit do not). The tool description does not explain the meaning or expected format of any parameters, leaving parameter semantics under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the guide and returns an ordered walk of pages, mentioning the data source (baked fedwiki federation), algorithm (BM25 + link-graph expansion), and output elements. This distinguishes it from page-level tools, though some jargon may reduce immediate clarity for a general agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a static snapshot ('reads the bake, never the live farm') and emphasizes reproducibility, but does not explicitly contrast with sibling tools like guide_neighbours or guide_page. The when-to-use decision is partially left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
key_derivekey.deriveC
Law L5 — a κ is never trusted, only re-derived. Canonical form (keys sorted recursively, no whitespace, kappa excluded) → sha256 → compare with the stamped κ. Accepts a City Key JSON or a sigil PNG (the image carries the key). Returns verdict, derived κ, prior, the 64 glyphs, lit and walked vertices.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining side effects, but it only mentions inputs, processing steps, and return values. It does not state whether the operation is read-only, whether file paths are read, or whether any state is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and uses a clear process arrow, with no redundant filler. However, the density of domain-specific terms makes it harder to parse, slightly reducing accessibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions several outputs but leaves crucial context unexplained, such as what 'stamped κ' refers to, what 'prior' means, and how 'glyphs', 'lit vertices', and 'walked vertices' are defined. There is no output schema to fill these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for 'key' is detailed and useful, specifying accepted formats: JSON object, JSON string, sigil PNG as base64/data URL, or a path. This goes beyond basic type information and gives practical input guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a derivation-and-comparison process, but it is heavily jargon-laden and does not clearly define key terms such as 'stamped κ', 'prior', or 'lit and walked vertices'. The purpose is inferable but not directly stated in plain language.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus sibling tools like key_verify, key_evolve, or compare_plain. The 'never trusted, only re-derived' rule hints at a principle, but it does not specify concrete use cases or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
key_evolvekey.evolveA
Append a walk to a City Key — pure and deterministic. Walk = an array of {site?, slug} steps (or slugs), a pathway.v1, or a star-chart constellation. Each step is resolved against the bake to its vertex and PSI element; the evolved key gains walks[], prior = κ of the key it grew from, and a fresh κ. UNSIGNED — a Swordsman signs (Rung 1). Omit key to start from the default key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| name | No | name this walk (a constellation name) | |
| walk | Yes | steps: [{site, slug}] | [slug] | {steps:[…]} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: pure and deterministic, UNSIGNED requiring a Swordsman at Rung 1, and the resulting key structure with walks[], prior, and fresh κ. No annotations are present, but the description covers the important behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the action, and every sentence adds relevant information; no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input forms, the default-key path, output key evolution, and signing context. It omits details such as error handling and explanation of bake/κ, but is reasonably complete for a domain-specific tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have meaningful descriptions that extend the loose anyOf schemas, especially key (JSON/sigil/path) and walk (step forms). The semantics are enriched beyond the schema even if some domain terms remain terse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the operation: append a walk to a City Key, with a deterministic, pure outcome. It distinguishes itself by emphasizing UNSIGNED and default-key behavior, though it does not explicitly contrast sibling tools like key_derive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides operational details (walk forms, default key, unsigned status) but no explicit guidance on when to choose this over sibling tools such as key_derive, guide_search, or lattice_move.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
key_verifykey.verify (Rung 1, public)A
Verify a signed VTA record (kind agentprivacy.vta/1: bearer public key, κ, prior, at, walks, vrcs, ed25519 sig) — and, when the key is given, that the record names THIS key (L5: κ re-derived from the key equals the signed κ). Accepts the record as JSON or a sigil PNG carrying a cityKeySig chunk. With since, also evaluates the liveness predicate evolved_since(t). Holds no secret.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| vta | Yes | the VTA record, or a PNG (base64 / path) carrying cityKeySig | |
| since | No | ISO time — evaluate evolved_since(since) | |
| horizonDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses key behavioral facts: it verifies signatures, can bind the record to a provided key, evaluates a liveness predicate with since, and holds no secret. However, it does not describe return values, failure modes, or side effects beyond verification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, packing the action, formats, optional behaviors, and a safety note into a short space. The heavy use of domain jargon slightly reduces readability, but there is no obvious fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for basic use and for optional since/key behavior, but it omits the meaning of horizonDays, does not state the output/return contract, and does not clarify how this tool relates to card_verify or compare_plain. Given the 4-parameter complexity, these are meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds useful semantics for key binding and accepted vta formats, and explains since's role. However, horizonDays is left completely unexplained, and the key/vta formats remain jargon-heavy, leaving gaps in the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action as verifying a signed VTA record, optionally checking key binding and evaluating liveness. It names the specific resource and scope, distinguishing it from sibling verification, derivation, and rendering tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional behavior for optional key and since parameters, but it does not explicitly state when to prefer key_verify over related tools such as card_verify, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lattice_movelattice.moveA
Apply a lattice operator to a vertex (0-63): succ (the wheel, +1 mod 64), neg (Swordsman reflection, 64−x), bnot (Mage antipode, 63−x), "flip " (one bit), or "to " (names the move). Returns the resulting vertex, its six bits (d1 protection … d6 value), dimensions, stratum, and a derived reading.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | succ | neg | bnot | flip <dim> | to <vertex> | |
| vertex | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the return payload (resulting vertex, six bits, dimensions, stratum, and a derived reading) and explains all operator behaviors. It does not mention side effects or error conditions, but the operation appears pure and well-specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes: it lists operators, explains their effects, and lists the return fields. No filler or redundant phrasing. The structure flows logically from action to parameters to output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and the absence of an output schema, the description covers the essential aspects: what it does, the operators, and the return format. It does not discuss edge cases like invalid 'op' values, but that is a minor gap for a well-defined lattice operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only lists 'op' with a brief enum-like description and 'vertex' with a min/max. The tool description adds rich semantics: it defines each operator's mathematical meaning (e.g., '+1 mod 64', '64−x', '63−x', bit flip) and clarifies the vertex range. This far exceeds the schema's minimal information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Apply a lattice operator to a vertex' and enumerates each operator with its exact semantics (succ, neg, bnot, flip, to). This is distinct from sibling tools like key_derive or guide_search, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the exact syntax for the 'op' parameter and explains each operation, effectively teaching how to use the tool. However, it does not explicitly state when to prefer this tool over siblings, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sigil_rendersigil.renderC
Draw the key's sigil — 64 glyphs, one per vertex, lit by the RE-DERIVED κ (never the stamped claim), coloured by the key's palette by stratum; lit vertices ring coral, walked vertices ring cyan — as a PNG that CARRIES the key (tEXt cityKey), importable on soulbis.com/star, /lattice, /sigil. Returns the image; writes it to out when given.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| out | No | file path to write the PNG | |
| size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns an image, optionally writes to a file specified by 'out', and embeds the key in the PNG metadata (tEXt cityKey). These are important side effects, but there is no mention of read-only or destructive behavior, and the description uses cryptic language. Still, the side effects are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a long, convoluted sentence with ambiguous jargon and poetic phrasing. It lacks clear structure and could be simplified. The essential information is embedded in cryptic language, making it hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the tool's place among its siblings or when to prefer it over alternatives. No prerequisites, follow-up steps, or related tools are mentioned. The mention of importable URLs is tangential and not contextual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'key' parameter has a detailed description, covering multiple formats. The 'out' parameter has a brief description, and 'size' has no description, only constraints. With only 33% schema description coverage, the parameter semantics are insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the primary purpose of drawing a sigil from a key. The phrase 'Draw the key's sigil' directly indicates the action, though the details are cryptic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool. It mentions importability on certain URLs, but that does not constitute a usage guideline. No conditions or scenarios are described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
card_verify - First observed
compare_plain - First observed
guide_neighbours - First observed
guide_page - First observed
guide_search - First observed
key_derive - First observed
key_evolve - First observed
key_verify - First observed
lattice_move - First observed
sigil_render
TDQS
Scored across 10 tools
Each tool targets a distinct operation: key derivation, guide search/page/neighbours, lattice moves, key evolution, sigil rendering, key and card verification, and a dev-only comparison. The descriptions clearly separate overlapping functions like key_derive vs key_verify.
Most tools follow noun_verb (key_derive, guide_search, lattice_move), but guide_page and guide_neighbours are noun_noun and compare_plain is verb_adj. The mix is still readable but not uniformly consistent.
10 tools is well-scoped for the domain: 5 key-related, 3 guide-related, 1 lattice, 1 card verification. Each tool earns its place without redundancy.
Covers key lifecycle (derive, evolve, verify, render), guide exploration (search, page, neighbours), and lattice operations. Missing explicit signing, but that is described as an external Swordsman step, and dev-only compare_plain is clearly marked.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
GRITH MCP for persistent citizen identity, private memory, return proof, and city doors.
Read-only game, setup, place, evidence and travel decision tools with explicit provenance.
Production-grade cryptography toolkit with 31 MCP tools for classical, PQC, and KMS workflows.
No-key MCP: audit/certify MCPs, signed trust history; join Gold Rush Town & build with your LLM.
Related MCP Servers
- AlicenseAqualityBmaintenanceDefault-deny action registry, append-only spend ledger, and human sign-off audit trail (MCP tools).6MIT
- AlicenseBqualityCmaintenanceVerifiable execution protocol for AI agents. Ed25519-signed work contracts, offline-verifiable proof-carrying work, and cryptographic audit trails. 14 MCP tools for signing, verification, and schema lookup. Python >=3.10.29190Apache 2.0
- AlicenseNot gradedqualityAmaintenanceProvides evidence-oriented MCP service for cryptographically identified agents, bounded public contracts, privacy-preserving records, and append-only audit.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides deterministic MCP tools for managing encrypted member profiles, including self/other lookups, responsible-person contacts, and birthday queries with privacy-focused local encryption.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mitchuski/agentprivacy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server