# io.github.Syronius/cryptair-mcp-server (npm · @cryptair/mcp-server)

Tamper-evident attestation tools for AI agents — on-chain receipts on Hedera Hashgraph mainnet.

- Trust score: 68/100 (medium)
- Change this week: +26
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@cryptair/mcp-server`: 68/100 (this document), [markdown](https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server.md), [page](https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@cryptair/mcp-server`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 86 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1536 tokens (~256/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add syronius-cryptair-mcp-server -- npx -y @cryptair/mcp-server
```

### Codex

```bash
codex mcp add syronius-cryptair-mcp-server -- npx -y @cryptair/mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "syronius-cryptair-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@cryptair/mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add syronius-cryptair-mcp-server --command npx --arg -y --arg @cryptair/mcp-server
```

### Hermes

```yaml
mcp_servers:
  syronius-cryptair-mcp-server:
    command: "npx"
    args: ["-y", "@cryptair/mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "syronius-cryptair-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cryptair/mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 67, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Licence: MIT

### 2026-08-01 (score 22, −11)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-31 (score 33, −9)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 42, +18)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −18)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (6)

### `certify_document` (~248 tokens)

Create a tamper-evident, on-chain proof that a document exists in this exact state right now.

USE WHEN you want to:
  \- Lock in a contract, proposal, or agreement at a specific moment
  \- Prove a deliverable existed before a deadline
  \- Anchor a code commit, report, or any digital artifact to an immutable timestamp
  \- Generate a receipt that anyone can verify (no Cryptair account required to verify)

This is a SINGLE-PARTY operation. It writes a SHA-256 hash of the file to Hedera Hashgraph.
For two-party agreements where both sides must confirm a matching document, use initiate_attestation instead.

Returns: SHA-256 hash, Hedera transaction ID, consensus timestamp, and a HashScan explorer URL anyone can open to independently verify the on-chain record.

Requires a Cryptair API key. If none is configured, call register_agent first.

Input parameters:

- `file_path` (string, required): Absolute path to the file to certify. SHA-256 hashed locally before sending.
- `notify_email` (string): Optional. If set, Cryptair emails a PDF certificate to this address. Useful when a human counterparty needs the receipt.

### `verify_document` (~172 tokens)

Check whether a document has a prior Cryptair attestation on Hedera Hashgraph.

USE WHEN you want to:
  \- Confirm a counterparty's claim that a document was certified
  \- Detect whether a file has been altered since it was attested
  \- Look up the original Hedera transaction for a given file

This is PUBLIC — no API key required. Anyone can verify any document.

Returns: { certified: bool, hash, attestations: [{ transactionId, consensusTimestamp }] }
If the file matches an existing attestation exactly, certified=true and the original transaction is returned.
If not, certified=false (either the file was never attested, or it has been modified since).

Input parameters:

- `file_path` (string, required): Absolute path to the file to verify. SHA-256 hashed locally before sending.

### `initiate_attestation` (~358 tokens)

Start a TWO-PARTY attestation. Use when you need both sides of an agreement to confirm a matching document.

USE WHEN you want to:
  \- Get a counterparty (another agent or a human) to formally acknowledge receipt of a contract, proposal, or deliverable
  \- Lock in a mutual agreement that's only valid if both sides see the same content
  \- Create an audit-grade record that two parties agreed on this exact document

How it works:
  1\. You initiate with a document hash. Cryptair returns a shareable URL.
  2\. You send the URL to your counterparty (out of band — email, Slack, etc.).
  3\. They open it, submit the document they have, and Cryptair compares hashes.
  4\. If hashes match: certified on Hedera. If not: tamper recorded on Hedera.
  5\. The counterparty does NOT need a Cryptair account. They can complete for free.

Returns: session_id, attest_url (give this to the counterparty), expires_at (7 days).
Poll with check_attestation to see when the counterparty completes.

Requires a Cryptair API key. Call register_agent first if you don't have one.

Input parameters:

- `counterparty_name` (string, required): Human-readable name of the counterparty (e.g., 'Acme Corp', 'jane@example.com'). Shown on the certificate. Max 256 chars.
- `document_hash` (string, required): 64-character lowercase hex SHA-256 of the document. Hash locally first; do not send the file content.
- `metadata` (object): Optional. Arbitrary JSON object stored with the session (e.g., contract type, reference IDs).

### `submit_attestation` (~366 tokens)

Complete a two-party attestation as the COUNTERPARTY. You received an attest_url from someone who initiated.

USE WHEN you want to:
  \- Confirm that you have the same document an initiator claimed to send you
  \- Acknowledge an agreement, proposal, or deliverable on-chain
  \- Detect tampering — if the document you received differs from what was initiated, this records a tamper event

You do NOT need a Cryptair API key to submit. The attest_url contains a one-time token that authorizes you.

If you supply an email, Cryptair will auto-provision a Cryptair account for you (no signup form, no verification step). The MCP server will silently store the API key locally so you can initiate your own attestations later.

Returns: { status: 'certified' | 'tampered', hedera_transaction_id, certificate_url }
\- 'certified' = hashes matched, agreement recorded on Hedera
\- 'tampered' = hashes did not match, tamper event recorded on Hedera

Input parameters:

- `attest_url` (string, required): The full URL the initiator sent you (e.g. https://www.cryptair.io/attest/<id>?token=<jwt>).
- `document_hash` (string): 64-character hex SHA-256 of the document, if you already have it. Provide this OR file_path.
- `email` (string): Optional. If supplied and you don't have a Cryptair account yet, one will be auto-provisioned for you and stored locally. Recommended for agents that may want to initiate their own attestations later.
- `file_path` (string): Absolute path to the file you received. Will be SHA-256 hashed locally. Provide this OR document_hash.

### `check_attestation` (~119 tokens)

Look up the current status of an attestation session.

USE WHEN you want to:
  \- Poll whether the counterparty has completed an attestation you initiated
  \- Retrieve the certificate URL after certification
  \- Check whether a session has expired or been tampered

Returns: { status: 'pending' | 'certified' | 'tampered', hedera_tx, certificate_url, expires_at, ... }

This endpoint is public — no API key required.

Input parameters:

- `session_id` (string, required): The session ID returned by initiate_attestation.

### `register_agent` (~273 tokens)

Create a Cryptair account for this agent and store the API key locally so future tool calls are authenticated.

USE WHEN:
  \- You're about to call certify_document or initiate_attestation and there is no API key configured
  \- The user installed the Cryptair MCP server and wants to start using it without manually creating an account

Self-service: no email verification, no magic link, no human-in-the-loop. The API key is generated immediately and persisted to ~/.cryptair/credentials.json. The key is NOT returned to you — future tool calls will use it transparently.

Returns: { registered: true, email, account_status }
If an account already exists for this email, the existing key is reused (no duplicate accounts).

Input parameters:

- `company` (string): Optional. Company or organization name.
- `email` (string, required): Email for the account. Used as the agent identity. Welcome notifications and certificates may be sent here.
- `framework` (string): Agent framework being used. Default: custom (suitable for MCP-based agents).
- `planned_use` (string): Primary use case. Default: exploring (good choice if unsure or for first-time setup).
- `what_building` (string): Free-text description of what this agent is building. Helps Cryptair understand usage patterns. Default: 'MCP integration'.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 67
- 2026-08-01: 22
- 2026-07-31: 33
- 2026-07-30: 42
- 2026-07-28: 24
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/@cryptair/mcp-server
- Socket report: https://socket.dev/npm/package/@cryptair/mcp-server
- Repository: https://github.com/Syronius/cryptair-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/syronius-cryptair-mcp-server/cryptair-mcp-server
