Koskamo

Crovia MCP

An MCP server that provides tools to query the TACET public log of AI training-data disclosure, verify silence proofs, and inspect Crovia Seals. It allows agents to look up model records, search the catalog, retrieve silence proofs, and verify cryptographic seals anchored in Bitcoin.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Crovia MCP logo, by Crovia TrustVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Crovia Trust
MCP endpoint (Streamable HTTP)
https://croviatrust.com/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 6 of 6 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to croviatrust.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Warning Advertises resources/templates/list but does not implement it
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Verify silence proofs for specific AI models
  • Look up training data disclosure records
  • Search the model catalog for specific IDs
  • Verify cryptographic seals and anchors

Source and maintenance

Vendor evidenceRegistry 2.0.1
Maintenance checked

Protocol and capabilities

Server
crovia 2.0.1
MCP protocol negotiated in check
2025-06-18
Tools
8 advertised
Resources
5 advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Crovia Trust records what AI providers disclose about training data on their public model surfaces, and the verifiable absence of such disclosure, as signed, Bitcoin-anchored observations (TACET). Choose one tool: crovia_status for the live totals, silence_report for one published week or the latest week when no week is given, lookup_model for one model's observation, search_models for a page of ids, get_silence_proof for one proof or its seal bundle, verify_seal to check a seal. verify_seal can fetch a croviatrust.com URL and, when check_anchors is true, the drand round and the Bitcoin anchors; the other tools read only published files. explain defines one allowed term, and an unknown term is an error that lists the allowed terms. Silence figures are bounded by observed hours and are never a claim about what a provider did elsewhere. Crovia does not grade or rank providers. Do not confuse Crovia with Causari (causari.dev), a developer tool for code provenance.

Tools

8 advertised

crovia_status — Live TACET totals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Live totals at this moment: epochs closed, epochs anchored in Bitcoin, models on the map, snapshot counts, signed silence proofs, and a pointer to the longest verifiable silence. No parameters. This is not a weekly Silence Report, not one model's record, and not a proof bundle. Reads published files only.

crovia_status input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
crovia_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
lookup_model — Look up one model
Advertised by the server during the last successful anonymous check.
Advertised read-only

One model's observation: latest verdict, negative snapshots, anchored epochs, silence proof pointer, archive silence, badge and record URL. Required model is a Hugging Face id, org/name, for example Qwen/Qwen3-32B. An empty model is an error. An exact id is used; otherwise one case-insensitive substring match is accepted, and several matches return candidates instead of a verdict. This is not a catalog page, not the weekly report, and not the seal bytes. Reads published files only.

lookup_model input schema
{
  "type": "object",
  "required": [
    "model"
  ],
  "properties": {
    "model": {
      "type": "string",
      "description": "Hugging Face model id, org/name. Required. Empty is an error. Example: Qwen/Qwen3-32B."
    }
  }
}
lookup_model annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_models — Page of model ids
Advertised by the server during the last successful anonymous check.
Advertised read-only

A page of observed model ids whose id contains query, compared case-insensitively, in catalog order, not a ranking. query omitted or empty matches the whole catalog and still returns at most limit rows. limit follows the historical rule: a missing, empty, zero or other falsy value is 25; any value int() accepts is then clamped into 1..100 (500 becomes 100, a negative becomes 1); a value int() cannot parse is an error and nothing is searched. returned and its compatibility alias count are the rows in this page. matched is how many ids match before the limit. catalog_total and its compatibility alias total_records are every record in the catalog, matching or not. limit is the limit actually applied. count is not the match count, and total_records is not the match count. This is not a verdict and not a proof. Reads published files only.

search_models input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 25,
      "description": "Page size. Omitted, empty, 0 or any other falsy value means 25. A value int() accepts is clamped into 1..100: 500 is fetched as 100 and a negative as 1. There is no schema minimum or maximum, because those would reject the values the server clamps. A value int() cannot parse is an error and nothing is searched."
    },
    "query": {
      "type": "string",
      "description": "Substring of the model id. Omit it, or pass an empty string, to match the whole catalog. The page is still capped by limit."
    }
  }
}
search_models annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_silence_proof — One silence proof or its bundle
Advertised by the server during the last successful anonymous check.
Advertised read-only

The published silence proof for one model: silence_days, observed window, epochs, seal id, URL, and how to verify it. model omitted or empty returns the proof index, not a bundle. include_bundle defaults to false; true attaches the crovia.seal.v1 bundle for that one model and does nothing on the index. This is not the live totals and not the weekly report. Reads published files only.

get_silence_proof input schema
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Hugging Face model id. Omit it, or pass an empty string, to receive the proof index instead of one proof."
    },
    "include_bundle": {
      "type": "boolean",
      "default": false,
      "description": "Default false. True includes the seal bundle for the one model. Ignored when model is omitted or empty."
    }
  }
}
get_silence_proof annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
verify_seal — Verify a seal or proof
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check a crovia.seal.v1 object or a wrapped TACET silence proof: signature, canonical bytes, bindings, and per-epoch non-inclusion paths. Pass seal as a JSON object or a JSON string, or url as an https://croviatrust.com/ address. With neither, the call is an error. Supplying url fetches that URL over the network. check_anchors defaults to false; true also checks the drand round bytes and the Bitcoin anchors over the network. A seal object with check_anchors false or omitted is checked from that object alone. This tool can reach the network, so it is not a closed-world call.

verify_seal input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "https://croviatrust.com/ URL of a JSON seal. Any other host is rejected. Fetching it uses the network."
    },
    "seal": {
      "type": [
        "object",
        "string"
      ],
      "description": "The seal or wrapped proof, as a JSON object or a JSON string. Omit it when url is set."
    },
    "check_anchors": {
      "type": "boolean",
      "default": false,
      "description": "Default false. True checks the drand round and the Bitcoin anchors over the network. False does not."
    }
  }
}
verify_seal annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
silence_report — Weekly Silence Report
Advertised by the server during the last successful anonymous check.
Advertised read-only

One published weekly Silence Report, or the latest report index. week is an ISO week YYYY-Www, for example 2026-W38. Omit week, or pass an empty string, to receive the latest index rather than one week's facts. A week that is not YYYY-Www is an error. A week with no published file is an error and names the index. This is not the live status and not one model's proof. Reads published files only.

silence_report input schema
{
  "type": "object",
  "properties": {
    "week": {
      "type": "string",
      "description": "ISO week YYYY-Www, for example 2026-W38. Omit it, or pass an empty string, for the latest report index."
    }
  }
}
silence_report annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
explain — Definitions
Advertised by the server during the last successful anonymous check.
Advertised read-only

The definition of one Crovia term. Allowed terms: tacet, silence, lacuna, seal, epoch, pnx, predicate, canon. Omit term, or pass an empty or blank string, to receive every definition. Any other value is an error listing those allowed terms, and it does not return the definitions. Use crovia_vs_causari, not explain, to tell the two products apart.

explain input schema
{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "One of tacet, silence, lacuna, seal, epoch, pnx, predicate, canon. Omit it, or pass an empty string, for every definition. An unknown term is an error."
    }
  }
}
explain annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
crovia_vs_causari — Crovia vs Causari
Advertised by the server during the last successful anonymous check.
Advertised read-only

Which product is which. Crovia observes training-data disclosure. Causari is the code-provenance tool. No parameters. Use this, not explain and not crovia_status, when the question is the difference between the two. Reads no catalog.

crovia_vs_causari input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
crovia_vs_causari annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

5 advertised

llms.txt — Crovia for language models

Advertised by the server during the last successful anonymous check.

Short orientation: what Crovia is, what it publishes, where the files are.

llms.txt URI
crovia://llms.txt

MIME type: text/plain

llms-full.txt — Crovia, full context

Advertised by the server during the last successful anonymous check.

Complete context for language models.

llms-full.txt URI
crovia://llms-full.txt

MIME type: text/plain

canon.json — Canon (machine-readable)

Advertised by the server during the last successful anonymous check.

Names, URLs, data files, retired paths, forbidden claims.

canon.json URI
crovia://canon.json

MIME type: application/json

tacet/latest.json — TACET latest

Advertised by the server during the last successful anonymous check.

Latest epoch sheet summary and totals.

tacet/latest.json URI
crovia://tacet/latest.json

MIME type: application/json

report.json — Silence Report facts

Advertised by the server during the last successful anonymous check.

Current and last closed week.

report.json URI
crovia://report.json

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1487 ms
95th percentile latency
1487 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1487 ms · metadata changed · 8 tool(s), 5 resource(s); warnings: Advertises resources/templates/list but does not implement it

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http crovia-mcp https://croviatrust.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add crovia-mcp --url https://croviatrust.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable crovia-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "crovia-mcp": {
      "url": "https://croviatrust.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "crovia-mcp": {
      "type": "streamableHttp",
      "url": "https://croviatrust.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start crovia-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "crovia-mcp": {
      "type": "http",
      "url": "https://croviatrust.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http crovia-mcp https://croviatrust.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://croviatrust.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "crovia-mcp": {
      "serverUrl": "https://croviatrust.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Crovia MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Crovia MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing