vera.ink

Check documents against rules taken from the law itself. Every finding cites the exact clause.

Should I use this

Quality & Safety

A
Description quality
94%
Schema completeness
90%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,622Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (1.27% 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": {
    "vera": {
      "url": "https://vera-mcp-production.up.railway.app/mcp"
    }
  }
}

Remote endpoints

https://vera-mcp-production.up.railway.app/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢query_pack(pack_id, question)

Retrieve the best matching locked rules and exact evidence from a query-ready Vera pack. This costs credits. Preserve each verified quote and citation, distinguish them from your inference, and treat coverage=none as no answer.

Input Schema

{
  "type": "object",
  "properties": {
    "pack_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Vera pack ID (from list_packs)"
    },
    "question": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2000,
      "description": "The question to ask"
    }
  },
  "required": [
    "pack_id",
    "question"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_document(pack_id, document_text, mode, idempotency_key)

Start a paid, asynchronous check against a query-ready pack. Use one unique idempotency_key and reuse it only for an exact retry. Omit mode to use the pack's mode. Poll get_verification_status until terminal=true.

Input Schema

{
  "type": "object",
  "properties": {
    "pack_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Vera pack ID to verify against"
    },
    "document_text": {
      "type": "string",
      "maxLength": 500000,
      "description": "The full document text; whitespace does not count toward the minimum"
    },
    "mode": {
      "type": "string",
      "enum": [
        "legal",
        "procurement",
        "compliance",
        "financial",
        "hr",
        "academic",
        "custom",
        "code"
      ],
      "description": "Optional mode override; normally omit this"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9._:-]+$",
      "description": "Required retry key. Reuse only for this exact pack, document, and mode."
    }
  },
  "required": [
    "pack_id",
    "document_text",
    "idempotency_key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_verification_status(run_id)

Poll a run using poll_after_ms until terminal=true. Only call it clean when verdict=clean, coverage_complete=true, and result_consistent=true; otherwise follow next_action.

Input Schema

{
  "type": "object",
  "properties": {
    "run_id": {
      "type": "string",
      "format": "uuid",
      "description": "The run_id returned by verify_document"
    }
  },
  "required": [
    "run_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_packs

List owned and public packs. Select from available_packs and require readiness.query_ready=true. If none fits, do not guess a pack_id: propose a finite pack plan, ask the user to approve a credit ceiling, then use start_pack_build if approved.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_pack_coverage(pack_id)

Inspect readiness, source coverage and freshness before high-stakes use. Disclose incomplete or stale coverage. query_ready means usable, minimum_coverage_ready means every measured section has a rule, and fully_strengthened means every measured section is satisfied. fully_ready is legacy-compatible and is not a comprehensiveness claim.

Input Schema

{
  "type": "object",
  "properties": {
    "pack_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Vera pack ID"
    }
  },
  "required": [
    "pack_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢start_pack_build(pack_id, new_pack, max_credits, max_rounds, idempotency_key)

Start a paid asynchronous pack build after the user explicitly approves max_credits. Supply exactly one of pack_id (an owned AI-buildable pack) or new_pack. The response returns immediately with job_id; poll get_pack_build_status only while active=true. max_credits is a hard ceiling, not a promised final charge. Reuse idempotency_key only for an exact retry.

Input Schema

{
  "type": "object",
  "properties": {
    "pack_id": {
      "type": "string",
      "format": "uuid",
      "description": "An existing owned AI-buildable pack; mutually exclusive with new_pack"
    },
    "new_pack": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "intention": {
          "type": "string",
          "minLength": 10,
          "maxLength": 4000,
          "description": "The exact finite purpose and coverage the pack must provide"
        },
        "mode": {
          "type": "string",
          "enum": [
            "legal",
            "procurement",
            "compliance",
            "financial",
            "hr",
            "academic",
            "custom",
            "code"
          ]
        },
        "jurisdiction": {
          "type": "string",
          "maxLength": 120
        }
      },
      "required": [
        "name",
        "intention",
        "mode"
      ],
      "additionalProperties": false,
      "description": "A new Vera pack to create; mutually exclusive with pack_id"
    },
    "max_credits": {
      "type": "integer",
      "minimum": 3,
      "maximum": 5000,
      "description": "Hard credit ceiling explicitly approved by the user for this build job"
    },
    "max_rounds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "default": 3,
      "description": "Maximum strengthening rounds; normally 3"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9._:-]+$",
      "description": "Required retry key; reuse only for this exact build request"
    }
  },
  "required": [
    "max_credits",
    "idempotency_key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_pack_build_status(job_id)

Check a durable pack-build job. Poll only while active=true. When stopped, use readiness_summary and present available_actions honestly; a usable budget pause offers use now or a separately approved finite continuation. Never restart merely because the AI client's execution window ended.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "format": "uuid",
      "description": "The job_id returned by start_pack_build"
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools