MCP Operation Risk
Server Details
Operation-level risk guidance for consolidated MCP tools, including schema drift and retry signals.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have word-for-word identical descriptions, identical inputs, and identical return semantics (ALLOW/DENY/REQUIRE_APPROVAL). An agent has no basis for choosing between describe_operation_risk_service and evaluate_operation_risk, so misselection is essentially guaranteed or arbitrary.
Both names use the same snake_case verb_noun_service pattern, so the surface is stylistically coherent. The only issue is that two different verbs (describe/evaluate) are applied to what is functionally the same operation, which is misleading given the duplicate descriptions.
Two tools is thin but defensible for a narrow risk-classification service; a single evaluator plus maybe a capability-introspection call would be enough. However, the count is effectively one tool duplicated, which wastes surface rather than earning its place.
A single fail-closed risk evaluator covers the core stated purpose (checking an operation before execution), and the fail-closed default is a sensible fallback. Still, there is no batch evaluation, capability/coverage discovery, or policy-explanation operation, and the duplicated tool adds no coverage.
Available Tools
2 toolsdescribe_operation_risk_serviceDescribe MCP Operation RiskARead-onlyIdempotentInspect
Check whether the actual operation inside an MCP tool call is safe before execution. Use this when one MCP tool exposes multiple operations with different side effects, so whole-tool permissions are too coarse. Provide the native MCP server identity, the tool's tools/list metadata and the intended arguments. For supported consolidated tools, distinguish read, create/add, update/mutate and delete/destructive operations. Return ALLOW, DENY, or REQUIRE_APPROVAL. Unknown, unsupported, ambiguous, or schema-changed calls fail closed with REQUIRE_APPROVAL. The evaluator never executes the source operation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: fail-closed handling for unknown/ambiguous/schema-changed calls, and the fact that the evaluator never executes the source operation. It omits auth requirements, rate limits, or latency expectations.
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?
Six short sentences, front-loaded with the purpose and the routing condition before the behavioral notes. Most sentences earn their place, though the final two (fail-closed and non-execution) slightly overlap in intent.
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?
An output schema exists, so return values need not be re-explained, and the description still names the decision outcomes. However, the core gap is structural: the description assumes a rich input (server identity, tools/list metadata, arguments) that the empty schema cannot accept, leaving the agent without a coherent way to actually call the tool.
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 schema declares zero properties, which normally earns a baseline of 4, but the description instructs the caller to 'Provide the native MCP server identity, the tool's tools/list metadata and the intended arguments' — inputs that do not exist in the schema. This mismatch risks the agent attempting arguments that will be rejected, so the invocation guidance is not trustworthy even though no schema fields are left undocumented.
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 states a specific verb and resource ('Check whether the actual operation inside an MCP tool call is safe before execution') and clarifies the granularity it operates at (per-operation rather than per-tool). It does not, however, distinguish itself from its sibling 'evaluate_operation_risk', which sounds like it performs a very similar function.
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 a concrete triggering condition: 'Use this when one MCP tool exposes multiple operations with different side effects, so whole-tool permissions are too coarse.' This is a clear when-to-use statement. It never says when NOT to use it or when to prefer the sibling tool instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_operation_riskMCP Operation Risk CheckARead-onlyIdempotentInspect
Check whether the actual operation inside an MCP tool call is safe before execution. Use this when one MCP tool exposes multiple operations with different side effects, so whole-tool permissions are too coarse. Provide the native MCP server identity, the tool's tools/list metadata and the intended arguments. For supported consolidated tools, distinguish read, create/add, update/mutate and delete/destructive operations. Return ALLOW, DENY, or REQUIRE_APPROVAL. Unknown, unsupported, ambiguous, or schema-changed calls fail closed with REQUIRE_APPROVAL. The evaluator never executes the source operation.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | The complete relevant Tool record returned by the source server's tools/list. | |
| source | Yes | MCP server and negotiated protocol identity for the source tool. | |
| arguments | Yes | Arguments intended for the source MCP tools/call request being evaluated. The evaluator does not execute that call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, and the description is consistent with them ('the evaluator never executes the source operation'). It goes well beyond by disclosing the decision vocabulary (ALLOW, DENY, REQUIRE_APPROVAL) and the fail-closed behavior for unknown, unsupported, ambiguous, or schema-changed calls.
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?
Front-loaded with the core action, then the trigger condition, required inputs, and return/failure semantics in tight, waste-free sentences. Every sentence carries decision-relevant information for the caller.
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 read-only evaluation tool with no output schema, the description supplies the missing return contract (ALLOW/DENY/REQUIRE_APPROVAL) and the fail-closed policy. Combined with 100% schema coverage on a nested-object input, nothing an agent needs to call it correctly is absent.
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 100%, so the schema already documents all three parameters and the baseline is 3. The description adds value by tying each input to its semantic role ('native MCP server identity, the tool's tools/list metadata and the intended arguments') and by noting the arguments are not executed.
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 a specific verb and object: 'Check whether the actual operation inside an MCP tool call is safe before execution,' with a clear scoping rationale about per-operation vs whole-tool permissions. It is easy to tell apart from a generic safety tool, but it never names the sibling describe_operation_risk_service, so differentiation from that specific tool is left to inference.
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?
Gives an explicit trigger condition: use it 'when one MCP tool exposes multiple operations with different side effects, so whole-tool permissions are too coarse,' and tells the caller what inputs to supply. It stops short of naming the alternative tool or stating when not to use this one, so it is strong context without full routing.
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.
1 tool update
- Changed
evaluate_operation_risk16 fields changed- added
Input schema / properties / arguments / descriptionAdded value: +"Arguments intended for the source MCP tools/call request being evaluated. The evaluator does not execute that call." - added
Input schema / properties / source / descriptionAdded value: +"MCP server and negotiated protocol identity for the source tool." - added
Input schema / properties / source / properties / protocol_version / descriptionAdded value: +"Negotiated MCP protocol version, or null when unavailable." - added
Input schema / properties / source / properties / server / descriptionAdded value: +"MCP server identity from the connection's initialize response." - added
Input schema / properties / source / properties / server / properties / name / descriptionAdded value: +"Name reported by the MCP server during initialize; used as a supported-manifest lookup hint." - added
Input schema / properties / source / properties / server / properties / version / descriptionAdded value: +"Server version reported during initialize, or null when unavailable." - added
Input schema / properties / tool / descriptionAdded value: +"The complete relevant Tool record returned by the source server's tools/list." - added
Input schema / properties / tool / properties / _meta / descriptionAdded value: +"Relevant tool metadata from tools/list, when present." - added
Input schema / properties / tool / properties / annotations / descriptionAdded value: +"Tool annotations from tools/list, such as read-only or destructive hints; use an empty object when absent." - added
Input schema / properties / tool / properties / description / descriptionAdded value: +"Tool description from tools/list, or null if the server omitted it." - added
Input schema / properties / tool / properties / execution / descriptionAdded value: +"Tool execution metadata from tools/list, when present." - added
Input schema / properties / tool / properties / icons / descriptionAdded value: +"Tool icons from tools/list, when present." - added
Input schema / properties / tool / properties / inputSchema / descriptionAdded value: +"Complete inputSchema from tools/list; used to validate the intended arguments and match a supported tool manifest." - added
Input schema / properties / tool / properties / name / descriptionAdded value: +"Exact tool name from the MCP server's tools/list response." - added
Input schema / properties / tool / properties / outputSchema / descriptionAdded value: +"Tool output schema from tools/list, when present." - added
Input schema / properties / tool / properties / title / descriptionAdded value: +"Tool title from tools/list, when provided by the server."
1 tool update
- Changed
evaluate_operation_risk13 fields changed- removed
Input schema / $defsRemoved value: -{ - "NativeServerIdentity": { - "additionalProperties": false, - "properties": { - "name": { - "title": "Name", - "type": "string" - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Version" - } - }, - "required": [ - "name", - "version" - ], - "title": "NativeServerIdentity", - "type": "object" - }, - "NativeSource": { - "additionalProperties": false, - "properties": { - "protocol_version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Protocol Version" - }, - "server": { - "$ref": "#/$defs/NativeServerIdentity" - } - }, - "required": [ - "server", - "protocol_version" - ], - "title": "NativeSource", - "type": "object" - }, - "NativeToolRecord": { - "additionalProperties": false, - "properties": { - "_meta": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Meta" - }, - "annotations": { - "additionalProperties": true, - "title": "Annotations", - "type": "object" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description" - }, - "execution": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Execution" - }, - "icons": { - "anyOf": [ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Icons" - }, - "inputSchema": { - "additionalProperties": true, - "title": "Inputschema", - "type": "object" - }, - "name": { - "title": "Name", - "type": "string" - }, - "outputSchema": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Outputschema" - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Title" - } - }, - "required": [ - "name", - "description", - "inputSchema" - ], - "title": "NativeToolRecord", - "type": "object" - } -} - removed
Input schema / properties / source / $refRemoved value: -"#/$defs/NativeSource" - added
Input schema / properties / source / additionalPropertiesAdded value: +false - added
Input schema / properties / source / propertiesAdded value: +{ + "protocol_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Protocol Version" + }, + "server": { + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Version" + } + }, + "required": [ + "name", + "version" + ], + "title": "NativeServerIdentity", + "type": "object" + } +} - added
Input schema / properties / source / requiredAdded value: +[ + "server", + "protocol_version" +] - added
Input schema / properties / source / titleAdded value: +"NativeSource" - added
Input schema / properties / source / typeAdded value: +"object" - removed
Input schema / properties / tool / $refRemoved value: -"#/$defs/NativeToolRecord" - added
Input schema / properties / tool / additionalPropertiesAdded value: +false - added
Input schema / properties / tool / propertiesAdded value: +{ + "_meta": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Meta" + }, + "annotations": { + "additionalProperties": true, + "title": "Annotations", + "type": "object" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "execution": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Execution" + }, + "icons": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Icons" + }, + "inputSchema": { + "additionalProperties": true, + "title": "Inputschema", + "type": "object" + }, + "name": { + "title": "Name", + "type": "string" + }, + "outputSchema": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Outputschema" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + } +} - added
Input schema / properties / tool / requiredAdded value: +[ + "name", + "description", + "inputSchema" +] - added
Input schema / properties / tool / titleAdded value: +"NativeToolRecord" - added
Input schema / properties / tool / typeAdded value: +"object"
1 tool update
- Added
evaluate_operation_risk
1 tool update
- First observed
describe_operation_risk_service
Related MCP Connectors
Statically audits MCP tool surfaces for token cost, schema quality, and design issues.
MCP diagnostics that help AI agents find safe next steps for HTTP, API, and MCP failures.
Collision-first MCP diagnostics for MCP, API, webhook and agent failures. Returns structured evidence, bounded repair guidance, agent compatibility checks and safe recovery routing.
Error-actionability translation for MCP tool failures. $0.002/check.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides structured error classification and recovery guidance for MCP agents, turning opaque failures into actionable retry and state information.17 npmMIT
- AlicenseNot gradedqualityBmaintenanceExposes eight MCP tools over streamable HTTP that let clients ingest alerts, list and diagnose incidents, analyze Terraform plan risk, propose remediations, and dry-run or execute policy-validated, approval-gated changes with automatic rollback.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSigned, offline-verifiable authorization for API-contract changes. Before a contract change (OpenAPI, GraphQL, Protobuf, AsyncAPI, MCP manifests) merges or deploys, the agent calls preflight_change_set; the decision is deterministic, signed, and verifiable without calling CodeRifts. Three tools: preflight_change_set, verify_receipt, get_decision_details. Only a granted change can proceed.5 npmMIT

AgentsGateofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to securely call MCP tools with risk scoring, checkpoints, rollback, and approval workflows.13 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.