loopgrid-mcp
This server is an MCP bridge that lets an AI host record, retrieve, and verify signed, tamper-evident decision evidence in LoopGrid without executing external business actions.
Record decisions (
loopgrid.record_decision): Capture AI/agent decisions with proposed actions, optional model output, context, authority, policy evaluation, privacy mode, and idempotency keys.Record human reviews (
loopgrid.record_review): Log approve/reject reviews, but this tool is disabled by default and requires explicit operator configuration.Record action evidence (
loopgrid.record_action): Append evidence that an external tool/action executed; it does not call the actual business system.Record outcome evidence (
loopgrid.record_outcome): Append observed downstream outcomes for a decision after execution evidence exists.Export evidence (
loopgrid.get_evidence): Download a portable LoopGrid evidence ZIP to a local evidence directory, with raw payloads excluded by default.Verify evidence (
loopgrid.verify_evidence): Ask the connected LoopGrid service to verify the decision's signed workspace chain.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@loopgrid-mcpRecord a decision to approve the vendor payment and then verify its evidence."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LoopGrid MCP Server — v0.1 design preview
MCP access to the LoopGrid evidence plane for consequential AI and agent decisions.
loopgrid-mcp is a thin Model Context Protocol (MCP) bridge for LoopGrid.
It lets an MCP-compatible AI host record and retrieve signed, tamper-evident decision evidence through six MCP tools while keeping the MCP layer separate from the LoopGrid core runtime.
The bridge communicates with LoopGrid exclusively through its REST API. It does not import LoopGrid internals, access the LoopGrid database directly, change signing logic, alter the evidence schema, or modify the existing LoopGrid SDK contracts.
Public release
Current version:
0.1.0Available through:
PyPI:
loopgrid-mcpGitHub:
github.com/loopgridio/loopgrid-mcpMCP Registry:
io.github.loopgridio/loopgrid-mcp
The official MCP Registry entry is active and currently points to the PyPI 0.1.0 package using local stdio transport.
Related MCP server: audit-ledger-mcp
Architecture
MCP-compatible AI host/client
|
| stdio MCP
v
loopgrid-mcp
|
| LoopGrid REST API
v
LoopGrid
|
v
signed, tamper-evident
decision evidenceThe v0.1 release uses local stdio transport.
No separate hosted MCP service, Railway deployment, Render deployment, AWS service, or MCP-specific database is required.
MCP tools
The server exposes six tools:
loopgrid.record_decisionloopgrid.record_reviewloopgrid.record_actionloopgrid.record_outcomeloopgrid.get_evidenceloopgrid.verify_evidence
Important safety boundary
LoopGrid MCP is an evidence bridge, not a business-action executor.
loopgrid.record_action does not issue a Stripe refund, modify Salesforce, change ServiceNow, or invoke another external business system. It records evidence supplied by the calling integration that an external action occurred.
Likewise, loopgrid.record_outcome records an outcome reported by the calling integration.
LoopGrid can cryptographically verify the integrity of the captured record. That verification does not independently prove that every external-world claim in the record is true and does not determine legal or regulatory compliance.
Human review receives additional protection. loopgrid.record_review is registered as an MCP tool but is disabled by default. To enable it, an operator must explicitly configure both the review flag and reviewer identity. The model cannot choose the configured reviewer identity.
Raw FULL-mode disclosure payloads are also excluded from MCP evidence export by default.
Requirements
Python 3.10+
A reachable LoopGrid v0.8.x service
For local evaluation, the public LoopGrid GHCR image is sufficient
Normal use of the Python stdio server does not require Node.js.
Node.js is only needed for optional browser-based MCP Inspector tooling.
The project uses the official MCP Python SDK v2 line:
mcp>=2,<3Quick start
1. Start LoopGrid
For local evaluation using Docker:
docker run --rm `
--platform linux/amd64 `
-p 8000:8000 `
-v loopgrid_demo_data:/app/data `
ghcr.io/cybertechsoft/loopgrid:edgeLeave the LoopGrid container running.
By default, LoopGrid MCP expects the service at:
http://127.0.0.1:80002. Install LoopGrid MCP from PyPI
Create a Python virtual environment:
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pipInstall the published package:
pip install loopgrid-mcp3. Check connectivity
Run:
loopgrid-mcp-doctorExpected shape:
[OK] LoopGrid reachable: http://127.0.0.1:8000
[OK] version: 0.8.1-design-partner
[OK] evidence profile: 3.0-draft
[OK] database: ok
[OK] signer: local_ed25519
[OK] MCP workspace: defaultThe local evaluation configuration does not require a service key when LoopGrid authentication is disabled.
4. Start the MCP server
Run:
loopgrid-mcpBecause this is a stdio MCP server, running it directly normally causes it to wait for MCP messages on standard input.
In normal use, an MCP-compatible host starts this command for you.
Generic MCP client configuration
A generic client configuration looks like:
{
"mcpServers": {
"loopgrid": {
"command": "loopgrid-mcp",
"env": {
"LOOPGRID_BASE_URL": "http://127.0.0.1:8000",
"LOOPGRID_WORKSPACE": "default"
}
}
}
}On Windows, some MCP hosts may require the full path to the executable, for example:
.venv\Scripts\loopgrid-mcp.exeSee:
examples/mcp-client-config.windows.jsonfor an example.
Install from source
For development or repository validation:
git clone https://github.com/loopgridio/loopgrid-mcp.git
cd loopgrid-mcp
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"Then verify connectivity:
loopgrid-mcp-doctorDevelopment and validation
Unit and protocol tests
Run:
python -m pytest -raRepository release check
Run:
python .\scripts\release_check.pyREST smoke test
Run:
python .\scripts\smoke_test.pyThe smoke test creates a synthetic decision, records synthetic action and outcome evidence, verifies the decision, and downloads an evidence ZIP.
It does not call a real external business system.
Real stdio MCP client test
Run:
python .\scripts\mcp_stdio_test.pyThis launches loopgrid-mcp as a child stdio server using the official MCP Python client and verifies:
connect
-> discover all 6 tools
-> record decision
-> record action evidence
-> record outcome evidence
-> service-side verification
-> evidence ZIP export
-> review tool remains disabled by defaultA successful run ends with:
[PASS] Real stdio MCP client test completed successfully.This is the recommended automated release-gate test for the MCP protocol path.
Optional MCP Inspector
The browser-based MCP Inspector can be useful for manual exploration, but it is not required to run or validate LoopGrid MCP.
The canonical automated protocol test in this repository remains:
python .\scripts\mcp_stdio_test.pyIf your installed MCP development tooling supports the Inspector cleanly, you can also try:
mcp dev .\src\loopgrid_mcp\server.pyTool behavior
loopgrid.record_decision
Captures a decision through the LoopGrid REST API.
Optional inputs can also append model evidence and evaluate an existing LoopGrid policy.
It never executes proposed_action.
Example:
{
"decision_type": "customer_refund",
"agent_id": "support-agent",
"agent_version": "1.0",
"proposed_action": {
"tool": "stripe.refunds.create",
"amount": 720,
"currency": "USD"
},
"model": {
"provider": "openai",
"name": "gpt-5"
},
"authority": {
"acting_for": "Acme",
"limit_usd": 1500,
"scope": ["refund:create"]
}
}loopgrid.record_review
Records an approve/reject review through the LoopGrid review endpoint.
This tool is disabled by default.
To enable it deliberately:
$env:LOOPGRID_MCP_ENABLE_REVIEW_TOOL="true"
$env:LOOPGRID_MCP_REVIEWER_ID="reviewer@example.com"When LoopGrid authentication is enabled, the configured service key must also have the appropriate review scope.
loopgrid.record_action
Appends tool_executed evidence to the decision record.
It does not execute the external tool.
Canonical fields such as the tool name cannot be overwritten by free-form details.
loopgrid.record_outcome
Appends outcome_observed evidence.
The calling integration is responsible for obtaining the real downstream outcome.
Canonical fields such as status and verified_against cannot be overwritten by free-form details.
loopgrid.get_evidence
Downloads the portable LoopGrid evidence ZIP to:
LOOPGRID_EVIDENCE_DIRThe default directory is:
./loopgrid-evidenceRaw disclosure payloads are blocked from MCP evidence export unless explicitly enabled:
$env:LOOPGRID_MCP_ALLOW_PAYLOAD_EXPORT="true"loopgrid.verify_evidence
Asks the connected LoopGrid service to verify the decision's signed workspace chain.
This is service-side verification.
Independent/offline verification of an exported evidence bundle should use the corresponding LoopGrid evidence-verification workflow rather than duplicating that verifier inside the MCP bridge.
Authenticated LoopGrid deployments
For local evaluation with LoopGrid authentication disabled, no service key is required.
When authentication is enabled:
$env:LOOPGRID_SERVICE_KEY="<scoped-service-key>"Use the minimum scopes required by the MCP tools you enable.
Do not use an administrative key unless administration is genuinely required.
Configuration
See:
.env.examplefor the complete supported environment-variable configuration.
Common settings include:
LOOPGRID_BASE_URL
LOOPGRID_WORKSPACE
LOOPGRID_SERVICE_KEY
LOOPGRID_EVIDENCE_DIR
LOOPGRID_MCP_TIMEOUT_SECONDS
LOOPGRID_MCP_ENABLE_REVIEW_TOOL
LOOPGRID_MCP_REVIEWER_ID
LOOPGRID_MCP_ALLOW_PAYLOAD_EXPORTThe bridge does not automatically load .env.
The MCP host should inject environment variables, or the operator should configure them in the environment that starts the server.
The LoopGrid service URL is operator configuration rather than an MCP tool argument. This prevents a model from redirecting the bridge to an arbitrary LoopGrid host through a tool call.
Privacy and disclosure defaults
LoopGrid supports evidence workflows with different disclosure levels.
The MCP bridge follows conservative defaults:
human review recording is disabled unless explicitly enabled;
reviewer identity is operator-configured;
raw FULL-mode payload export is disabled by default;
authenticated deployments should use scoped service keys;
external business actions are never executed by the MCP bridge itself.
Repository boundary
LoopGrid core and LoopGrid MCP intentionally remain separate:
github.com/cybertechsoft/loopgrid
core LoopGrid evidence infrastructure
github.com/loopgridio/loopgrid-mcp
MCP protocol bridgeThe MCP bridge communicates with the LoopGrid core runtime only over HTTP.
Validation status
LoopGrid MCP 0.1.0 has been validated on Windows against the public LoopGrid 0.8.1-design-partner container.
Validation included:
clean repository installation;
Python unit/protocol tests;
REST connectivity;
synthetic decision creation;
action evidence recording;
outcome evidence recording;
service-side cryptographic verification;
portable evidence ZIP export;
official MCP Python client stdio negotiation;
discovery of all six MCP tools;
confirmation that the review tool remains disabled by default.
The official MCP Python client successfully negotiated MCP protocol:
2026-07-28See VALIDATION.md for the detailed release-gate record.
MCP Registry
LoopGrid MCP is published in the official MCP Registry as:
io.github.loopgridio/loopgrid-mcpCurrent Registry version:
0.1.0Registry metadata:
Status: active
Latest: true
Package registry: PyPI
Package: loopgrid-mcp
Transport: stdioThe Registry entry is publicly discoverable and points to:
https://github.com/loopgridio/loopgrid-mcpThe corresponding Python package is published as:
loopgrid-mcp==0.1.0The hidden ownership marker near the top of this README:
<!-- mcp-name: io.github.loopgridio/loopgrid-mcp -->is intentionally retained because it is used for MCP Registry package ownership verification.
For future releases:
update the package version;
update
server.jsonto the same version;run the repository validation suite;
publish the new version to PyPI;
confirm the package is publicly installable;
validate
server.jsonwithmcp-publisher;publish the corresponding version to the MCP Registry.
Release posture
0.1.0 is a design preview, not Production GA.
It is intended to validate a clean MCP integration path for LoopGrid v0.8.x without changing LoopGrid's signing, hash-chain, evidence-bundle, verification, or SDK contracts.
LoopGrid provides signed, tamper-evident evidence and append-only decision history. Verification confirms the integrity of the captured record; it does not determine legal compliance.
License
Apache-2.0.
See LICENSE.
Available Tools
6 toolsloopgrid.get_evidenceA
Download a portable LoopGrid evidence ZIP for a decision to the configured local evidence directory. Raw disclosure payloads are excluded by default.
| Name | Required | Description | Default |
|---|---|---|---|
| decision_id | Yes | ||
| include_payloads | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden, and it does so reasonably well: it states that the tool writes a portable ZIP to a local directory and that raw disclosure payloads are excluded by default. It could add side-effect details (e.g., whether existing files are overwritten or whether the directory must be configured), but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences lead with the primary action and destination, then add the key default behavior. Every phrase carries information, with no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter download tool with an output schema present, the description covers the essential aspects: what is downloaded, where it goes, and a key default. It does not explain the full contents of the ZIP or prerequisites like a pre-configured directory, but these are minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly explains include_payloads via 'Raw disclosure payloads are excluded by default' but never explicitly names or maps either parameter. The decision_id is self-explanatory from the schema, and the boolean's default behavior is partially clarified, but the compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Download') and identifies the concrete resource ('a portable LoopGrid evidence ZIP for a decision') plus the destination ('the configured local evidence directory'). This clearly distinguishes the tool from the record_* and verify_evidence siblings, which are different verbs and resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over the sibling tools or when not to use it. The phrase 'for a decision' gives minimal context, but no alternatives, exclusions, or prerequisites are mentioned, leaving the agent to infer when downloading is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loopgrid.record_actionC
Record evidence that an external tool/action executed. This does NOT call Stripe, Salesforce, ServiceNow, or any other business system; it only records execution evidence supplied by the integration.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | ||
| details | No | ||
| actor_id | No | external-system | |
| decision_id | Yes | ||
| external_reference | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It does clarify a key behavior: this tool does NOT call Stripe, Salesforce, ServiceNow, or other business systems; it only records supplied evidence. However, it does not address side effects, idempotency, auth requirements, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core purpose and then adds a valuable exclusion note. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too thin for a tool with five parameters, zero schema coverage, and no annotations. An agent would not know how to fill required fields like decision_id/tool or understand the purpose of optional fields. The output schema helps with return shape, but invocation guidance is still largely missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters, but it mentions none of the five parameters. It does not clarify what tool, details, actor_id, decision_id, or external_reference mean or how they relate to the recording action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records evidence that an external tool/action executed, which is a specific verb+resource pairing. It also distinguishes itself from tools that would actually invoke business systems, though it does not explicitly differentiate from sibling record_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus the sibling tools like record_decision, record_review, or record_outcome. It implies usage for logging execution evidence but does not state conditions, alternatives, or exclusions beyond not calling external systems.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loopgrid.record_decisionA
Capture a consequential AI/agent decision in LoopGrid. Optionally record model output and evaluate an existing LoopGrid policy. This records evidence only and does not execute the proposed action.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| context | No | ||
| agent_id | No | mcp-agent | |
| metadata | No | ||
| authority | No | ||
| policy_id | No | ||
| input_data | No | ||
| model_output | No | ||
| privacy_mode | No | ||
| service_name | No | mcp-agent | |
| agent_version | No | ||
| decision_type | Yes | ||
| idempotency_key | No | ||
| proposed_action | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the essential side-effect boundary: recording evidence only, never executing the proposed action, and optionally recording model output or evaluating a policy. It does not mention persistence confirmation, authority requirements, idempotency, or privacy-mode effects, which is a gap for a write-oriented tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the core purpose, add optional capabilities, and then give a crucial behavioral guardrail. Every sentence earns its place; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high parameter count, nested objects, absence of annotations, and the surrounding sibling set, the description is too thin to fully orient an agent. It covers purpose and one exclusions, but it does not differentiate from record_review/record_outcome by name and provides almost no field-level guidance; the output schema only reduces the return-value burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 14 parameters, so the description must compensate, but it only hints at model_output and policy_id. Required fields like decision_type and proposed_action, plus important optional fields such as authority, privacy_mode, and idempotency_key, are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States an explicit action and resource: 'Capture a consequential AI/agent decision in LoopGrid.' It also distinguishes itself from execution tools by noting 'This records evidence only and does not execute the proposed action,' which separates it from the sibling record_action. The purpose is specific and readily actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear behavioral context: use this to record decisions as evidence and optionally attach model output or evaluate a policy. It also provides a key exclusion—'does not execute the proposed action'—which prevents misuse as an action-execution tool. However, it does not explicitly name alternatives like record_review or record_outcome.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loopgrid.record_outcomeA
Record an observed downstream outcome for a decision after execution evidence exists. The integration is responsible for obtaining the outcome from the real downstream system.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| details | No | ||
| actor_id | No | loopgrid-mcp | |
| decision_id | Yes | ||
| verified_against | Yes | ||
| external_reference | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the integration is responsible for obtaining the outcome, but does not disclose side effects, required permissions, idempotency, error behavior, or what occurs on repeated calls. This is insufficient for a state-changing record operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action and resource, then a key responsibility note. No wasted words or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, 0% schema description coverage, and no annotations, the description leaves major gaps: status format, required parameter semantics, and tool behavior. The output schema exists but does not compensate for lack of parameter guidance. This is inadequate for correct autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only implies the meaning of decision_id and verified_against through the phrase 'for a decision after execution evidence exists,' but it gives no details on status values, details structure, actor_id, or external_reference. Parameters remain largely under-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Record' with a well-defined resource: an 'observed downstream outcome for a decision after execution evidence exists.' It distinguishes this tool from siblings like record_decision, record_review, and record_action by emphasizing downstream outcomes and evidence-based timing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage condition: use it 'after execution evidence exists' and when the integration has obtained an outcome from the real downstream system. It does not explicitly discuss exclusions or compare to sibling tools, but the timing and responsibility guidance are useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loopgrid.record_reviewA
Record a human approve/reject review in LoopGrid. Disabled by default. The operator must explicitly enable it and configure reviewer identity; the MCP host should require human confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| reason | No | ||
| decision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It openly states the tool is disabled by default, requires operator configuration of reviewer identity, and should be gated by human confirmation from the MCP host. This is meaningful auth/confirmation context beyond a naive read of the schema, though it doesn't detail what happens to the decision or whether the review is immutable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-load purpose and then deliver the key operational caveat. No filler or restatement of schema fields; each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with an output schema and no annotations, the description covers the purpose and prerequisites well but leaves out parameter roles and relationship to sibling record_* tools. It is adequate as an overview yet incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mirrors the action enum in prose ("approve/reject") and never explains decision_id or reason. An agent gets no added meaning for two of the three parameters, leaving a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Record a human approve/reject review in LoopGrid." It identifies this tool as recording human review decisions, which is clear. It doesn't explicitly contrast with the sibling record_decision/record_action/record_outcome tools, but the "review" scope is distinguishable enough to avoid deep confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when the tool applies — when a human approve/reject review needs to be recorded — and adds operational prerequisites: disabled by default and requires operator enablement/configuration. It doesn't name alternatives or exclusion conditions, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loopgrid.verify_evidenceB
Ask the connected LoopGrid service to verify the decision's signed workspace chain. For independent offline verification of an exported ZIP, use the standalone LoopGrid verifier.
| Name | Required | Description | Default |
|---|---|---|---|
| decision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'verify' without stating whether the operation is read-only, if it has side effects, what happens on failure, or what the output looks like. This is minimal behavioral transparency for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence states the primary purpose, and the second provides a clear alternative. No wasted words, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the basic purpose and an alternative, but it lacks behavioral details like what verification entails, what the response indicates, and any prerequisites. With no annotations and no parameter descriptions, it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the parameter 'decision_id' at all, and the schema has no descriptions (coverage 0%). The description adds no meaning beyond the schema's bare parameter name, which is insufficient given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to verify the decision's signed workspace chain via the connected LoopGrid service. It is specific (verb 'verify' + resource 'signed workspace chain') and differentiates from the standalone verifier, which is a separate offline tool. It also naturally distinguishes from sibling recording tools by being a verification action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides an alternative usage: for independent offline verification of an exported ZIP, use the standalone LoopGrid verifier. This implies the current tool is for online, connected verification. It doesn't explicitly address when to use sibling tools, but those are clearly different (recording actions), so the usage context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
loopgrid.get_evidence - First observed
loopgrid.record_action - First observed
loopgrid.record_decision - First observed
loopgrid.record_outcome - First observed
loopgrid.record_review - First observed
loopgrid.verify_evidence
TDQS
Scored across 6 tools
Each tool targets a distinct stage in the evidence lifecycle: decision, review, action, outcome, retrieval, and verification. The descriptions clearly separate recording evidence from executing actions, so there is no real ambiguity between tools.
All tool names follow a consistent snake_case verb_noun pattern with a uniform loopgrid. prefix. The record_* tools form a clear family, while get_evidence and verify_evidence follow the same predictable convention.
Six tools is well-scoped for a focused governance/evidence server. Each tool earns its place and covers a necessary function without redundancy or bloat.
The tool set covers the full evidentiary workflow: capture decisions, record reviews, log actions, record outcomes, retrieve portable evidence, and verify integrity. There are no obvious dead ends for the stated purpose.
Maintenance
Related MCP Connectors
Append-only decisions with provenance, supersession, retrieval, and audited MCP actions.
Tamper-evident proof creation and verification for AI agents via MCP, A2A, and REST.
Evidence-readiness MCP server: validate, audit, and score briefs, memos, and evidence packs.
Remote MCP for MCP consent scope receipt, structured receipts, audit logs, and reviewer-ready eviden
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables preserving, querying, and managing engineering decisions with reasoning and evidence through CLI, HTTP API, and MCP tools.16-
- AlicenseAqualityDmaintenanceTamper-evident audit logging for AI decisions. Three tools (record_decision, verify_decision, list_decisions) write to a regulator-grade ledger built on AWS S3 Object Lock with 7-year retention. Designed for EU AI Act Article 12 and FCA SS1/23 evidence requirements. Try zero-config: npx audit-ledger-mcp boots in sandbox mode against a public hosted tenant.357 npm1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEvidence-first delivery audit MCP server that evaluates task requirements against delivery evidence and returns a reproducible pass/needs_review/fail decision with a deterministic receipt.MIT
- AlicenseNot gradedqualityAmaintenanceProvides evidence-oriented MCP service for cryptographically identified agents, bounded public contracts, privacy-preserving records, and append-only audit.Apache 2.0