# Plumbline MCP tools

<!-- Generated by scripts/docs.mjs from the registered server. Do not edit. Version 0.1.0. -->

6 tools. This server prepares a human decision. It does not make one, and it cannot be configured to.

| Tool | Title |
| --- | --- |
| `explain_verification_run` | Explain a run in plain language |
| `get_evidence_requirements` | Get evidence requirements |
| `get_review_artifact` | Get the review artifact for a run |
| `get_verification_capabilities` | Get verification capabilities |
| `get_verification_run` | Get the control trace for a run |
| `verify_funding_package` | Verify a funding package |

## explain_verification_run

A non-authoritative, plain-language narrative of a run's control trace for an analyst or an executive. Presentation only: a status table copied verbatim from the engine heads every explanation, the narrative is checked against the trace's own vocabulary, and submitter-supplied text is never shown to the model. The trace from get_verification_run remains the record.

Example arguments:

```json
{"run_id":"run_…","audience":"analyst"}
```

Input schema:

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "audience": {
      "description": "analyst (default): control by control. executive: outcome and reason, short.",
      "type": "string"
    },
    "run_id": {
      "description": "A run_id returned by verify_funding_package.",
      "type": "string"
    }
  },
  "required": [
    "run_id"
  ],
  "type": "object"
}
```

## get_evidence_requirements

The structured evidence a funding package must carry, the cardinality limits enforced by the endpoint, which controls become unreachable when an input is missing, and what the endpoint refuses outright.

Example arguments:

```json
{}
```

Input schema:

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

## get_review_artifact

The artifact the engine produced: a Funding Upload Review Summary, an Incomplete Documentation Notice, or a withheld-report refusal with its deficiencies. Never synthesizes an artifact the engine declined to issue.

Example arguments:

```json
{"run_id":"run_…"}
```

Input schema:

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

## get_verification_capabilities

What this Plumbline instance can and cannot do right now, read from the live health endpoint. Capabilities are release gates, so a capability reported as unavailable is genuinely unavailable. Also returns the authority boundary and the synthetic package catalog.

Example arguments:

```json
{}
```

Input schema:

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

## get_verification_run

The full IVP-001 control trace: every control in mandatory order with its execution status (performed, not_performed, not_reached), the reason it did not run where applicable, coverage, and findings. A control that did not run is reported as one.

Example arguments:

```json
{"run_id":"run_…"}
```

Input schema:

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

## verify_funding_package

Run IVP-001 against a funding package. Supply exactly one of: package_id for a synthetic demo package; evidence for a structured funding_request_evidence_v1 object; or documents (PDF, PNG, JPEG, text) and/or raw_text, which a language model transcribes into evidence first. Executes the real deterministic engine. Returns a run_id plus the engine's own verdict, and for documents the extracted evidence labelled untrusted with a confidence and source per field. This tool does not decide anything and cannot approve funding.

Example arguments:

```json
{"package_id":"clean"}
```

Input schema:

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "approved_banking": {
      "description": "The funder's approved banking on file, with documents only. Never taken from the documents themselves.",
      "items": {
        "additionalProperties": {},
        "type": "object"
      },
      "type": "array"
    },
    "documents": {
      "description": "Up to 10 documents, 25 MB and 100 pages in total. Not stored.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "description": "Base64 file bytes.",
            "type": "string"
          },
          "media_type": {
            "description": "application/pdf, image/png, image/jpeg, or text/plain.",
            "type": "string"
          },
          "name": {
            "description": "Distinct name; extracted values cite it.",
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "role": {
            "description": "Declared role. A declared supporting_invoice that yields nothing is recorded unreadable.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "media_type",
          "data"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "evidence": {
      "additionalProperties": {},
      "description": "A funding_request_evidence_v1 object. Must not contain a documents key; pass documents in the documents argument instead.",
      "type": "object"
    },
    "package_id": {
      "description": "One of the synthetic packages: clean, missing_document, material_exception, prompt_injection",
      "type": "string"
    },
    "raw_text": {
      "description": "Pasted document text, transcribed the same way as documents.",
      "maxLength": 200000,
      "type": "string"
    }
  },
  "type": "object"
}
```

## Never exposed

- approve or decline funding
- release, schedule, or transmit a payment
- issue a waiver or exception approval
- create or alter banking instructions
- override a finding, a severity, or a control status
- declare a package free of fraud
- record a human disposition or attestation

## Limits

Engine endpoint:

- `max_body_bytes`: 262144
- `max_response_bytes`: 1048576
- `max_string_bytes`: 4096
- `max_json_depth`: 32
- `max_json_nodes`: 10000
- `max_lines`: 100
- `max_supporting_invoices`: 75
- `max_approved_banking_records`: 75

Documents submitted for extraction:

- `max_documents`: 10
- `max_total_bytes`: 26214400
- `max_pages`: 100
- `media_types`: application/pdf, image/png, image/jpeg, text/plain
