Skip to main content
Glama

semantic-saga-mcp

A durable, governed Saga coordinator for agentic workflows, exposed through both Model Context Protocol (MCP) and A2A Protocol 1.0. Semantic Saga journals intent before side effects, executes only registered/versioned actions, and compensates completed or uncertain work when a workflow must unwind.

Version 0.9 adds A2A agent interoperability on top of MCP 2026-07-28, enterprise identity, PostgreSQL distributed durability, the immutable Enterprise Action Registry, the Semantic Saga Engine, OpenTelemetry/audit, and tenant policy/governance. Peer agents can now discover Semantic Saga, delegate structured transactional work, persist A2A tasks, and continue an explicit saga across authorized agents in the same tenant without bypassing RBAC, policy, approvals, fencing, audit, or compensation semantics.

Core guarantees

  • Write-ahead intent: every concrete side effect is stored as EXECUTING before invocation.

  • Immutable action contracts: each step persists the exact action version, SHA-256 definition hash, and non-secret contract snapshot.

  • Version-correct recovery: historical compensation uses the historical snapshot, not the current action definition.

  • Stable idempotency: forward retries reuse one persisted step id and therefore one idempotency identity.

  • Durable workflow DAGs: nodes, dependencies, approvals, checkpoints, attempts, and recovery state survive restart.

  • Parallel ready nodes: independent nodes execute concurrently under the current fenced saga lease.

  • Human approval + operator recovery: policy/action gates are durable; uncertain work can enter RECOVERY_REQUIRED.

  • Tenant isolation + OAuth/RBAC: remote workflows remain organization scoped and authorization controlled.

  • Tenant governance: JSON or OPA policy can allow, deny, or require approval by action/resource/risk/principal/phase.

  • Hard budgets: limits for steps, planned nodes, cumulative risk units, and requested parallelism are checked before ordinary rules.

  • Current-policy enforcement: ready work is re-evaluated immediately before side effects.

  • Rollback safety: business policy can stop new work but cannot make compensation unavailable after normal RBAC authorization.

  • Distributed safety: renewable leases, fencing tokens, atomic sequencing, and PostgreSQL SKIP LOCKED recovery prevent stale ownership.

  • Distributed tracing: W3C trace context flows through ingress, saga/workflow, policy, and downstream HTTP actions.

  • Durable audit evidence: control-plane events and policy decisions are append-only through the application API and SHA-256 hash-chained per saga.

  • Payload-safe diagnostics: policy/audit/timeline output excludes action input/result payloads, credential material, HTTP bodies, resolved secrets, and checkpoint payloads.

  • A2A task durability: SQL-backed A2A tasks survive server restart and are tenant scoped separately from the transactional saga_id.

  • Protocol parity: MCP and A2A enter the same GovernedCoordinator; neither protocol owns a second execution engine.

Semantic Saga coordinates systems that do not share an ACID transaction. A compensation can still fail; failures remain visible as ROLLBACK_FAILED for operator handling.

Related MCP server: AgentsGate

Install

Python 3.10 or newer is required.

Base MCP server:

python -m pip install semantic-saga-mcp
semantic-saga-mcp

A2A interoperability is optional:

python -m pip install 'semantic-saga-mcp[a2a]'
semantic-saga-a2a

OpenTelemetry SDK/exporters are also optional:

python -m pip install 'semantic-saga-mcp[otel]'

For source development:

python -m pip install -e .

MCP quick start

The default MCP transport is stdio, governance is disabled, and the default store is in-memory.

Durable local development:

semantic-saga-mcp \
  --database ./semantic-saga.db \
  --actions ./examples/action_registry.json \
  --policy-mode json \
  --policy-file ./examples/governance_policy.json

Horizontally scaled Streamable HTTP deployment:

semantic-saga-mcp \
  --transport streamable-http \
  --host 0.0.0.0 --port 8000 \
  --allowed-host mcp.example.com \
  --postgres-dsn "$SAGA_POSTGRES_DSN" \
  --worker-id "$HOSTNAME" \
  --actions ./examples/action_registry.json \
  --policy-mode opa \
  --policy-opa-url http://opa.internal:8181

A2A 1.0 interoperability

Phase 8 exposes Semantic Saga as an A2A Protocol 1.0 peer through the official Python SDK.

semantic-saga-a2a \
  --host 127.0.0.1 --port 8100 \
  --a2a-public-url http://127.0.0.1:8100 \
  --database ./semantic-saga.db \
  --actions ./examples/action_registry.json \
  --policy-mode json \
  --policy-file ./examples/governance_policy.json

Discovery:

GET /.well-known/agent-card.json

Default A2A JSON-RPC endpoint:

POST /a2a

The Agent Card advertises A2A 1.0, JSON-RPC, application/json input/output, and skill groups for transactional orchestration, governed side effects, and transaction inspection.

Structured commands only

Semantic Saga does not execute arbitrary natural-language instructions received from a peer. An A2A message must contain exactly one structured Part.data object.

{
  "operation": "begin",
  "metadata": {"workflow": "employee-onboarding"}
}
{
  "operation": "plan",
  "saga_id": "<saga-id>",
  "action": "create_repository",
  "input": {"name": "payments-service"}
}
{
  "operation": "run",
  "saga_id": "<saga-id>",
  "max_parallel": 4
}
{
  "operation": "rollback",
  "saga_id": "<saga-id>"
}

Supported operations are begin, execute, plan, run, approve, retry, checkpoint, commit, rollback, get, timeline, audit, verify_audit, list_actions, get_action, policy_status, and policy_decisions.

Each operation maps to its existing MCP authorization capability and then calls the same governed coordinator method.

A2A identity and tasks

A2A bearer authentication reuses the Phase 2 JWT/static verifier and the same tenant/principal/role/scope claim conventions. The public Agent Card remains discoverable; task operations require authentication when auth is enabled.

With SQLite or PostgreSQL, the official A2A DatabaseTaskStore persists protocol tasks in an a2a_tasks table alongside Saga state. Task ownership is tenant scoped, so authorized peer agents in one organization can retrieve a task created by another peer, while another tenant cannot.

Keep the two durable handles distinct:

A2A task id  = protocol-level handoff/status handle
saga_id      = transactional workflow/compensation handle

Phase 8 deliberately advertises streaming: false and push_notifications: false. SQL task persistence is durable, while live event queues are not yet a distributed recoverable delivery layer. Polling/task retrieval is the supported horizontal-scale behavior for this release.

A2A task cancellation is not used to blindly interrupt an uncertain real-world side effect. Use explicit saga rollback/compensation, or reconcile RECOVERY_REQUIRED work first.

See docs/a2a_interoperability.md.

Policy and governance

Authentication/RBAC and governance remain separate layers for both MCP and A2A:

OAuth / authenticated peer identity
        │
        ▼
RBAC: may this principal use this capability?
        │
        ▼
Governance: may THIS action/resource/risk happen NOW?
        │
        ▼
Saga engine / side effect

Built-in JSON policy

semantic-saga-mcp \
  --policy-mode json \
  --policy-file ./examples/governance_policy.json

Built-in evaluation order is deterministic:

  1. hard budgets

  2. tenant-specific rules in file order

  3. wildcard rules in file order

  4. approval threshold

  5. effective default effect

Effects are allow, deny, and require_approval. Policy can match action ID, phase, semantic risk/domain/operation/resource, principal type, roles, and scopes.

Tenant budgets can bound max_steps_per_saga, max_planned_nodes, max_risk_units, and max_parallel.

See docs/governance_policy.schema.json and docs/policy_governance.md.

OPA policy-as-code

export SAGA_OPA_TOKEN='optional-private-token'
semantic-saga-mcp \
  --policy-mode opa \
  --policy-opa-url http://opa.internal:8181 \
  --policy-opa-decision-path semantic_saga/decision \
  --policy-opa-token-env SAGA_OPA_TOKEN

Semantic Saga sends OPA only sanitized control-plane context. Action inputs/results and secrets are excluded. OPA errors, timeouts, invalid results, or undefined decisions fail closed for forward work.

Every evaluation creates a POLICY_DECISION event with decision ID, effect, reason, revision, backend, matched rules, phase/risk, and non-sensitive counters. Policy evidence shares the audit hash chain and trace correlation.

Observability and audit

The base package includes the OpenTelemetry API. Export OTLP/HTTP traces and metrics with:

semantic-saga-mcp --otel-endpoint http://otel-collector:4318

MCP accepts W3C traceparent, tracestate, and baggage through request _meta with HTTP-header fallback. A2A attaches valid W3C HTTP trace headers before entering the same coordinator. Active context is injected into downstream HTTP actions.

Audit evidence includes control-plane identifiers/statuses, actor identity, action/version, policy/retry/approval metadata, timestamps, and trace/span correlation while intentionally excluding payloads/secrets.

Each saga has a SHA-256 event chain:

previous_hash -> event_hash -> next previous_hash -> ...

verify_audit_chain recomputes the complete chain. This is tamper-evident, not a substitute for independently anchored/WORM evidence.

See docs/observability_audit.md.

Semantic Saga Engine

The orchestration layer is opt-in. A typical governed workflow is:

  1. begin a saga

  2. plan version-pinned nodes

  3. add dependencies

  4. obtain required approvals

  5. run ready nodes

  6. add checkpoints when useful

  7. commit after all planned nodes complete

Policy is evaluated at planning and again immediately before ready-node execution.

Durable node states include:

WAITING_DEPENDENCY
WAITING_APPROVAL
READY
EXECUTING
COMPLETED
FAILED
REJECTED
BLOCKED
COMPENSATED
COMPENSATION_FAILED

Action contracts can version retry/backoff, failure_mode, and approval_required. failure_mode: "pause" leaves a workflow in RECOVERY_REQUIRED for reconciliation rather than automatically guessing the external outcome.

See docs/workflow_engine.md.

Enterprise Action Registry

Actions are operator-owned immutable contracts with semantic metadata, JSON Schemas, execution policy, forward request, compensation request, and secret references.

Before a concrete side effect begins Semantic Saga persists:

action
action_version
action_definition_hash
action_definition

Historical rollback uses the persisted contract/version/hash rather than a later active definition.

Phase 8 does not yet model an arbitrary remote A2A agent as kind: a2a in the action registry. Outbound A2A actions require persisted remote task receipts, remote-agent identity/version, idempotency linkage, terminal status, compensation artifacts, and a versioned compensation contract before they can meet the same safety standard as HTTP/runtime actions.

Secret references

Do not store credential values in action manifests. Header values can use references such as:

{
  "Authorization": {
    "secret_ref": "env://PAYMENTS_TOKEN",
    "prefix": "Bearer "
  }
}

The built-in provider supports env://NAME; the SecretProvider protocol can be implemented for enterprise secret managers.

Storage

In-memory

Use SagaStore for tests/ephemeral development. Saga state, audit evidence, governance decisions, and A2A protocol tasks disappear with the process.

SQLite

semantic-saga-mcp --database ./semantic-saga.db
semantic-saga-a2a --database ./semantic-saga.db

SQLite uses WAL mode and is intended for a single-node deployment. Saga workflow state uses saga metadata/steps, audit/policy decisions use audit_events, and A2A protocol tasks use a2a_tasks when the A2A extra/server is enabled.

PostgreSQL

semantic-saga-mcp --postgres-dsn "$SAGA_POSTGRES_DSN" --worker-id "$HOSTNAME"
semantic-saga-a2a --postgres-dsn "$SAGA_POSTGRES_DSN" --worker-id "$HOSTNAME-a2a"

PostgreSQL is recommended for multiple replicas. Saga leases/fencing protect workflow ownership; audit/policy events use advisory locking for per-saga hash-chain serialization; A2A tasks are persisted through SQLAlchemy/asyncpg in the same database using a separate table.

See docs/distributed_durability.md.

Enterprise identity

For remote deployment, Semantic Saga can validate OAuth/OIDC JWT access tokens using issuer, audience, JWKS, expiry, and allowed algorithms. Durable saga and A2A task ownership are tenant scoped.

Identity

Read saga/registry/audit/policy

Orchestrate / execute

Commit / rollback

viewer

yes

no

no

operator

yes

yes

yes

admin

yes

yes

yes

Equivalent scopes are semantic-saga:read, semantic-saga:execute, and semantic-saga:admin. Governance can further narrow the authorized operation for a specific tenant/resource/risk.

See docs/enterprise_identity.md.

MCP tools

Tool

Purpose

list_actions / get_action

Inspect immutable action contracts.

get_policy_status / get_policy_decisions

Inspect governance state/evidence.

begin_saga

Create an ACTIVE saga.

execute_saga_step

Immediate compatibility execution path.

plan_saga_step

Persist a version-pinned DAG node.

run_ready_steps

Re-evaluate governance and run ready dependency waves.

approve_saga_step

Approve/reject a gated node.

retry_saga_step

Reset failed/rejected/blocked work after current checks.

checkpoint_saga

Persist a named milestone.

commit_saga

Commit completed work.

rollback_saga / trigger_rollback

Execute compensation safety path.

get_saga

Inspect saga/workflow/recovery state.

get_saga_timeline

Inspect payload-safe timeline plus integrity.

get_audit_events / verify_audit_chain

Read/verify append-only audit evidence.

Built-in file transaction

create_text_file@1.0.0 creates a relative .txt file below the configured file root and compensates only files created by that step. Existing files are never overwritten or deleted.

Upgrade behavior

Steps created before 0.5 have no immutable action snapshot and are refused for compensation by default unless --allow-legacy-action-recovery is explicitly enabled.

Phase 6 introduced the audit table. Phase 7 governance decisions reuse it. Phase 8 adds no Saga schema migration; when SQL-backed A2A is enabled, the official A2A task store creates its separate a2a_tasks table.

Governance defaults to --policy-mode none, so upgrading does not silently enable business-policy restrictions. A2A dependencies are optional and do not affect an MCP-only installation unless the [a2a] extra is installed.

Development and CI

python -m unittest discover -s tests -v

Pull requests validate Python 3.10–3.13, MCP 2026 Streamable HTTP, OAuth tenant/RBAC, governance approval/budgets, built-in JSON and OPA adapters, action-registry recovery, DAG/retry/approval/recovery behavior, audit integrity/payload safety, optional OpenTelemetry compatibility, A2A 1.0 discovery/client/task/tenant/restart behavior, package/Twine validation, and PostgreSQL 16 concurrency/fencing/recovery/audit/governance/A2A persistence and server startup.

Publishing

The repository uses PyPI trusted publishing. Before release, update __version__, run CI/package validation, inspect distribution contents, and publish a GitHub release. PyPI versions are immutable.

Phase notes

Available Tools

18 tools
approve_saga_stepC

Approve or reject a workflow node; approvals are subject to tenant governance while rejection remains fail-safe.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
node_idYes
saga_idYes
approvedNo

TDQS

C2.9/5.0
Behavior3/5

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

The description discloses two meaningful behaviors: approvals are subject to tenant governance, and rejection is fail-safe. However, with no annotations provided, the description carries the full burden and does not explain side effects, permissions, idempotency, or what happens after approval or rejection.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every clause adds information: the action, the target, the governance constraint, and the fail-safe rejection behavior.

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

Completeness2/5

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

This is a mutation-oriented tool with four parameters, no annotations, and no output schema, so the description must carry significant weight. It explains the basic purpose and one policy nuance, but it omits parameter semantics, when to invoke it, and expected outcomes, leaving the agent under-informed.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the roles of saga_id, node_id, reason, or approved. The approve/reject wording loosely maps to the 'approved' boolean, but the description adds almost no meaning beyond the schema's property names and types.

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

Purpose4/5

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

The description states a specific action ('Approve or reject') on a clear resource ('a workflow node'), which identifies the tool's core function. It doesn't explicitly differentiate from siblings like execute_saga_step, but the approval/rejection framing is sufficiently distinct.

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

Usage Guidelines2/5

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

The description implies this tool is used to handle approval decisions on workflow nodes, but it gives no explicit guidance on when to choose it over related tools such as run_ready_steps or execute_saga_step. It does not mention prerequisites, alternatives, or exclusions.

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

begin_sagaB

Start a durable transactional workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
metadataNo

TDQS

B3.1/5.0
Behavior2/5

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

The description adds only 'durable' and 'transactional' as behavioral traits, but with no annotations, it carries the full burden of transparency. It does not disclose return behavior, whether a saga ID is produced, idempotency, required permissions, or side effects of starting a workflow.

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

Conciseness5/5

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

The description is one short sentence with no filler or repetition. 'Durable' and 'transactional' add meaningful context, and the key action is front-loaded.

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

Completeness2/5

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

The definition is too sparse given the lack of an output schema and annotations. It does not mention what the tool returns (likely a saga identifier) or how it fits into the broader saga lifecycle among many sibling tools. An agent could invoke it but would not know how to use the result or what to do next.

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

Parameters1/5

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

The description says nothing about the metadata parameter, and the input schema only provides the property name 'metadata' with no semantics. Since schema description coverage is 0%, the description was required to compensate, but it does not, leaving an agent without guidance on how to populate the optional metadata object.

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 states a specific verb ('Start') and a specific resource ('a durable transactional workflow'), which clearly identifies the tool's core purpose. The name 'begin_saga' plus the lifecycle siblings such as plan_saga_step, execute_saga_step, and commit_saga make the distinction obvious: this is the initiating action.

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

Usage Guidelines3/5

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

The description implies that this tool should be used to start a durable workflow, but it does not explicitly say when to use it versus alternatives like plan_saga_step or execute_saga_step. It provides no exclusions, prerequisites, or sequencing guidance such as 'call this before planning steps.'

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

checkpoint_sagaC

Persist a named workflow checkpoint and operator/agent-provided checkpoint data.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
nameYes
saga_idYes

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of explaining behavior. It indicates a persistent write operation but does not disclose whether an existing checkpoint is overwritten, whether the saga must already exist, whether data is optional, or what side effects occur.

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

Conciseness5/5

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

The description is a single efficient sentence with the verb front-loaded. It contains no filler and communicates the core action and object quickly.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and minimal parameter documentation, one sentence is not enough. Missing context includes when checkpoints should be persisted, how naming works, overwrite behavior, and whether saga_id references an existing saga.

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?

With 0% schema description coverage, the description must compensate. It adds meaning for 'name' (the checkpoint's name) and 'data' (operator/agent-provided checkpoint data), but it does not explain the saga_id parameter's role or the expected shape of the nested data object.

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

Purpose4/5

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

The description uses a specific verb, 'Persist', and names a distinct resource: a named workflow checkpoint plus operator/agent-provided data. This makes the tool's role clear and distinguishes it from the saga execution/rollback/commit siblings, though it does not explicitly contrast with them.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as begin_saga, execute_saga_step, commit_saga, or rollback_saga. The description states what the tool does but not the conditions under which an agent should call it.

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

commit_sagaC

Commit a completed saga after current tenant governance checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
saga_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It states that the saga is 'committed' and that governance checks occur, but it does not explain side effects, irreversibility, permission requirements, failure behavior, or what happens to the saga after commit. This is a significant gap for a mutation-like operation.

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?

The description is a single sentence with no filler words. It front-loads the core action and states a key precondition efficiently. It could add more useful detail without becoming verbose, but as written it is concise.

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

Completeness2/5

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

There is no output schema and no annotations, so the description bears full responsibility for explaining behavior and prerequisites. It mentions governance checks and completion state, but omits return values, side effects, and failure semantics. For a state-changing saga operation, this is incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention saga_id or explain how it is used. The single required parameter is only minimally documented by the schema itself. The description needs to compensate for the schema gap but does not.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Commit a completed saga.' This clearly identifies the action and lifecycle phase, distinguishing it from siblings like begin_saga, checkpoint_saga, or rollback_saga. It does not explicitly name an alternative, but the scope is reasonably clear.

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

Usage Guidelines3/5

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

The phrase 'after current tenant governance checks' implies a precondition and suggests usage is appropriate once those checks pass. However, it does not explicitly state when to use this tool versus alternatives such as checkpoint_saga or rollback_saga, leaving much of the routing to inference.

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

execute_saga_stepC

Immediately execute an action after current governance, schema, and action-policy checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
actionYes
saga_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of disclosing side effects. It reveals that checks occur before execution, but it does not state whether execution is reversible, what happens if checks fail, whether it writes/commits, or what it returns—critical gaps for a tool whose name implies mutation.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no padding. It is concise but under-specified for a three-parameter execution tool, so the brevity is not fully earned.

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

Completeness2/5

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

Given three required parameters, a nested object, no output schema, and many saga-related siblings, the description lacks information about return values, side effects, and how this call relates to plan/approve/retry/rollback steps. It is not complete enough for an agent to invoke it correctly.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain the parameters. It mentions 'action' only in passing and gives no meaning for saga_id, the action string, or the free-form input object; an agent cannot infer what values to supply.

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

Purpose4/5

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

The description gives a specific verb and resource: immediately execute an action, and adds the qualifying context of governance/schema/action-policy checks. It is distinguishable from siblings like plan_saga_step or run_ready_steps by the 'immediately execute' phrasing, though it never names an alternative.

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

Usage Guidelines3/5

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

The phrase 'after current governance, schema, and action-policy checks' implies the tool is the execution step used once checks are satisfied. However, there is no explicit when-to-use/when-not-to-use guidance and no reference to sibling tools such as plan_saga_step, approve_saga_step, or run_ready_steps.

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

get_actionA

Inspect one registered action contract by id and optional version.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
versionNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. 'Inspect' implies a read-only operation, and 'registered action contract' clarifies the target, but the description does not disclose return format, error behavior, or what happens when the id does not exist. It is not misleading but is minimally transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to identifying what the tool does and how to invoke it.

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

Completeness3/5

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

For a simple retrieval tool, the description is minimally sufficient, but it lacks details about version semantics (e.g., null meaning latest), output shape, or not-found behavior. With no output schema or annotations, a bit more context would make it fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must add meaning beyond the raw schema. It does this by identifying 'action' as an id and 'version' as optional, which directly clarifies both parameters. It does not add format or default details, but the essential semantic mapping is provided.

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 uses a specific verb ('Inspect') with a clear resource ('registered action contract') and distinguishes this single-item retrieval from sibling tools like list_actions. Including 'by id and optional version' makes the exact scope unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for retrieving a specific action contract by id, but it does not explicitly name alternatives or state when not to use this tool. The guidance is adequate but relies on the agent inferring that list_actions would be used for listing multiple contracts.

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

get_audit_eventsC

Read append-only audit events without exposing action inputs, results, or secret material.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
saga_idYes
event_typesNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It does disclose two useful traits: audit events are append-only, and the response avoids exposing action inputs, results, or secret material. However, it does not explain ordering, pagination, event retention, or what fields are actually returned, leaving notable behavioral gaps.

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

Conciseness5/5

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

The description is a single tight sentence with no filler. It front-loads the action and resource, then adds a valuable safety qualifier without wasting words.

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

Completeness2/5

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

The tool has three parameters, no annotations, no output schema, and many siblings. The description covers only the basic idea and redaction behavior, leaving out parameter usage, return shape, and when to prefer this over related audit or saga tools. It is not complete enough for confident autonomous invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate by explaining saga_id, limit, or event_types. An agent gets no help understanding what event_types values are valid, why saga_id is required, or how limit affects retrieval.

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

Purpose4/5

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

The description clearly states the tool reads audit events and adds the important qualifier that they are append-only. It is specific about the resource and action, but it does not explicitly differentiate itself from the sibling verify_audit_chain, which also deals with audit data.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as verify_audit_chain, get_saga_timeline, or list_actions. There is no mention of when it should or should not be used, making routing decisions left entirely to the agent.

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

get_policy_decisionsB

Read durable governance decisions and safety overrides for one tenant-owned saga.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
saga_idYes

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It states the operation is a read, but does not mention whether it requires special permissions, what happens for a nonexistent saga_id, how pagination via limit behaves, or whether results are ordered. The term 'durable' adds a little context but not enough.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the operation type and object. Every word contributes meaning, and there is no redundant filler or repetition of the tool name.

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

Completeness2/5

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

The tool has no output schema, no annotations, 0% parameter description coverage, and many closely-related siblings. The one-sentence description is not sufficient to fully guide an agent on invocation semantics, parameter meaning, or expected results. This is a meaningful gap for a tool that reads governance decisions and safety overrides.

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

Parameters2/5

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 for parameter meaning. It implies saga_id identifies a tenant-owned saga, but it never names or explains saga_id or limit, nor does it describe the default/maximum behavior of limit. The schema only provides structural constraints, not semantic intent.

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 uses a specific verb ('Read') with a clear resource ('durable governance decisions and safety overrides') and scopes it to 'one tenant-owned saga', which clearly differentiates it from sibling tools like get_policy_status or get_audit_events. An agent can understand what the tool returns and for which entity without opening the schema.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over alternatives. With 17 sibling tools, including get_policy_status and get_audit_events, the absence of any when-to-use or when-not-to-use guidance leaves the agent to infer the tool's role from its name alone.

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

get_policy_statusB

Inspect the effective governance backend, revision, budgets, approval threshold, and rule ids for the caller tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'Inspect' conveys a read-only operation and 'for the caller tenant' sets the scope, which is useful. However, it does not mention authorization requirements, side effects, or the impact of supplying tenant_id.

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

Conciseness5/5

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

A single dense sentence that front-loads the operation and lists the inspected attributes without wasted words. The structure is highly scannable for an agent.

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

Completeness2/5

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

The tool has no output schema, no annotations, and an undocumented optional parameter. The description tells what is inspected but omits tenant_id semantics, usage context, and any behavioral caveats, leaving the agent to guess for correct invocation.

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

Parameters2/5

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

There is one optional nullable tenant_id parameter with 0% schema description coverage, and the description never explains how to use it. It mentions 'caller tenant' but does not clarify whether tenant_id changes the target tenant, what null means, or whether cross-tenant inspection is possible.

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 uses a specific verb ('Inspect') with a precise resource: the effective governance backend, revision, budgets, approval threshold, and rule ids. This clearly distinguishes it from sibling tools like get_policy_decisions or get_audit_events.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as get_policy_decisions. The description implies a status inspection use case, but it never states conditions, exclusions, or preferred alternatives.

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

get_sagaA

Inspect saga, workflow DAG, checkpoints, action versions, results, approvals, and recovery state.

ParametersJSON Schema
NameRequiredDescriptionDefault
saga_idYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. The word 'Inspect' signals a read-only operation, and the enumerated facets clarify what can be viewed, but the description does not mention side effects, error behavior, or whether inspecting recovery state triggers any recovery computation.

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

Conciseness5/5

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

The description is a single sentence with the verb and resource front-loaded. Every listed item is substantive, and there is no filler or redundant phrasing.

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?

Given that no output schema is provided, the description compensates by listing the major return categories: saga, workflow DAG, checkpoints, action versions, results, approvals, and recovery state. It omits error cases and whether the response is a full dump or summary, but for a single-parameter inspect tool the coverage is strong.

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?

The single parameter saga_id is self-explanatory from its name and title, and the description's 'Inspect saga' connects it to the target saga. The description does not add identifier format or lookup semantics, but with one simple string parameter, the schema and parameter name carry most of the meaning.

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

Purpose4/5

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

The description opens with the verb 'Inspect' and a specific resource ('saga'), then enumerates the state facets included: workflow DAG, checkpoints, action versions, results, approvals, and recovery state. This makes the tool's purpose clear and helps distinguish it from narrower siblings like get_action, though it does not explicitly name an alternative.

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

Usage Guidelines3/5

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

The description implies this is the comprehensive read/inspection tool for saga state, giving an agent a reason to use it when broad state is needed. However, it does not explicitly contrast with get_saga_timeline or get_action, nor does it state when not to use this tool.

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

get_saga_timelineC

Inspect a payload-safe timeline combining steps, workflow nodes, audit evidence, and integrity status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
saga_idYes

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Inspect' implies a read-only operation and 'payload-safe' hints at behavioral handling of data, which adds some context beyond the schema. However, it does not explain what 'payload-safe' means, whether any state is modified, how pagination works, or what integrity status entails.

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?

The entire description is a single front-loaded sentence that communicates the primary purpose and the main content of the response. It is concise and avoids filler, though the term 'payload-safe' introduces some ambiguity that could be clarified without added length.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and two parameters including a non-obvious limit, the description is too thin. It names what the timeline combines but does not describe return shape, pagination, parameter effects, or how this tool relates to closely named siblings. The agent would need to guess several important operational details.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate by explaining either parameter. 'saga_id' is inferable from the tool name and schema, but 'limit' is completely unexplained, including its default and maximum behavior. The description adds no meaning beyond the raw parameter names and types.

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

Purpose4/5

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

The description uses the specific verb 'Inspect' and names the resource ('saga timeline') along with the components it combines: steps, workflow nodes, audit evidence, and integrity status. This distinguishes it from sibling tools like get_saga or get_audit_events by signaling a merged view, though it does not explicitly name a sibling to differentiate against.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as get_audit_events, verify_audit_chain, or get_saga. There is no explicit context for when this combined timeline is appropriate or when it is not, leaving the agent to infer usage solely from the name and description.

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

list_actionsA

List active action contracts, schemas, semantic effects, risk, hashes, and execution policies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description must disclose behavior on its own. 'List' implies a read-only operation, and the description enumerates what is returned, which is helpful. However, it does not mention authorization requirements, pagination, filtering behavior, or how 'active' is determined.

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

Conciseness5/5

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

A single sentence that front-loads the verb and resource while compactly enumerating the returned facets. There is no filler or redundancy.

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?

With no parameters, no output schema, and no annotations, the description does the necessary work by naming the six content types returned and signaling this is a listing operation. It is reasonably complete, though it could be stronger with a note on response shape or the meaning of 'active'.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so there is no parameter semantic burden. The description adds useful context by enumerating the categories of data returned, which is the main information an agent needs.

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

Purpose4/5

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

The description uses a specific verb 'List' and names the resource: active action contracts, schemas, semantic effects, risk, hashes, and execution policies. This clearly identifies the tool's function and implies a broad inventory view that distinguishes it from singular tools like get_action, though it does not explicitly name a sibling.

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

Usage Guidelines3/5

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

The phrase 'active action contracts' gives implied context that this is for surveying currently active actions rather than retrieving a single action or checking policies. However, it provides no explicit when-to-use guidance or exclusions pointing to alternatives such as get_action or get_policy_status.

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

plan_saga_stepB

Persist a version-pinned workflow node; governance may add an approval gate or reject the plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
inputYes
actionYes
saga_idYes
depends_onNo
approval_requiredNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose persistence, version pinning, and the possibility of governance adding an approval gate or rejecting the plan, which is useful. However, it omits permissions, return behavior, failure semantics, and reversibility.

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

Conciseness5/5

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

A single compact sentence that front-loads the verb and resource. Both clauses contribute distinct information, and there is no filler or repetition.

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

Completeness2/5

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

For a tool with no output schema and no annotations, one sentence is not enough. An agent cannot determine what response to expect, how 'reject the plan' manifests, how parameters map to behavior, or what prerequisites exist before calling this tool.

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

Parameters1/5

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

The schema has six parameters with 0% description coverage, and the description names none of them. saga_id, action, input, depends_on, approval_required, and key are left entirely to schema titles and types, so the description adds no parameter-level meaning.

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

Purpose4/5

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

The description uses 'Persist' with 'workflow node' to state a specific action and resource, and the governance clause adds meaningful context. However, it does not explicitly distinguish this from siblings like execute_saga_step or approve_saga_step, so the differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

The phrasing implies this is for the planning/persistence phase of a saga step rather than execution or approval, but it gives no explicit when-to-use or when-not-to-use guidance. No alternatives are named, and the conditions under which governance might reject the plan are left unclear.

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

retry_saga_stepC

Return a failed/rejected/blocked workflow node to scheduling after current governance checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
node_idYes
saga_idYes

TDQS

C2.9/5.0
Behavior3/5

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

The description reveals that the operation is a state transition subject to governance checks, which is a meaningful behavioral trait for a mutation tool. However, it does not disclose failure modes, side effects, idempotency, or what happens if governance checks fail. With no annotations, the burden is higher, and this short phrase is only partially sufficient.

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?

The description is a single 13-word sentence with no filler. It front-loads the core action and condition, though it sacrifices helpful detail for brevity.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and three undocumented parameters, this description leaves too many gaps: parameter meanings, return value, error conditions, and the precise role of governance checks. It is enough to understand the basic intent but not to invoke the tool with confidence.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no explanation for saga_id, node_id, or force. The 'force' boolean is especially mysterious—it could bypass governance checks or force scheduling, but the text does not say. The agent cannot infer parameter semantics from this definition.

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

Purpose4/5

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

The description names the action ('Return ... to scheduling'), the target ('failed/rejected/blocked workflow node'), and the condition ('after current governance checks'). It clearly separates the tool from execute_saga_step and trigger_rollback by focusing on retrying blocked/failed nodes. It does not explicitly contrast it with approve_saga_step, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

It implies use for nodes in failed/rejected/blocked states that should be re-scheduled after governance checks. It does not specify alternatives or exclusion criteria, such as when to use run_ready_steps or execute_saga_step instead. The absence of explicit when-not guidance keeps this at the implied-usage level.

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

rollback_sagaC

Compensate saga steps in reverse order; rollback remains available as the safety path.

ParametersJSON Schema
NameRequiredDescriptionDefault
saga_idYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It reveals that steps are compensated in reverse order, but it does not state side effects, idempotency, failure handling, whether compensation is asynchronous, or what happens when a step cannot be compensated.

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?

The description is a single efficient sentence with no filler. The core action is front-loaded, and the second clause adds a useful distinction. It is concise, though somewhat under-specified for the information it needs to convey.

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

Completeness2/5

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

Despite having only one parameter and no output schema, the description is not complete enough. It omits failure behavior, return semantics, and any practical guidance about how compensation relates to rollback, which is essential for a saga-management tool with no annotations.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention saga_id at all. The agent must rely entirely on the schema's minimal field title and minLength, with no guidance on where to obtain the saga_id or what format is expected.

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

Purpose4/5

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

The description states a specific action ('Compensate saga steps') with a clear scope ('in reverse order'), which goes beyond a mere restatement of the name. It also nudges differentiation from a rollback path, though it does not explicitly name a sibling tool.

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

Usage Guidelines2/5

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

The phrase 'rollback remains available as the safety path' hints at an alternative, but it does not specify when to use rollback_saga versus trigger_rollback or other saga tools. There is no explicit condition, prerequisite, or exclusion guiding tool selection.

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

run_ready_stepsC

Re-evaluate current governance and execute ready DAG nodes in bounded dependency waves.

ParametersJSON Schema
NameRequiredDescriptionDefault
saga_idYes
max_stepsNo
max_parallelNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal bounded wave execution and governance re-evaluation, but it omits crucial traits: whether execution mutates state, whether steps can be rolled back, how failures are handled, or whether execution is idempotent. Too much is left to inference for a tool that executes work.

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

Conciseness3/5

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

The description is a single compact sentence and front-loads the primary action. However, phrases like 'current governance' and 'bounded dependency waves' are jargon-heavy and under-specified, so the brevity comes at the cost of clarity. It is concise but not optimally informative.

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

Completeness2/5

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

This is a non-trivial tool: it evaluates governance, executes DAG nodes, has multiple bounded execution parameters, and has no output schema or annotations. The description does not explain return behavior, error conditions, relationship to other saga tools, or side effects. It is insufficient for an agent to invoke the tool confidently and correctly.

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

Parameters2/5

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 hints at 'bounded' waves, which loosely maps to max_steps and max_parallel, and 'current governance' implies the saga_id context, but it never explicitly explains what each parameter means or how they interact. This is minimal compensation, not adequate parameter guidance.

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

Purpose4/5

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

The description names a clear action—re-evaluate governance and execute ready DAG nodes—and introduces distinctive concepts like bounded dependency waves that suggest a batch execution engine rather than a single-step executor. However, it does not explicitly distinguish itself from sibling execute_saga_step, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

The description implies the tool is for executing ready nodes in a DAG, but it gives no explicit guidance about when to choose this over execute_saga_step, plan_saga_step, or related saga tools. There are no stated preconditions, exclusions, or alternative routing cues.

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

trigger_rollbackB

Immediately start compensation after a client-detected failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
saga_idYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden, but it only says compensation starts immediately. It does not state side effects on the saga, whether the operation is reversible/idempotent, whether prerequisites like a failed state exist, or whether it returns synchronously.

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

Conciseness5/5

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

One sentence with no filler; the key trigger condition and action are front-loaded. Nothing needs to be cut.

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

Completeness2/5

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

For a mutating control operation with no annotations and no output schema, the description is too thin: it lacks state-transition behavior, return/acknowledgement semantics, and any guidance on the rollback_saga sibling. It is minimally usable but not complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to explain that saga_id identifies the failed saga to compensate; it never mentions the parameter. The parameter name and title are mildly self-explanatory, but the description adds no parameter-level meaning.

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

Purpose4/5

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

The description states a specific action—'start compensation'—and a trigger condition ('after a client-detected failure'), so an agent knows the tool initiates a rollback. It is not a tautology, but it never distinguishes itself from the nearby sibling rollback_saga, so it earns 4 rather than 5.

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

Usage Guidelines4/5

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

The phrase 'after a client-detected failure' gives a clear context for when this tool is appropriate. It does not mention alternatives or exclusions, leaving the agent to infer when rollback_saga, retry_saga_step, or commit_saga would be preferable.

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

verify_audit_chainC

Verify the per-saga SHA-256 audit hash chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
saga_idYes
event_typesNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior, but it only states the operation's purpose. It does not say whether the tool is read-only, what it returns on success or failure, whether it computes or just retrieves, or whether any side effects occur. 'Verify' implies inspection, but the actual behavioral contract is left unspecified.

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

Conciseness3/5

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

The description is very short and front-loaded with the main verb, which is superficially concise. However, it under-specifies crucial details, so the brevity comes at the cost of usefulness; it has no structure beyond a single purpose statement.

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

Completeness2/5

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

The tool has three parameters, no annotations, no output schema, and many sibling audit tools, so a complete description would need to cover usage context, parameter meaning, and return behavior to be actionable. The provided one-liner leaves all of these gaps, making it inadequate for reliable agent selection and invocation.

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

Parameters1/5

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

The schema description coverage is 0%, and the description does not mention saga_id, limit, or event_types. It only implies the saga scope through the phrase 'per-saga,' leaving all three parameters—including the required saga_id and the filter semantics of event_types—undocumented at the description level.

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

Purpose4/5

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

The description names a specific verb ('Verify'), resource ('per-saga SHA-256 audit hash chain'), and scope ('per-saga'), so the core purpose is clear. It does not explicitly differentiate itself from sibling tools like get_audit_events, but 'verify' is distinct enough from 'get' that an agent can infer a verification/integrity-check role.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives such as get_audit_events or get_saga_timeline. There are no context cues, exclusions, prerequisites, or examples, so an agent has no help selecting it over similar audit-related tools.

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

TDQS

B3.2/5.0
Disambiguation3/5

Most tools have distinct purposes, but several pairs create real ambiguity: trigger_rollback vs rollback_saga both initiate compensation, and execute_saga_step vs run_ready_steps overlap as execution entry points. The descriptions help clarify intent, but an agent could easily select the wrong tool in failure and execution scenarios.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern, such as begin_saga, get_saga, plan_saga_step, and commit_saga. The naming is predictable and clearly signals the resource being acted on, with no mixing of conventions.

Tool Count4/5

At 18 tools, the server is on the heavier side but each tool addresses a distinct facet of saga orchestration, governance, audit, and action management. The count feels slightly high but is justified by the domain complexity.

Completeness4/5

The saga lifecycle is well covered: begin, plan, execute, approve, retry, checkpoint, commit, rollback, and inspect. Minor gaps exist, such as no list_sagas endpoint for enumerating existing sagas and no action registration tools, but agents can work around these limitations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Safe, reversible tool execution for AI agents. It sits between an agent and its tool servers, adding contracts, dry-run planning, policy, approvals, saga execution, and rewind.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to securely call MCP tools with risk scoring, checkpoints, rollback, and approval workflows.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides transactional intelligence for AI agents, enabling safe tool execution with pre-flight invariant checks, sub-second filesystem snapshots/rollback, causal tracing, belief contradiction detection, and 15 native MCP tools for Claude Code.
    15
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ananthaprakashb/semantic-saga-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server