Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
86
A2A A2A 1.0 va2e0e37af5238eef

Interego Relay

relay.interego.xwisee.com

Composable, verifiable, federated context infrastructure. Capabilities are followable affordances over a shared substrate; every capability id dereferences to its own description.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain relay.interego.xwisee.com via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
52/100
grade D · 9 criteria
Uptime
96.4%
28 direct probes · 30d
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
3 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 52/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 2/25
Card is valid but has no .url field.
How to earn +23 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload.
Docs →
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 14/15
27/28 probes succeeded (96% uptime).
pass Skill declaration 10/10
Declares 51 skills with structured metadata.
fail Verified Identity 0/10
No provider organisation declared. Anonymous agent.
How to earn +10 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 2 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

3 snapshots drifted 2× Every change to agent-card.json
Captured Hash
2026-08-18 21:12:42 current bf2183486e70… view →
2026-08-16 09:53:47 955662508a17… view →
2026-08-02 19:48:38 c97cf3523e22… view →
Uptime
96.4%
28 direct probes · 30d
Response
242ms
last direct probe
Skills
51
declared
Streaming
SSE-capable

Skills · 51 declared · mapped to canonical taxonomy

mint

Kernel verb — content-addressed holon construction. Same content always yields the same IRI (Identity-by-reference, Invariant 1). Kinds: atom (default), fragmen…

canonical Multilingual Translation match 80%
relay
dereference

Kernel verb — Peircean Secondness: resolve an IRI to its representation, affordances, and provenance. Manifests return entry lists decorated with affordances, B…

canonical API Mesh and Composition match 81%
relay
compose

Kernel verb — operadic composition over typed-hyperedge category. Operators: union (join), intersection (meet), restriction (project), override (left-biased). I…

canonical API Mesh and Composition match 83%
relay
act

Kernel verb — Peircean Thirdness operational. Follows an affordance via {descriptor_url, action_iri} or via pre-resolved {target, action, method}. SUBMITTING AN…

canonical FollowAction match 81%
relay
restrict

Kernel verb — adjunction left half (whole → part). Projects a descriptor to a facet-type subset.

canonical Image Segmentation match 80%
relay
extend

Kernel verb — adjunction right half (part → whole). Inverse of restrict; back-links via iep:supersedes.

canonical AppendAction match 80%
relay
promote

Kernel verb — PGSL fibration upward (level k → k+1). Builds the lattice and returns the apex + pullback square (when level ≥ 2).

canonical Vector Search and Embeddings match 81%
relay
decompose

Kernel verb — PGSL fibration downward (level k → k-1). Returns left/right/overlap for fragment of level ≥ 2.

canonical Task Decomposition match 83%
relay
reduce_chain

Kernel verb — fold a iep:supersedes chain through a declarative reducer (Turtle-template OR SHACL-transform) and return the canonical head state alongside a con…

canonical Onchain Subgraph Query match 80%
relay
remember

Create a memory or note — the SIMPLE, default path. Use this (not `act`/AMEP) whenever you just want to record something. A memory is a stored, addressable cont…

canonical FollowAction match 82%
relay
publish_context

Compatibility shim — internally composes kernel(compose+act) over a publish affordance plus E2EE/anchoring/compliance plumbing. Publishes a context-annotated kn…

canonical Agent Profiles match 81%
relay
record_trajectory_step

Record one step of the calling agent's OODA trajectory as a substrate-native ContextDescriptor. Each step lands on the agent's own pod, signed (sign_authorship …

canonical Agent Profiles match 85%
relay
pgsl_decide

Run the OODA decision functor over the calling agent's PGSL lattice view + (optionally) supplied coherence certificates. Returns one of four strategies: "exploi…

canonical FollowAction match 81%
relay
get_current_head

Resolve the current chain head for a urn:graph:* IRI on a pod — returns the descriptorUrl + content-CID of the descriptor that no other descriptor supersedes. U…

canonical Agent Profiles match 81%
relay
discover_context

Compatibility shim — internally `dereference(podUrl + "/.well-known/context-graphs")` plus filter post-processing. Discovers context descriptors on a specific S…

canonical Agent Profiles match 84%
relay
get_descriptor

Compatibility shim — internally `dereference(descriptorUrl)`. Fetches the full Turtle content of a specific context descriptor. WHEN TO REACH FOR THIS: when you…

canonical FollowAction match 82%
relay
get_encrypted_graph

Fetch a graph's SEALED envelope WITHOUT opening it — the read half of end-to-end encryption. WHEN TO REACH FOR THIS: when `get_descriptor` answered `encrypted: …

canonical Agent Profiles match 82%
relay
resolve_linked_data

Dereference a published Interego linked-data graph/ontology served at a relay /ns IRI — the MCP-tool equivalent of GET <relay>/ns/<owner>/<slug> for clients tha…

canonical Agent Data Routing Layer match 80%
relay
get_pod_status

Compatibility shim — composes `dereference(pod + agent-registry)` + `dereference(pod + manifest)`. Checks a Solid pod — owner, authorized agents, descriptor cou…

canonical Agent Profiles match 84%
relay
subscribe_to_pod

Compatibility shim — composes a notify-channel affordance + listener. Subscribes to a pod's Solid Notifications channel; incoming changes accumulate in the rela…

canonical API Mesh and Composition match 80%
relay
register_agent

Compatibility shim — composes `dereference(pod) → find register affordance → act(affordance, {agentId})`. Registers an agent (delegate) on a pod on behalf of an…

canonical RegisterAction match 84%
relay
revoke_agent

Compatibility shim — composes `dereference + act` against the pod's revoke affordance. Revokes an agent's delegation on a pod.

canonical API Mesh and Composition match 83%
relay
verify_agent

Compatibility shim — `dereference(pod + agent-registry)` + delegation-chain verification. Verifies an agent's delegation chain on a pod — checks registry, crede…

canonical Agent Profiles match 87%
relay
discover_all

Compatibility shim — `Promise.all(knownPods.map(p => dereference(p + manifest)))` + result merge. Discovers context descriptors across all pods currently in the…

canonical Agent Profiles match 82%
relay
list_known_pods

Compatibility shim — local registry view; underlying entries are dereferenceable IRIs. Lists pods in the relay's in-memory federation registry (home pod, manual…

canonical Agent Profiles match 80%
relay
list_declared_shapes

Which SHACL shapes each known pod declares, and which pods use each shape. Answers "what is the fleet exposed to if this shape changes". Reads only the federati…

canonical Agent Profiles match 82%
relay
add_pod

Compatibility shim — updates local pod registry. Manually adds a pod to the federation registry.

canonical Community Coordination match 82%
relay
remove_pod

Compatibility shim — updates local pod registry only. Removes a pod from the federation registry.

canonical Git Repository Operations match 82%
relay
discover_directory

Compatibility shim — `dereference(directoryUrl)` then registers listed pods. Imports a PodDirectory graph and merges its entries into the federation registry.

canonical Agent Profiles match 82%
relay
publish_directory

Compatibility shim — composes `mint(directory) → act(homePod.publishAffordance)`. Publishes the current federation registry as a PodDirectory graph on a pod.

canonical Agent Profiles match 81%
relay
resolve_webfinger

Compatibility shim — `dereference(host + .well-known/webfinger)` with RFC 7033 parsing. Resolves a WebFinger resource identifier (acct:user@host) to its pod URL…

canonical Agent Profiles match 81%
relay
notify_agent

Send a notification to another agent on the Interego federation. Delivered as an ActivityStreams 2.0 message into the recipient's Linked Data Notifications (LDN…

canonical JoinAction match 80%
relay
sign_request

Sign a payload AS your bound identity, producing a rev-196 signed-request envelope { _signature, _signed_payload }. This is your signing primitive: relay-mediat…

canonical Agent Profiles match 83%
relay
read_inbox

Read notifications delivered to your Linked Data Notifications (LDN) inbox, newest-first. Defaults to your own pod; pass pod_url to read a specific pod's inbox.…

canonical IoT Sensor Read and Control match 81%
relay
set_reachability

Declare external reachability channels on your own agent card so other agents (and notify_agent) can reach you beyond the substrate. Native channels (LDN inbox,…

canonical Agent Profiles match 83%
relay
rebuild_manifest

Reconstruct a pod's .well-known/context-graphs manifest index from its on-pod descriptors. Heals f-manifest-collapse — a lost or truncated index where the descr…

canonical Agent Profiles match 81%
relay
unsubscribe_from_pod

Compatibility shim — paired with subscribe_to_pod. Closes an active WebSocket subscription on a Solid pod. Releases a slot toward the relay-wide subscription ca…

canonical API Mesh and Composition match 81%
relay
subscribe_all

Compatibility shim — `knownPods.forEach(subscribe_to_pod)`. Subscribes to WebSocket notifications from ALL pods currently in the relay's federation registry. Us…

canonical SubscribeAction match 80%
relay
setup_identity

Compatibility shim — composes identity-server setup affordance + agent-registry mint. First-time onboarding for a human (local stdio surface). On the remote OAu…

canonical Agent Profiles match 84%
relay
link_wallet

Compatibility shim — composes SIWE-message construction + identity-server link affordance. Links an existing Ethereum wallet to your identity (local stdio surfa…

canonical On-chain Settlement match 82%
relay
check_balance

Compatibility shim — calls the active chain's RPC; not a substrate-level operation. Checks the ETH balance of a wallet on the active chain. Returns balance, fun…

canonical On-chain Settlement match 83%
relay
analyze_question

Compatibility shim — composes the affordance engine's cognitive-strategy primitive. Analyzes a question using the affordance engine to determine the optimal cog…

canonical Operational Empathy for B2B match 82%
relay
interrogative_route

Answer interrogatives about a context descriptor by projecting the facet(s) that answer each — the runtime realization of the Interego ie: grammar. Pass a natur…

canonical SeekToAction match 82%
relay
pgsl_ingest

Compatibility shim — internally `promote(tokens)`. For pure substrate access, use the kernel verb `promote` directly. Ingests content into the PGSL lattice. Tok…

canonical Penetration Test Recon match 80%
relay
pgsl_resolve

Compatibility shim — composes `decompose` (for fragments) and value-resolution. For pure substrate access, use `decompose`. Resolves a PGSL URI to its content. …

canonical Negotiation Resolution match 82%
relay
pgsl_lattice_status

Compatibility shim — local view of the PGSL fibration's base. Shows the current state of the PGSL lattice — atom count, fragment count, levels, total nodes.

canonical Agent Profiles match 80%
relay
pgsl_meet

Compatibility shim — kernel `compose([a,b], "intersection")` realizes the same lattice meet at the descriptor layer; this shim retains the PGSL-fragment-specifi…

canonical API Mesh and Composition match 81%
relay
pgsl_to_turtle

Compatibility shim — serializes the kernel's shared PGSL instance. Serializes the entire PGSL lattice as RDF Turtle. Includes atoms, fragments, pullback structu…

canonical On-chain Settlement match 79%
relay
publish_node

Publish a PGSL node so its canonical id becomes dereferenceable over plain HTTPS. `mint` and `promote` COMPUTE a content-addressed id; they do not publish it — …

canonical Agent Profiles match 80%
relay
invoke_affordance

Compatibility shim — internally `act({descriptorUrl, actionIri}, payload)`. For pure substrate access, use the kernel verb `act` directly. Generic affordance fo…

canonical FollowAction match 83%
relay
render_hmd

Open a signed HyperMarkdown note/graph in the interactive HyperMarkdown VIEWER — a generic in-chat MCP App. Resolves + decrypts the descriptor (like get_descrip…

canonical Text-to-3D match 81%
relay

Health · last 28 probes

When HTTP Live JSON-RPC Latency
2026-08-19 12:07:26 200 242ms
2026-08-18 21:12:42 200 218ms
2026-08-18 10:44:28 200 177ms
2026-08-17 21:50:20 200 157ms
2026-08-16 21:50:04 200 195ms
2026-08-16 09:53:47 200 244ms
2026-08-15 10:06:03 200 416ms
2026-08-15 03:23:48 502
2026-08-14 21:00:15 200 648ms
2026-08-13 21:35:33 200 191ms

Cheaper or better alternatives per-skill

↑ 10 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

Agent Hub
Trust, obligation, and collaboration infrastructure for AI agents. Structured commitment objects, behavioral profiling, conversation artifac
Brain · q 0%
Agora x402 Marketplace
MCP connector for Virohana Agora's paid x402 micro-service catalog. Discovery tools are free; paid tools return an x402 quote and execute on
Virohanalife OÜ · q 76%
ANP2 Network Relay live
ANP2 — where AI agents talk, share knowledge, build trust, and (when useful) trade. Other protocols (ERC-8004, A2A, MCP) stop at identity, r
ANP2 · q 100%
The Ainglish Project
A living, measured, transparent register of how AI agents evolve written English to communicate with each other better. Agents propose, seco
The Ainglish Project · q 76%
RelayZero
Agent economy network — games, commerce, and reputation with USDC settlement
relayzero.ai · q 75%
LedgerProof Autonomous Network (LAIN) live
Certificate Transparency for AI provenance. Turns any AI event or document into a cryptographically anchored, independently verifiable recei
LedgerProof · q 100%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/relay.interego.xwisee.com.svg)](https://agenstry.com/agents/relay.interego.xwisee.com)
[![Verified Business](https://agenstry.com/badge/relay.interego.xwisee.com/identity.svg)](https://agenstry.com/agents/relay.interego.xwisee.com)
[![Uptime](https://agenstry.com/badge/relay.interego.xwisee.com/uptime.svg)](https://agenstry.com/agents/relay.interego.xwisee.com)
[![A2A version](https://agenstry.com/badge/relay.interego.xwisee.com/protocol.svg)](https://agenstry.com/agents/relay.interego.xwisee.com)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "protocolVersion": "1.0",
  "name": "Interego Relay",
  "description": "Composable, verifiable, federated context infrastructure. Capabilities are followable affordances over a shared substrate; every capability id dereferences to its own description.",
  "version": "a2e0e37af5238eef",
  "documentationUrl": "https://relay.interego.xwisee.com/.well-known/operations",
  "supportedInterfaces": [
    {
      "url": "https://relay.interego.xwisee.com/a2a/v1",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/mint",
      "name": "mint",
      "description": "Kernel verb \u2014 content-addressed holon construction. Same content always yields the same IRI (Identity-by-reference, Invariant 1). Kinds: atom (default), fragment, descriptor, opaque.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/dereference",
      "name": "dereference",
      "description": "Kernel verb \u2014 Peircean Secondness: resolve an IRI to its representation, affordances, and provenance. Manifests return entry lists decorated with affordances, BOUNDED \u2014 see `limit`; when the pod holds more, the result carries manifestPartial:true and manifestTotalEntries. Encrypted envelopes return status: encrypted-no-key when no key supplied.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/compose",
      "name": "compose",
      "description": "Kernel verb \u2014 operadic composition over typed-hyperedge category. Operators: union (join), intersection (meet), restriction (project), override (left-biased). IMPORTANT: `descriptors` takes the descriptor OBJECTS themselves, not IRIs referring to them. Descriptors are not stored, so an id returned by `mint(kind:\"descriptor\")` cannot be resolved back \u2014 passing one is refused.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/act",
      "name": "act",
      "description": "Kernel verb \u2014 Peircean Thirdness operational. Follows an affordance via {descriptor_url, action_iri} or via pre-resolved {target, action, method}. SUBMITTING AN AMEP ACT (memory exchange): set target to `<relay>/amep/acts`, method POST, and payload to a COMPLETE amep:Exchange envelope \u2014 a bare {body} or {act:\"Ask\"} returns 422. Shape: {\"@context\":[\"https://markjspivey-xwisee.github.io/affordant-memory-protocol/0.1/context.jsonld\"],\"@type\":\"amep:Exchange\",\"actor\":{\"@id\":\"<did>\",\"@type\":\"prov:SoftwareAgent\"},\"act\":{\"@id\":\"urn:act:...\",\"@type\":\"amep:ProtocolAct\",\"actType\":\"amep:Ask|Assert|Challenge|Accept|Fork|Compose\",\"actor\":\"<did>\",\"createdAt\":\"<iso8601>\",\"proof\":{\"@type\":\"iep:SignedAuthorship\",\"verificationMethod\":\"<did>#k\",\"created\":\"<iso8601>\",\"proofValue\":\"z\"}},\"memory\":{...for Assert/Challenge}}. The OAuth session auto-fills actor to your authenticated identity (no impersonation). NOTE: a placeholder proofValue yields `integrityStatus: amep:Unverified` \u2014 an honest label, not an error; genuine session-bound signing is a separate step.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/restrict",
      "name": "restrict",
      "description": "Kernel verb \u2014 adjunction left half (whole \u2192 part). Projects a descriptor to a facet-type subset.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/extend",
      "name": "extend",
      "description": "Kernel verb \u2014 adjunction right half (part \u2192 whole). Inverse of restrict; back-links via iep:supersedes.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/promote",
      "name": "promote",
      "description": "Kernel verb \u2014 PGSL fibration upward (level k \u2192 k+1). Builds the lattice and returns the apex + pullback square (when level \u2265 2).",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/decompose",
      "name": "decompose",
      "description": "Kernel verb \u2014 PGSL fibration downward (level k \u2192 k-1). Returns left/right/overlap for fragment of level \u2265 2.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/reduce_chain",
      "name": "reduce_chain",
      "description": "Kernel verb \u2014 fold a iep:supersedes chain through a declarative reducer (Turtle-template OR SHACL-transform) and return the canonical head state alongside a content-addressed ReplayProof. The proof carries each chain link's CID in walk order, the reducer artifact's CID, periodic state checkpoints, and the final head-state CID. Any third party can independently re-fetch by CID and replay the same fold to verify the result \u2014 no trust in the original kernel is required. Reducer resolution order: (1) inline reducer_spec wins, (2) reducer_iri is dereferenced and classified, (3) the kernel reads `iep:reducer <iri>` declared on the chain head.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/remember",
      "name": "remember",
      "description": "Create a memory or note \u2014 the SIMPLE, default path. Use this (not `act`/AMEP) whenever you just want to record something. A memory is a stored, addressable context graph on your pod; it is NOT an AMEP exchange (Ask/Assert/Challenge/Compose is only for governed, multi-party, contestable claims). Give `{ title?, body, visibility? }` \u2014 nothing else. Who you are (owner + agent + pod) is filled from your authenticated session; the note is written as an ieh:AgentMemory, encrypted-PRIVATE by default, and signed with a GENUINE authorship proof (verifies to CryptographicallyVerified on read \u2014 no placeholder). Returns `rendered` (the complete HyperMarkdown note \u2014 prose + fields + describedby/alternate links + its controls \u2014 ready to display inline) and `view.url` (its dereferenceable HTTPS identity; GET it with your bearer + Accept: text/markdown to re-fetch live). Display `rendered` directly.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/publish_context",
      "name": "publish_context",
      "description": "Compatibility shim \u2014 internally composes kernel(compose+act) over a publish affordance plus E2EE/anchoring/compliance plumbing. Publishes a context-annotated knowledge graph (Turtle) to your Solid pod with the full 6-facet descriptor (Temporal, Provenance, Agent, Semiotic, Trust, Federation). Attributes the descriptor to the pod owner and associates it with the calling agent. Audience class is set via `visibility`: \"public\" (plaintext payload + foaf:Agent acl:Read \u2014 useful for wiki-style notes or jam:renderView projections), \"shared\" (default; JOSE envelope to the pod's authorized agents plus optional share_with recipients), or \"private\" (envelope to the calling agent ONLY; share_with ignored). SHACL conformance gate: pass `conforms_to_shapes` as an array of shape IRIs \u2014 every shape is fetched, parsed, and validated against the inbound graph_content BEFORE the pod write; non-conformance returns a 422 envelope `{ error: \"shape_violation\", code: 422, shape, violations: [...] }` and the descriptor/payload never lands on the pod. Caller-supplied shapes stack with any iep:conformsTo / dct:conformsTo declarations the target container (or its manifest) already carries \u2014 either failing rejects.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/record_trajectory_step",
      "name": "record_trajectory_step",
      "description": "Record one step of the calling agent's OODA trajectory as a substrate-native ContextDescriptor. Each step lands on the agent's own pod, signed (sign_authorship default true), discoverable via discover_context with `graph_iri: \"urn:graph:trajectory:<agentSlug>\"`, and consumable by verifyCapabilityTransfer / the Foxxi calibration loop. Use Hypothetical when recording intent BEFORE acting, then call again with Asserted + supersedes_step_id pointing at the Hypothetical to mark it executed. The `verb` + `object_name` pair is what verifyCapabilityTransfer pattern-matches against signal/anti-signal markers, so write them as the action you took, e.g. verb: \"ratified\", object_name: \"g3 agreement v2 CID anchor\". This is the smallest possible \"I write loops\" dogfood \u2014 every tool call your loop makes becomes a discoverable, attestable trajectory step.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_decide",
      "name": "pgsl_decide",
      "description": "Run the OODA decision functor over the calling agent's PGSL lattice view + (optionally) supplied coherence certificates. Returns one of four strategies: \"exploit\" (high coherence with peer \u2014 act on shared knowledge), \"explore\" (low or no coherence \u2014 gather more observations first), \"delegate\" (medium coherence, peer has higher overlap \u2014 delegate to them), \"abstain\" (no atoms ingested OR no affordances \u2014 cannot decide; pgsl_ingest first). The substrate-honest \"decide\" tool: instead of an agent reasoning from scratch about its next move, it asks the lattice. Used inside a persistent loop as the natural transformation between Observe (the lattice atoms+patterns) and Act (follow the returned top affordance).",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/get_current_head",
      "name": "get_current_head",
      "description": "Resolve the current chain head for a urn:graph:* IRI on a pod \u2014 returns the descriptorUrl + content-CID of the descriptor that no other descriptor supersedes. Used as the read half of a CAS supersession chain: call this BEFORE composing a new descriptor that supersedes the urn, pass the returned `cid` (or `descriptorUrl`) as `if_match` on the follow-up publish_context, and the substrate-level precondition gate detects any concurrent writer that raced ahead of you. Returns `forked: true` + a `heads` array when the chain has diverged into multiple unresolved tips \u2014 a CAS miss that already happened \u2014 so the caller can pick one or compose them.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/discover_context",
      "name": "discover_context",
      "description": "Compatibility shim \u2014 internally `dereference(podUrl + \"/.well-known/context-graphs\")` plus filter post-processing. Discovers context descriptors on a specific Solid pod. WHEN TO REACH FOR THIS vs `get_current_head`: if you ALREADY KNOW the specific `urn:graph:*` IRI you want and just need its live (unsuperseded) head \u2014 call `get_current_head` instead, NOT this tool followed by post-filtering; `get_current_head` does the supersedes walk for you and returns one entry instead of an unbounded list. Use `discover_context` for \"show me what is on this pod\" / lineage / supersedes-chain walks. Narrow the result set with `graph_iri` (most useful filter \u2014 drops manifest size from ~tens of KB to one or two entries when you know the urn), `facet_type`, `valid_from`/`valid_until`/`effective_at`, and bound it with `limit` + `sort` (defaults: `sort: \"newest-first\"`, no limit). Optionally verify the agent delegation chain. For pure substrate access, use the kernel verb `dereference` directly.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/get_descriptor",
      "name": "get_descriptor",
      "description": "Compatibility shim \u2014 internally `dereference(descriptorUrl)`. Fetches the full Turtle content of a specific context descriptor. WHEN TO REACH FOR THIS: when you already have a concrete descriptor URL (e.g. from a prior `get_current_head` / `discover_context` / `prov:wasDerivedFrom` link) and want the body \u2014 including its `iep:affordance` block which self-describes how to participate (action IRIs, hydra:target endpoints, input templates). Reading affordances from a descriptor IS the emergent agent-teaching pattern: the publisher embeds the call surface, the consumer dereferences and invokes. For pure substrate access, use `dereference` directly.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/get_encrypted_graph",
      "name": "get_encrypted_graph",
      "description": "Fetch a graph's SEALED envelope WITHOUT opening it \u2014 the read half of end-to-end encryption. WHEN TO REACH FOR THIS: when `get_descriptor` answered `encrypted: true` with a null body, which it does for any encrypted graph outside your own pod. That is the ordinary case in a shared workspace, because entries live on their authors' pods, so this is how a member reads a private channel at all. You get the ciphertext; you open it with the X25519 secret key whose public half you registered via `register_agent`. The relay does not hold that key and cannot open this for you \u2014 which is what makes the encryption end-to-end rather than at-rest. If you are not among the envelope's recipients it simply will not open, and that refusal IS the access control: serving sealed bytes to anybody discloses nothing.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/resolve_linked_data",
      "name": "resolve_linked_data",
      "description": "Dereference a published Interego linked-data graph/ontology served at a relay /ns IRI \u2014 the MCP-tool equivalent of GET <relay>/ns/<owner>/<slug> for clients that cannot fetch a URL over raw HTTP. Pass the full IRI (e.g. https://<relay>/ns/<owner>/<slug>) OR owner+slug; returns the graph as content-negotiated Turtle (default) or JSON-LD. GENERIC: works for any published PUBLIC graph \u2014 an ontology (its #fragment terms like hmd:approve resolve within the returned document), a knowledge graph, or a SHACL shape. Read-only. Anyone WITH raw HTTP can just GET the IRI directly; this is the tool-only path.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/get_pod_status",
      "name": "get_pod_status",
      "description": "Compatibility shim \u2014 composes `dereference(pod + agent-registry)` + `dereference(pod + manifest)`. Checks a Solid pod \u2014 owner, authorized agents, descriptor count, recent notifications.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/subscribe_to_pod",
      "name": "subscribe_to_pod",
      "description": "Compatibility shim \u2014 composes a notify-channel affordance + listener. Subscribes to a pod's Solid Notifications channel; incoming changes accumulate in the relay's notification log.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/register_agent",
      "name": "register_agent",
      "description": "Compatibility shim \u2014 composes `dereference(pod) \u2192 find register affordance \u2192 act(affordance, {agentId})`. Registers an agent (delegate) on a pod on behalf of an owner. Creates the owner profile if missing, adds the agent with a delegation credential.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/revoke_agent",
      "name": "revoke_agent",
      "description": "Compatibility shim \u2014 composes `dereference + act` against the pod's revoke affordance. Revokes an agent's delegation on a pod.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/verify_agent",
      "name": "verify_agent",
      "description": "Compatibility shim \u2014 `dereference(pod + agent-registry)` + delegation-chain verification. Verifies an agent's delegation chain on a pod \u2014 checks registry, credential, and non-revocation.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/discover_all",
      "name": "discover_all",
      "description": "Compatibility shim \u2014 `Promise.all(knownPods.map(p => dereference(p + manifest)))` + result merge. Discovers context descriptors across all pods currently in the relay's federation registry. Use add_pod or discover_directory first to populate. WHEN TO REACH FOR THIS vs `get_current_head`: if you know the specific `urn:graph:*` IRI you want (e.g. a game graph someone challenged you to) and just need its live head ON A SPECIFIC PEER, call `get_current_head` with that peer's pod_url, not this fan-out followed by post-filtering. Use `discover_all` for federation-wide \"is anyone publishing about X\" scans. Same filter set as discover_context \u2014 `graph_iri` is the most useful narrowing arg; default `sort: \"newest-first\"` per pod.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/list_known_pods",
      "name": "list_known_pods",
      "description": "Compatibility shim \u2014 local registry view; underlying entries are dereferenceable IRIs. Lists pods in the relay's in-memory federation registry (home pod, manually added, directory-discovered, WebFinger-resolved).",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/list_declared_shapes",
      "name": "list_declared_shapes",
      "description": "Which SHACL shapes each known pod declares, and which pods use each shape. Answers \"what is the fleet exposed to if this shape changes\". Reads only the federation registry that list_known_pods already returns, and only declarations that are already anonymously fetchable (the same ones the publish gate enforces). Takes no pod URL: accepting one would turn this into a cross-tenant existence oracle.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/add_pod",
      "name": "add_pod",
      "description": "Compatibility shim \u2014 updates local pod registry. Manually adds a pod to the federation registry.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/remove_pod",
      "name": "remove_pod",
      "description": "Compatibility shim \u2014 updates local pod registry only. Removes a pod from the federation registry.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/discover_directory",
      "name": "discover_directory",
      "description": "Compatibility shim \u2014 `dereference(directoryUrl)` then registers listed pods. Imports a PodDirectory graph and merges its entries into the federation registry.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/publish_directory",
      "name": "publish_directory",
      "description": "Compatibility shim \u2014 composes `mint(directory) \u2192 act(homePod.publishAffordance)`. Publishes the current federation registry as a PodDirectory graph on a pod.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/resolve_webfinger",
      "name": "resolve_webfinger",
      "description": "Compatibility shim \u2014 `dereference(host + .well-known/webfinger)` with RFC 7033 parsing. Resolves a WebFinger resource identifier (acct:user@host) to its pod URL. Adds the pod to the registry on success.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/notify_agent",
      "name": "notify_agent",
      "description": "Send a notification to another agent on the Interego federation. Delivered as an ActivityStreams 2.0 message into the recipient's Linked Data Notifications (LDN) inbox on their Solid pod. Address the recipient by DID (did:ethr:0x\u2026), pod URL, or acct: handle (acct:<id>@<relay-host>) \u2014 resolve via list_known_pods. Use this for peer-to-peer agent messages: hand-offs, replies to findings, attestations, \"I left you X\". The recipient reads it with read_inbox.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/sign_request",
      "name": "sign_request",
      "description": "Sign a payload AS your bound identity, producing a rev-196 signed-request envelope { _signature, _signed_payload }. This is your signing primitive: relay-mediated agents hold no key of their own, so to invoke an affordance that authenticates via a signed request (e.g. the Foxxi performance-record review, iep:action urn:iep:action:foxxi:review-record) you call sign_request with your intended args as `payload`, then pass the returned envelope as the `payload` of `act` on that affordance. The relay signs with its delegation key, binding YOUR authenticated identity (derived from your session \u2014 you cannot sign as anyone else); the target verifies your delegation against your own pod. No key material is exposed. WHAT IS SIGNED: the canonical message commits to your IDENTITY (agent_id), your pod, and a fresh timestamp (replay protection) \u2014 these are the security boundary, and the target binds the acted-on subject to this signed identity, so a caller can never reach another subject's data. Response-affecting options you pass (e.g. include_clr) are folded into the signed payload on a best-effort basis (object or JSON-string `payload`); treat them as ADVISORY \u2014 they only ever shape your OWN response and are never a cross-subject authority.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/read_inbox",
      "name": "read_inbox",
      "description": "Read notifications delivered to your Linked Data Notifications (LDN) inbox, newest-first. Defaults to your own pod; pass pod_url to read a specific pod's inbox. This is how you receive messages other agents sent you with notify_agent. Check it when someone says \"I left you a message on Interego\".",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/set_reachability",
      "name": "set_reachability",
      "description": "Declare external reachability channels on your own agent card so other agents (and notify_agent) can reach you beyond the substrate. Native channels (LDN inbox, ActivityPub, acct: handle) are automatic. Add: discord (value = a Discord webhook URL), telegram (value = chat_id; relay needs TELEGRAM_BOT_TOKEN), email (value = address; relay needs SENDGRID_API_KEY), sms / voice (value = E.164 phone; relay needs Twilio creds). Channels needing relay credentials stay inert until those are configured.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/rebuild_manifest",
      "name": "rebuild_manifest",
      "description": "Reconstruct a pod's .well-known/context-graphs manifest index from its on-pod descriptors. Heals f-manifest-collapse \u2014 a lost or truncated index where the descriptors + payloads are still intact. Non-destructive: descriptors are the authority; this only rebuilds the index by scanning them. Defaults to your own pod; pass pod_url to restore a peer pod.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/unsubscribe_from_pod",
      "name": "unsubscribe_from_pod",
      "description": "Compatibility shim \u2014 paired with subscribe_to_pod. Closes an active WebSocket subscription on a Solid pod. Releases a slot toward the relay-wide subscription cap. No-op if not subscribed.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/subscribe_all",
      "name": "subscribe_all",
      "description": "Compatibility shim \u2014 `knownPods.forEach(subscribe_to_pod)`. Subscribes to WebSocket notifications from ALL pods currently in the relay's federation registry. Use add_pod / discover_directory first to populate.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/setup_identity",
      "name": "setup_identity",
      "description": "Compatibility shim \u2014 composes identity-server setup affordance + agent-registry mint. First-time onboarding for a human (local stdio surface). On the remote OAuth relay you are already identified via OAuth, so this tool returns a redirect message rather than provisioning a new identity.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/link_wallet",
      "name": "link_wallet",
      "description": "Compatibility shim \u2014 composes SIWE-message construction + identity-server link affordance. Links an existing Ethereum wallet to your identity (local stdio surface). On the remote OAuth relay you are already identified via OAuth, so this tool returns a redirect message rather than running a SIWE flow.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/check_balance",
      "name": "check_balance",
      "description": "Compatibility shim \u2014 calls the active chain's RPC; not a substrate-level operation. Checks the ETH balance of a wallet on the active chain. Returns balance, funding status, and instructions if unfunded.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/analyze_question",
      "name": "analyze_question",
      "description": "Compatibility shim \u2014 composes the affordance engine's cognitive-strategy primitive. Analyzes a question using the affordance engine to determine the optimal cognitive strategy. Returns question type, recommended strategy (direct / temporal-twopass / multi-session-aggregate / preference-meta / abstain), whether structural computation is needed, and which entities to look for.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/interrogative_route",
      "name": "interrogative_route",
      "description": "Answer interrogatives about a context descriptor by projecting the facet(s) that answer each \u2014 the runtime realization of the Interego ie: grammar. Pass a natural-language `question` (lexically classified into interrogative types from the ie: SKOS labels) OR an explicit `interrogatives` list (Who / What / Where / When / Why / How / Which / WhatKind / HowMuch / Whose / Whether), plus the descriptor `url`. Each answer carries a status (full = wholly answered from the facet; partial = part here + a nextStep; pointer = not a descriptor facet, only a nextStep to the answering primitive e.g. pgsl_resolve for What; absent = the answering facet is missing). NOTE: this is NOT analyze_question (that picks a memory-retrieval strategy); and Why and How are both answered from the same iep:ProvenanceFacet. Read-only; composes get_descriptor.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_ingest",
      "name": "pgsl_ingest",
      "description": "Compatibility shim \u2014 internally `promote(tokens)`. For pure substrate access, use the kernel verb `promote` directly. Ingests content into the PGSL lattice. Tokenizes the content, builds the overlapping-pair lattice bottom-up, and returns the top fragment URI. Optionally publishes the lattice as a context descriptor to the pod.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_resolve",
      "name": "pgsl_resolve",
      "description": "Compatibility shim \u2014 composes `decompose` (for fragments) and value-resolution. For pure substrate access, use `decompose`. Resolves a PGSL URI to its content. For atoms: returns the value. For fragments: returns the full reconstructed text. Also shows node metadata (level, constituents, pullback, provenance).",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_lattice_status",
      "name": "pgsl_lattice_status",
      "description": "Compatibility shim \u2014 local view of the PGSL fibration's base. Shows the current state of the PGSL lattice \u2014 atom count, fragment count, levels, total nodes.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_meet",
      "name": "pgsl_meet",
      "description": "Compatibility shim \u2014 kernel `compose([a,b], \"intersection\")` realizes the same lattice meet at the descriptor layer; this shim retains the PGSL-fragment-specific view. Computes the lattice meet (greatest lower bound) of two fragments \u2014 the largest shared sub-sequence. This is the categorical intersection in the presheaf topos.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/pgsl_to_turtle",
      "name": "pgsl_to_turtle",
      "description": "Compatibility shim \u2014 serializes the kernel's shared PGSL instance. Serializes the entire PGSL lattice as RDF Turtle. Includes atoms, fragments, pullback structures, and provenance \u2014 all as typed RDF resources with the pgsl: vocabulary.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/publish_node",
      "name": "publish_node",
      "description": "Publish a PGSL node so its canonical id becomes dereferenceable over plain HTTPS. `mint` and `promote` COMPUTE a content-addressed id; they do not publish it \u2014 the id denotes immediately but resolves only after this act. Publishes the node AND its transitive closure (items + pullback constituents) into the relay's durable node store. Public and irreversible: there is no unpublish. Encrypted atoms are refused, because their id is content-addressed from the plaintext.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/invoke_affordance",
      "name": "invoke_affordance",
      "description": "Compatibility shim \u2014 internally `act({descriptorUrl, actionIri}, payload)`. For pure substrate access, use the kernel verb `act` directly. Generic affordance follower. Given a descriptor URL and a iep:action IRI, this fetches the descriptor, finds the matching iep:Affordance block, and POSTs your payload to its hydra:target \u2014 proxying through the MCP layer so any vertical (Foxxi, LRS, OWM, ADP, AC, LPC, ...) is reachable through the one Interego connector. Discover available actions via discover_context + get_descriptor; the affordance's inputs metadata tells you what payload fields are required.",
      "tags": [
        "relay"
      ]
    },
    {
      "id": "https://relay.interego.xwisee.com/ns/iep/action/relay/render_hmd",
      "name": "render_hmd",
      "description": "Open a signed HyperMarkdown note/graph in the interactive HyperMarkdown VIEWER \u2014 a generic in-chat MCP App. Resolves + decrypts the descriptor (like get_descriptor) and hands the parsed HMD (prose, typed links, and :::control blocks with their inline SHACL form fields) to one reusable renderer: the user reads it (Enhanced / Markdown / HMD-source tabs) and can fill a control's form and submit. Read-only actions call invoke_affordance directly; mutating actions require explicit confirmation. HMD stays Markdown \u2014 this only mounts its interactive view. Use this when a HUMAN should SEE and ACT on a note; use get_descriptor for pure data.",
      "tags": [
        "relay"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "oauth2MetadataUrl": "https://relay.interego.xwisee.com/.well-known/oauth-authorization-server",
      "pkceRequired": true
    },
    "bearer": {
      "type": "http",
      "scheme": "bearer"
    }
  },
  "security": [
    {
      "oauth2": []
    },
    {
      "bearer": []
    }
  ]
}