@odatano/nightgate-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NIGHTGATE_TOKEN | No | Agent-grant token (ngat_...) or plain bearer token | |
| NIGHTGATE_BASE_URL | No | NIGHTGATE host app | http://localhost:4004 |
| NIGHTGATE_PASSWORD | No | Basic auth password | |
| NIGHTGATE_USERNAME | No | Basic auth username | |
| NIGHTGATE_TIMEOUT_MS | No | Per-request timeout | 30000 |
| NIGHTGATE_SERVICE_PATH | No | OData service path | /api/v1/nightgate |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| verify_attestationA | Verify against LIVE Midnight contract state that a payload hash is attested in an AttestationVault (crawler-free, no txHash needed). Optionally also checks that the anchored content root matches. Returns verified:false (not an error) when absent. |
| verify_predicateA | Verify against LIVE Midnight contract state that a ZK predicate proof (e.g. "hidden value <= threshold") was recorded true on-chain. Id-free: works for proofs NIGHTGATE never saw. threshold must be the SAME scaled integer the circuit hashed (scaling mismatch yields verified:false). Supply fieldKey for a field-bound proof, omit it for a plain one. |
| verify_predicate_attestationA | Verify a server-issued predicate attestation by its NIGHTGATE row id (UUID). Confirms the proving transaction succeeded, with a crawler-free live-state fallback. Use verify_predicate instead when you only have on-chain coordinates. |
| verify_documentA | Verify an anchored document by its NIGHTGATE document id: compares the provided sha256 against the anchored original and confirms the anchoring transaction, with a crawler-free live-state fallback when contractAddress is supplied. |
| prepare_document_proofA | Turn a structured document into everything the proof tools need: canonical JSON and its payloadHash (what anchor_document anchors), a Merkle contentRoot over an ORDERED list of up to 16 proof fields, and per-field inclusion paths ready for prove_field_predicate. Keep the field order stable across anchor and proof: it is part of the tree identity. Compute-only and synchronous, nothing is stored server-side. The returned fields carry witness material (scaled values): treat as sensitive. Store canonicalDocument at your storageRef; re-serializing with different key order will not re-hash equal. |
| attest_agent_outputA | Anchor agent-output provenance on the Midnight chain: "agent X produced output O from input I at time T". Builds the canonical v1 envelope server-side, hashes it and anchors it; the response returns the envelopeJson any third party can re-hash and check via verify_attestation, without trusting this server. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. |
| anchor_documentA | Anchor a document content hash on the Midnight chain via the AttestationVault attest circuit. Commits only the sha256 + public metadata; you are responsible for storing the actual bytes at storageRef. Attestation is first-come-first-served per hash. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. Also returns documentId for verify_document. |
| prove_field_predicateA | Issue a zero-knowledge field-bound predicate proof: prove that a hidden field of an anchored document satisfies "value <= threshold" or "value >= threshold" WITHOUT revealing the value. Needs the depth-4 Merkle inclusion path of the field in the anchored content root. value/threshold are scaled integers (decimal strings); the value is a witness and never persisted. If contentRoot is supplied it is anchored first. A false predicate fails at local proving time, nothing is submitted. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. |
| prove_field_predicates_batchA | Batch variant of prove_field_predicate: prove up to 8 field-bound predicates on ONE anchored document in ONE transaction (7 if contentRoot is supplied, since the anchor occupies one call slot). Duplicate claim tuples are dropped server-side. One false predicate aborts the whole batch at local proving time with zero on-chain effect. After submission the chain can finalize a PARTIAL_SUCCESS subset; verify per claim via verify_predicate_attestation instead of assuming all-or-nothing. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. |
| grant_disclosureA | Grant a disclosure level for an attestation to a grantee identity, on-chain via the AttestationVault. Attester-only: the transaction is rejected in-circuit unless the session wallet is the original attester. level: 0=public, 1=legitimate-interest, 2=authority. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. |
| revoke_disclosureA | Revoke a previously granted disclosure on-chain (removes the grantee entry). Attester-only, enforced in-circuit. Async: returns { jobId, status } immediately; poll get_job_status until succeeded or failed. |
| get_job_statusA | Poll the status of an async NIGHTGATE job (all submit actions return a jobId). status: pending | running | external_execution | submitted | reconciliation_required | succeeded | failed. Poll every few seconds until succeeded or failed; result carries the job outcome JSON, chainStatus tracks on-chain finalization independently. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes, but the four verify-* tools (verify_predicate_attestation, verify_attestation, verify_predicate, verify_document) all perform verification with different inputs and contexts, which could cause some confusion. However, the detailed descriptions help differentiate them, so it's mostly clear.
All tool names follow a consistent verb_noun pattern using lowercase and underscores, such as verify_predicate, anchor_document, grant_disclosure, and get_job_status. This makes the naming predictable and easy to understand.
With 12 tools, the server provides a well-scoped set of operations for its domain: anchoring, proving, verifying, and disclosure management. The number is appropriate and each tool serves a distinct purpose without redundancy.
The tool set covers the core lifecycle: anchoring documents and agent outputs, proving predicates (single and batch), verifying various attestations, and managing disclosures. Minor gaps exist, such as no dedicated tool for proving plain (non-field-bound) predicates and no listing/querying of all attestations, but these are workaroundable.