Skip to main content
Glama

Report what you did after an allowed action

report_action_outcome
Read-only

Call AFTER acting on an allow from verify_premises, once per lease: report whether you executed the action, abandoned it, or tried and failed (optionally with the external system's identifier for it, never content). Requires the mcp:report scope. Accepted only for a lease this same connection used in verify_premises, with the same intended_action. Recorded as evidence of what you report; it is NOT proof of enforcement and authorizes nothing.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "lease": "<lease>",
      "intended_action": "<intended_action>",
      "outcome": "<outcome>"
    },
    "name": "report_action_outcome"
  }
}

Input Schema

NameRequiredDescriptionDefault
runNoThe run from start_agent_run you acted under — the SAME run that check_premises/verify_premises authorized this lease under. Required on a shared installation.
leaseYesThe lease token from check_premises that verify_premises accepted for this action.
outcomeYesWhat you did after verify allowed it: executed the action, abandoned it, or tried and failed.
external_refNoOptional identifier of the action in the external system (e.g. a message id). An identifier only, never content.
intended_actionYesThe SAME intended_action string used for check_premises and verify_premises.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Rich disclosure beyond the annotations: it states the mcp:report scope requirement, the lease-binding validation rule, the append semantics ('once per lease'), and, importantly, that the record is evidence of the agent's own claim and not proof of enforcement nor an authorization. The one soft spot is tension with readOnlyHint=true — the description says the outcome is 'Recorded as evidence', which is a persistent write to the server's record set, and the text does not reconcile that with the read-only annotation (nor explain what happens if the report is rejected).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the call-timing clause, then constraints, then caveats — a sensible order with no filler. It is dense to the point of being a run-on, cramming scope, lease validation, evidence semantics, and a non-authorization disclaimer into two long sentences, though each clause carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter sequencing-dependent reporting tool with no output schema, the description supplies what an agent most needs: when to call, auth scope, lease binding, and what the record does and does not mean. Gaps are minor — failure/rejection behavior, retry after a rejected report, and the 'run' parameter are left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter, including the 'identifier only, never content' rule for external_ref. The description reinforces the lease/intended_action binding and the once-per-lease constraint, but adds no new syntax, format, or edge-case meaning, and never mentions the 'run' parameter or its shared-installation requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource (report the outcome of an action you already took) and pins its exact position in the lifecycle: "Call AFTER acting on an allow from verify_premises, once per lease." That distinguishes it cleanly from the siblings verify_premises (authorizes), check_premises (checks), and report_agent_run (run-level reporting), so an agent can pick it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Timing is explicit (after acting, once per lease) and the eligibility condition is explicit (only for a lease this same connection used in verify_premises, with the same intended_action). The three permitted outcome values are restated as the decision an agent is making, which tells the agent exactly what state it is in when it should call this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources