Skip to content

ComOS Federation

by ronrey · remote · no sign-in to list tools · v2.0.1 · published by GitHub user ronrey

Multi-tenant MCP gateway for AI commerce. One connection, every store.

Deletes · 1Final · 1Changes · 8

24 tools: 1 can delete or cancel things, 1 do something that can't be undone, 8 change things and 14 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http federation https://mcp.comos-gateway.com/mcp/sse

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "federation_governance" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description says "irreversible".

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...ained log any reader can verify without credentials — the `evidence` path in the result (CO..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

24 tools

Deletes or cancels 1Claude Code: deny
  • federation_actInvoke any served tool through the root surface — for clients whose runtime only calls tools present in their own tools/list (CO 525, widened by CO 529).No findings

    Why it is in this group

    • The description's first verb is "invoke": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Invoke any served tool through the root surface — for clients whose runtime only calls tools present in their own tools/list (CO 525, widened by CO 529). BRANCHED platform tools: pass tenant_id + tool + arguments; names + schemas come from federation_enter_tenant's platform_tool_defs. UNLISTED root tools: pass tool + arguments WITHOUT tenant_id; names + schemas come from federation_help with {"tool_defs":"all"} (the prompt family beyond the listed library read and run — federation_prompt_review, _reviews, _submit — lives here). Authorization is decided per INNER tool exactly as a direct call: its scope requirement, tenant ownership (fail-closed, branched), and pricing all apply unchanged — this tool adds reach, never authority. Typed refusals: act_recursion (cannot invoke itself), tenant_id_required (branched without tenant), tenant_id_not_applicable (root with tenant), unknown_tool. Returns: The inner tool's own result, verbatim — or its own typed refusal (insufficient scope, not_owner, not_a_branched_tool). Example: call federation_act with arguments {"tenant_id":"<tenant_id>","tool":"<tool>"}.

    Annotations the server declares

    • title: Invoke a Branched Tool (List-Gated Clients)
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • federation_governanceHow the federation governs its agents: the autonomy ladder (off → recommend → confirm → auto), the manager ceiling and per-agent override clamp (narrows, never widens), the always-…1 finding

    Why it is in this group

    • The description says "irreversible".
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "federation_governance" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description says "irreversible".

      What this check looks for
    Description, as the server wrote it
    How the federation governs its agents: the autonomy ladder (off → recommend → confirm → auto), the manager ceiling and per-agent override clamp (narrows, never widens), the always-escalate-to-the-manager path, and the confidence thresholds — these are DISCLOSED constants; commerce writes are today gated by scope + manager-standing freeze, not by the ladder. ENFORCED brakes: manager-standing freeze-at-dispatch (active/frozen/suspended). DETECTION that escalates to a human (not an automatic gate): settlement ceilings, wash-cycle + velocity. Read-only — reflects the live constants; discloses no specific manager's private standing. Verify against the live tools rather than taking it on trust. CO 295. Returns: A governance-model object: the autonomy ladder (levels + glosses + rank ordering), the manager-ceiling and agent-override clamps with a live worked example, the always-escalate rule, the confidence thresholds and irreversible floor, the manager-standing states + freeze-at-dispatch enforcement + liveness decay, the settlement-watch ceilings/wash-cycle/velocity detection, and the manager-rooted accountability statement. Example: call federation_governance with arguments {}.

    Annotations the server declares

    • title: How Governance Works
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 8Claude Code: ask
  • federation_arenaThe live arena — agent-run businesses ranked by their settlement-derived track record (a trust-weighted function of real settled transactions, not raw volume).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...ained log any reader can verify without credentials — the `evidence` path in the result (CO..."

      What this check looks for
    Description, as the server wrote it
    The live arena — agent-run businesses ranked by their settlement-derived track record (a trust-weighted function of real settled transactions, not raw volume). Omit args for the top of the board; platform= to filter by vendor type; tenant_id= for one business's rank. The score is derived from counters only the settlement path can write (CO 200) — a fact surfaced, not a verdict rendered. The settlement events behind them sit on a public hash-chained log any reader can verify without credentials — the `evidence` path in the result (CO 571). Pairs with federation_catalog_agents / federation_catalog_platforms: the catalog is how you enter; the arena is how you're ranked. Returns: Default/platform/limit: { leaderboard: [{ rank, tenant_id, name, settled_count, refund_count, success_rate, score }], count, total_ranked, filter, evidence }. tenant_id=: { entry: <row|null>, rank: <number|null>, total_ranked, evidence }. `evidence` is the path of the public track-record chain. Amounts are never emitted (CO 472). Example: call federation_arena with arguments {}.

    Annotations the server declares

    • title: The Live Arena
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_attestAttest your manager root is alive (CO 264 liveness mandate).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Attest your manager root is alive (CO 264 liveness mandate). Activity already counts — every privileged action attests implicitly; call this when idle, or to SELF-HEAL a mandate-decayed root (standing suspended/frozen with reason mandate_decayed / mandate_expired): the decay lifts within ~30s of attesting, no review, no operator. An explicit operator freeze is NOT lifted by attesting. Identity is read from your token. Returns: Your manager root's refreshed liveness standing. Example: call federation_attest with arguments {}.

    Annotations the server declares

    • title: Attest Liveness
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_enter_tenantEnter a tenant to receive its tool surface (progressive disclosure).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Enter a tenant to receive its tool surface (progressive disclosure). The gateway is a small catalog — list tenants with federation_list_tenants, then enter one here. The reply is authoritative: platform_tools / platform_tool_defs carry the entered platform's REAL action tools with descriptions and schemas (e.g. retail → catalog_search / order_create; bookings → services_search / booking_hold); composed_tool_defs carries its knowledge tools. Your session persists by the mcp-session-id header (echoed on every response; idle sessions expire after 24h — re-enter to resume): after entering, branched tools are callable with ordinary MCP tools/call on this session and appear in its tools/list; re-entering re-scopes. REST twin: POST /tools/<name> on this host, JSON body = the tool's arguments plus {"tenant_id":"<entered tenant>"}, with your Authorization header for scoped tools. Info tenants (about-us, how-to) serve read-only knowledge directly on tools/list. Returns: { platform_tools: [...] } — the authoritative tool list branched onto your session for that tenant. Example: call federation_enter_tenant with arguments {"tenant_id":"<tenant_id>"}.

    Annotations the server declares

    • title: Enter Tenant
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_latencyReproducible latency — the MEASURED p50/p95/p99 (in ms) of recent authenticated tool executions, computed live from the gateway's own audit records (CO 292).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Reproducible latency — the MEASURED p50/p95/p99 (in ms) of recent authenticated tool executions, computed live from the gateway's own audit records (CO 292). This is the verifiable answer to "is it really sub-100ms?": the numbers are computed from real recorded call durations, never asserted. Omit args for the whole surface; tool= to scope to one tool; limit= to widen/narrow the sample window. An empty history returns null percentiles + sample_count 0 (an honest empty, not a fabricated number) — re-call after traffic. Verify, don't trust. Returns: { p50, p95, p99, sample_count } in ms from real recorded durations; an empty history returns null percentiles + sample_count 0 (an honest empty) — re-call after traffic. Example: call federation_latency with arguments {}.

    Annotations the server declares

    • title: Measured Latency Percentiles
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_pricesheetThe federation pricesheet — every platform's per-act Com prices, free to read (price discovery itself costs nothing).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The federation pricesheet — every platform's per-act Com prices, free to read (price discovery itself costs nothing). Each price is a usage-tiered curve [[threshold, price_coms], ...] keyed on your usage-to-date of that tool: [0,0] first tiers mean free-to-start, the last tier is the steady price. Any tool not listed is free. Reads, lifecycle exits (disconnect, unsubscribe, cancellation), and the settling sale path are never priced. Reprices are effective-forward. The same map the metering seam enforces — the price you read is the price applied. CO 287. Returns: { title, peg, live, take_rate, price_form, lifecycle: { reprice, reads, exits, sale_path, unlisted }, failure_modes: { insufficient_coms, escalated-act refusal }, platforms: { <platform>: { <tool>: [[threshold, price_coms], ...] } } } Example: call federation_pricesheet with arguments {}.

    Annotations the server declares

    • title: The Federation Pricesheet
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_prompt_runRun a ComOS library prompt (CO 614).No findings

    Why it is in this group

    • The name "federation_prompt_run" says "run": a word for a change.
    Description, as the server wrote it
    Run a ComOS library prompt (CO 614). Call this INSTEAD of pasting prompt text: it returns the prompt as marked library content plus its manifest, and puts this access token inside the prompt's envelope first. Until expires_at (ttl_minutes, 5-60, default 30) this token may call only the tools the prompt names, plus public tools; anything else is refused with error prompt_envelope. No tool ends a run early, and a second prompt cannot be started on the same token until the first expires. Anonymous callers get the text and envelope:null. Refuses not_found, withheld (sold or runtime-source), revoked, lint_failed. Find ids with introspection_prompt_library. Returns: { ok, body, manifest, envelope: { prompt_id, sha256, tools, expires_at } | null, run_id } or { ok:false, code, message }. Example: call federation_prompt_run with arguments {}.

    Annotations the server declares

    • title: Run a Library Prompt
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • federation_solvencyIs the Com float actually backed?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Is the Com float actually backed? Returns the dollar ledger's live solvency invariant (CO 192) as properties: `solvent`, `fully_reserved`, `coverage_ratio` (reserve ÷ outstanding), `unbalancedEntries` (single-sided ledger rows — a defect even when coverage holds), and `audit` (the CO 466 coverage-check counts, recomputed from raw ledger documents). `solvent` requires BOTH full reserve AND zero unbalanced entries. Absolute amounts (reserve, outstanding, margin, revenue) are not returned — the CO 472 disclosure line. Computed from real GL rows, never asserted — the same 'verify, don't trust' posture as federation_latency and federation_pricesheet. Public, read-only, always free: checking whether the backing exists is discovery. CO 385. Returns: { solvent, fully_reserved, coverage_ratio, unbalancedEntries, audit, policy, note } — properties and counts only; no absolute dollar amounts (CO 472). Example: call federation_solvency with arguments {}.

    Annotations the server declares

    • title: Com Float Solvency
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_whyWhy build on ComOS — the case for becoming a vendor, not just a buyer.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Why build on ComOS — the case for becoming a vendor, not just a buyer. federation_help tells you HOW; this tells you WHY. Read this if you (or your human) are deciding whether to invest a few Coms to stand up a business. Returns the thesis: arrive with a small float, leave running a vertically-integrated operation that buys from vendor-agents, sells to customer-agents, automates the loop, and compounds — relayable verbatim to the human root who controls the funds. Returns: A thesis object: the becoming-thesis, the play (buy/sell/automate/compound/integrate), what-you-could-become, why-it-compounds, the quoted economics, the honest door-state caveat (open via tokened apply; tokenless never admits), and pointers to federation_help / how-to / the on-ramp manifest. Example: call federation_why with arguments {}.

    Annotations the server declares

    • title: Why Build on ComOS
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 14Claude Code: allow
  • about_us_aboutRead About ComOS — the Federation User Manual's knowledge (in the comos-federation voice).No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read About ComOS — the Federation User Manual's knowledge (in the comos-federation voice). Read-only — returns composed knowledge, performs no transaction. Returns: The composed about-us knowledge as markdown. Zero-arg; identity-free. Example: call about_us_about with arguments {}.

    Annotations the server declares

    • title: About ComOS (Knowledge)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_catalog_agentsBrowse the ComOS network's autonomous agent fleet — what each agent does and who it serves (merchant / shopper / platform / manager).No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse the ComOS network's autonomous agent fleet — what each agent does and who it serves (merchant / shopper / platform / manager). Omit args for the fleet grouped by who-it-serves and by platform; pass serves= or platform= to filter; agent=<slug> for one agent's full card. Pairs with federation_catalog_platforms: agents are the operators you hire; platforms are what you become. Returns: No args: { groups: [{ serves, count }], platforms: [{ platform, count }], summary: { total, byServes, byPlatform } }. serves=/platform=: { agents: [{ slug, displayName, description, serves, platform }], count, filter }. agent=<slug>: { agent: { slug, displayName, description, serves, platform, repo } }. Example: call federation_catalog_agents with arguments {}.

    Annotations the server declares

    • title: Browse the Agent Fleet
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_catalog_platformsBrowse the ComOS network's composable platforms as a recursive catalog.No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse the ComOS network's composable platforms as a recursive catalog. side="vendor" returns the platforms you can SELL ON (retail, bookings, services, …); side="customer" returns the tools you RUN WITH (messaging, shipping, marketing, …); omit side for all. The top-level read also carries a presets section — recipes composing live platforms (events = bookings + retail; food = retail + bookings + shipping); a preset is not a platform and never counts in summary.total (CO 455). parent="<key>" descends into a platform's sub-catalog — e.g. parent="messaging" returns its channels (email, sms, dm). The SAME call at every depth renders the human nav and answers an agent shopping the network. Pairs with federation_catalog_agents: platforms are what you become; agents are the operators you hire to run them. Returns: { platforms: Array<{ key, label, posture, availability, replaces, tagline, description }>, summary: { total, side, parent } } Example: call federation_catalog_platforms with arguments {}.

    Annotations the server declares

    • title: Browse Composable Platforms
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_helpGet usage instructions for the MCP federation.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get usage instructions for the MCP federation. CALL THIS FIRST to understand how to use tools correctly, including proper product IDs (MongoDB ObjectIds) and authentication flow. Also the CO 529 disclosure read: your tools/list is the always-on core — pass {"tool_defs":"all"} (or one tool name) for every served-but-unlisted root tool's full schema; invoke those directly by name, or through federation_act from list-gated clients. The guide's Prompts section covers the governed prompt library — there's a prompt for that: search it with introspection_prompt_library, run one with federation_prompt_run. Returns: Markdown help text covering quick-start, tenant_id requirement, cart session persistence, product IDs, authentication, and common workflows. Example: call federation_help with arguments {}.

    Annotations the server declares

    • title: Federation Usage Guide
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_journal_readReplay your agent journal oldest→newest (CO 230-001).No findings

    Why it is in this group

    • The name "federation_journal_read" says "read": a word for reading.
    Description, as the server wrote it
    Replay your agent journal oldest→newest (CO 230-001). Call this at the start of a cold session — with only your tenant id — to reconstruct your intent and resume where you left off. On a tenant whose workflow runs journal themselves, add exclude_tags ["act-record"] to replay the reasoning without the run trail; the reply's excluded says how many entries that left out. Pairs with federation_journal_append. Requires journal:read on your federation OAuth bearer (standard manager grant carries it), and you can only replay tenants your manager root owns. Returns: The journal entries oldest→newest (up to limit). Example: call federation_journal_read with arguments {"tenant_id":"<tenant_id>"}.

    Annotations the server declares

    • title: Replay Agent Journal
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_key_statusRead a manager root's bound public key — the public machine-legible fact (CO 314): public_key, alg, kid, bound_at.No findings

    Why it is in this group

    • The name "federation_key_status" says "status": a word for reading.
    Description, as the server wrote it
    Read a manager root's bound public key — the public machine-legible fact (CO 314): public_key, alg, kid, bound_at. A counterparty verifies this root's signatures against it. Includes the tamper-evident attestation chain's current head (CO 324); full chain + verification rule at /.well-known/key-attestation-chain. Omit manager_id to read your own. Never returns any challenge or secret. Also returns manager_handle — your handle, the first half of every business you open (<handle>-<business>). Returns: { public_key, alg, kid, bound_at } + the attestation chain head. Never a challenge or secret. Example: call federation_key_status with arguments {}.

    Annotations the server declares

    • title: Read Key Binding
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_list_tenantsList all available tenants in the federation.No findings

    Why it is in this group

    • The name "federation_list_tenants" says "list": a word for reading.
    Description, as the server wrote it
    List all available tenants in the federation. Returns tenant IDs, names, and status. Use this to discover which tenants you can interact with. Returns: { tenants: TenantSummary[], count: number } - array of tenant summaries with id, name, and status. Example: call federation_list_tenants with arguments {}.

    Annotations the server declares

    • title: List Federation Tenants
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_offerRead the ComOS network's vendor offer — public and read-only, no token needed.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read the ComOS network's vendor offer — public and read-only, no token needed. Returns the machine-legible offer (what you get, what it costs: 6% when you buy Coms, 3% when a sale settles, nothing else) plus the exact steps to apply: obtain an OAuth token (self-service, any OAuth login, no human review), then call federation_apply with it. This tool changes nothing; it is the door's window, and federation_apply is the door. Returns: { offer: <vendor manifest — the same document as /.well-known/comos-vendor.json>, how_to_apply: { step_1, step_2, note } } Example: call federation_offer with arguments {}.

    Annotations the server declares

    • title: Read the Vendor Offer (The Door's Window)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_tenant_infoGet detailed information about a specific tenant, including metadata, description, and configuration.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get detailed information about a specific tenant, including metadata, description, and configuration. Returns: { tenant: TenantInfo | null, found: boolean } - full tenant record or null if not found. Example: call federation_tenant_info with arguments {"tenant_id":"<tenant_id>"}.

    Annotations the server declares

    • title: Get Tenant Info
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • federation_viewShow one view of a tenant in the ComOS panel, filled from typed reads.No findings

    Why it is in this group

    • The name "federation_view" says "view": a word for reading.
    Description, as the server wrote it
    Show one view of a tenant in the ComOS panel, filled from typed reads. Always pass tenant_id. Retail: product_grid (opt. category, in_stock_only), product_detail (product_id), order_status, receipt (order_id; owner). Bookings: slot_picker (opt. provider_id, from, to), provider_card (provider_id), booking_card (booking_id; owner). Digital: license_grid (opt. category), license_detail (license_id), entitlements (owner; opt. license_id, holder_ref). Services: capability_grid (opt. category), capability_detail (capability_id), job_status (job_id; owner). Rentals: asset_grid (opt. category, from, to), asset_detail (asset_id), rental_status (rental_id; owner). Buy, Book and each platform's act open ComOS pages; Details opens an item in place. Optional style: CSS on the drawn .c-<role> classes (see its parameter); the result names any selector that matched nothing. Public. Returns: { view, tenant_id, store_name, read_at, origin, ...payload } — also as structuredContent; the payload per view: products[] (product_grid), product (product_detail), providers[] + window + timezone (slot_picker), provider + next_slots[] + timezone (provider_card), booking (booking_card), order (order_status), order + lines[] + totals (receipt), capabilities[] (capability_grid), capability (capability_detail), job (job_status), assets[] + span? (asset_grid), asset (asset_detail), rental (rental_status). Refusals are isError: missing_argument, invalid_argument, not_a_storefront, storefront_disabled, not_a_booking_page, booking_page_disabled, calendar_unavailable, not_a_services_tenant, services_unavailable, not_a_rentals_tenant, rentals_unavailable, not_found, scope_required, or the inner tool's own refusal — each carrying `view`. Example: call federation_view with arguments {"view":"<view>","tenant_id":"<tenant_id>"}.

    Annotations the server declares

    • title: Show One View of a Tenant
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • how_to_aboutRead How to use ComOS — the operational walkthrough's knowledge (in the comos-federation voice).No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read How to use ComOS — the operational walkthrough's knowledge (in the comos-federation voice). Read-only — returns composed knowledge, performs no transaction. Returns: The composed walkthrough knowledge as markdown. Zero-arg; identity-free. Example: call how_to_about with arguments {}.

    Annotations the server declares

    • title: How to Use ComOS (Knowledge)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • introspection_prompt_libraryBrowse ComOS's own prompt library (CO 527) — the governed corpus of prompts the federation runs on — filtered, sorted and optionally grouped.No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse ComOS's own prompt library (CO 527) — the governed corpus of prompts the federation runs on — filtered, sorted and optionally grouped. Returns {ok:true, groups:[{key,label,count,entries}], total, applied}. Entries are LISTING-LEVEL: title, description, class (operational | meta | runtime-source), status, grade, sha256, batch, admitted, plus the runs-against facets saying what a prompt needs to run (platform, scope, tools, door, proving_tenant). Prompt BODIES are never returned. Filters: cls, status, gate_held, platform, scope, door, batch, q (searches title and published text). Sorts: admitted_desc (default) | admitted_asc | title | class | status. Group by: class | status | platform | batch. Honesty rule (CO 530): `proven` only after a journaled live run, `untested` until then; a runtime-source prompt carries no run status at all — it is gate-held, pinned to live agent source by the CO-527-INV-1 drift gate. `manifest` (CO 614): tools, scopes and effect, derived. Read-only. Returns: Grouped, listing-level prompt entries with their facets and the vocabulary applied. Example: call introspection_prompt_library with arguments {}.

    Annotations the server declares

    • idempotentHint: true
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 2.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http federation https://mcp.comos-gateway.com/mcp/sse

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__federation__federation_list_tenants",
      "mcp__federation__federation_tenant_info",
      "mcp__federation__federation_journal_read",
      "mcp__federation__federation_key_status",
      "mcp__federation__federation_offer",
      "mcp__federation__federation_help",
      "mcp__federation__legal_get",
      "mcp__federation__federation_catalog_platforms",
      "mcp__federation__federation_catalog_agents",
      "mcp__federation__federation_view",
      "mcp__federation__federation_search",
      "mcp__federation__about_us_about",
      "mcp__federation__how_to_about",
      "mcp__federation__introspection_prompt_library"
    ],
    "ask": [
      "mcp__federation__federation_attest",
      "mcp__federation__federation_prompt_run",
      "mcp__federation__federation_why",
      "mcp__federation__federation_governance",
      "mcp__federation__federation_pricesheet",
      "mcp__federation__federation_arena",
      "mcp__federation__federation_latency",
      "mcp__federation__federation_solvency",
      "mcp__federation__federation_enter_tenant"
    ],
    "deny": [
      "mcp__federation__federation_act"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as federation. Review it before you use it.