ruthven

Read-only artwork provenance: Origin Passports, evidence states, Merkle proofs checkable on Ethereum

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
86%
Naming quality
80%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'ruthven_describe' description contains placeholder textin ruthven_describe
  • INFOTool description contains placeholder or incomplete textin ruthven_describe

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,513Tokens (tool definitions)
~971 BTypical response size
Moderate attention impact (1.18% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "ruthven": {
      "url": "https://ruthven.ai/api/ruthven/mcp"
    }
  }
}

Remote endpoints

https://ruthven.ai/api/ruthven/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ruthven_get_asset(asset_id, include_evidence)

The universal RUTHVEN asset record: identity, tokenization, provenance, source works, components, construction sequence, hashes, documents, rights, verified / contextual / inferred facts, unknowns, and counts. Claims carry evidence ids; pass include_evidence=true for the full evidence records as well (large).

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "include_evidence": {
      "type": "boolean",
      "description": "Include every evidence record and the evidence graph. Default false."
    }
  },
  "required": [
    "asset_id"
  ],
  "additionalProperties": false
}
🟢ruthven_list_evidence(asset_id, status, type, kind, q, ...)

The evidence records behind an asset, each with a stable evidence_id, its source (document, locator, ipfs uri, gateway url, ledger claim id), a SHA-256, a verification state and freshness timestamps. Filter by status (VERIFIED, CONTEXT, INFERRED), type, kind, or a text query.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "status": {
      "type": "string",
      "enum": [
        "VERIFIED",
        "CONTEXT",
        "INFERRED"
      ]
    },
    "type": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "q": {
      "type": "string",
      "description": "Text to look for in the label or statement."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "asset_id"
  ],
  "additionalProperties": false
}
🟢ruthven_get_evidence(asset_id, evidence_id)

Retrieve the source record behind a stable evidence id (EVID-…) or an unknown id (UNK-…): where it was read from, its hash, its state, and how fresh it is.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "evidence_id": {
      "type": "string"
    }
  },
  "required": [
    "asset_id",
    "evidence_id"
  ],
  "additionalProperties": false
}
🟢ruthven_get_provenance(asset_id)

Provenance and lineage: the timeline, source works, generated elements, components, the construction sequence, relationships, chain identity, tokenization, and the evidence graph (cut_from, placed_as, pinned_as, pictured_by, hash_of).

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    }
  },
  "required": [
    "asset_id"
  ],
  "additionalProperties": false
}
🟢ruthven_verify_claim(asset_id, evidence_ids)

Given the evidence ids a claim rests on, return the state the claim earns (the weakest among them), each record's hash and location, and how to check it independently of RUTHVEN. Deterministic; no model is involved.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "evidence_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 50
    }
  },
  "required": [
    "asset_id",
    "evidence_ids"
  ],
  "additionalProperties": false
}
🟢ruthven_get_proof(asset_id, evidence_ids, paths)

A Merkle proof that evidence records are part of the issued Origin Passport, with the entry each rests on and the steps to check it without trusting RUTHVEN: SHA-256 over the entry, keccak256 up the proof, and the root compared with the one in the published Passport. It proves that the record contains the entry; it does not make a statement true. With neither evidence_ids nor paths, returns the paths that can be proved. Deterministic; no model is involved.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "evidence_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "description": "Stable evidence ids (EVID-…)."
    },
    "paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "description": "Entry paths in the Passport, e.g. \"identity.name\" or \"module.collection.copyrightOwner\"."
    }
  },
  "required": [
    "asset_id"
  ],
  "additionalProperties": false
}
🟢ruthven_ask(asset_id, question)

Ask a question about one asset. Returns structured JSON only: an answer, claims (each with a verification state and the evidence ids it rests on), unknowns, the full cited evidence records, and follow-up questions. Never a valuation; never a recommendation to act.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset: \"PT-0001\", a RUTHVEN ID such as \"RUTHVEN-PT-0000001\", or a work number such as \"1\"."
    },
    "question": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "asset_id",
    "question"
  ],
  "additionalProperties": false
}
🟢ruthven_describe

What RUTHVEN is and what an agent may do with it: the verification states, the permission model (READ and ANALYSE only), the asset types (live and placeholder), and the JSON API endpoints.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools