Skip to main content
Glama
askadvaith

MCP State Sidecar Server

by askadvaith

MCP State Sidecar Server

PyPI version PyPI - Python Version License: MIT MCP Registry

An MCP-native state sidecar that externalises workflow state for distributed agent deployments.

Quite a simple idea really; instead of storing state inside agents (which breaks when processes crash, scale horizontally, or span multiple frameworks), agents write to and read from this sidecar over the Model Context Protocol (MCP). The sidecar is itself an MCP server; agents call its tools exactly the same way they call any other tool!

The server itself is built with distributed environments in mind, and natively handles concurrency, crash resilience and atomic claims in addition to being a common interface for state management between agents.

Features

  • Durable Key-Value Store: CRUD operations with optional TTL (Time-To-Live).

  • Workflow Lifecycle Registry: Centralised coordination (create, claim, checkpoint, and resume) for distributed multi-agent workers without out-of-band communication.

  • TTL Leases & Locks: Concurrency control to prevent race conditions and split-brain scenarios.

  • Audit Logging & Session Snapshotting: Audit state transitions and persist session contexts.

  • Multiple Backends: SQLite (with WAL mode & serialisation) and high-concurrency Redis currently supported.


Related MCP server: nano-vm-mcp

Installation

Install the package via pip or your favorite Python package manager:

pip install mcp-state-sidecar

If you want to use the Redis backend:

pip install mcp-state-sidecar[redis]

Building from Source

To build and install the package from source:

  1. Clone the repository:

    git clone https://github.com/askadvaith/MCP-State-Sidecar.git
    cd MCP-State-Sidecar
  2. Install build dependencies:

    pip install --upgrade build
  3. Build the wheel and source distribution:

    python -m build
  4. Install the package locally:

    pip install dist/mcp_state_sidecar-*.whl

    Or install the package in editable mode for active development:

    pip install -e .

Quick Start

Running the Server

In a multi-agent distributed environment, you would typically run the state sidecar as an HTTP SSE service so multiple remote agents and clients can connect to it concurrently.

HTTP SSE Mode (Primary for Distributed Environments)

Start the SSE server to listen on a network port:

mcp-state-sidecar-http

By default, the server binds to 0.0.0.0 and listens on port 8000. The MCP endpoint is available at http://localhost:8000/mcp.

Stdio Mode (For Subprocess / Local Agent Execution)

Launch the server via standard input/output:

mcp-state-sidecar

Configuration

The server is configured entirely using environment variables:

Environment Variable

Default

Description

STATE_BACKEND

sqlite

Storage backend: sqlite or redis

DB_PATH

state_sidecar.db

Path to the SQLite database file

REDIS_URL

redis://localhost:6379

Redis connection URL

SIDECAR_HOST

0.0.0.0

IP host to bind the HTTP SSE server

SIDECAR_PORT

8000

Port for the HTTP SSE server


Tool Reference

Group 1 — Key-Value Store

  • state_set(key, value, ttl_seconds?, agent_id?): Upsert a JSON-serialisable value with optional TTL.

  • state_get(key): Retrieve a value (returns found=False if missing or expired).

  • state_delete(key): Delete a key.

  • state_list(prefix?): List all live keys, optionally filtered by prefix.

Group 2 — Workflow Lifecycle

  • workflow_create(name, tags?): Register a workflow; returns a unique run_id.

  • workflow_discover(tags?, status?): Find workflows filtered by tags or status.

  • workflow_claim(run_id, agent_id): Atomically claim a created workflow.

  • workflow_checkpoint(run_id, step, output): Persist step output and advance the step counter.

  • workflow_resume(run_id): Get full resume context including last step and all step outputs.

  • workflow_status(run_id): Get lightweight status (status, last step, and timestamps).

  • workflow_list(): List all registered workflows.

Group 3 — Lease & Concurrency Control

  • lease_acquire(resource_id, holder_id, ttl_seconds): Attempt to acquire an exclusive lock.

  • lease_release(resource_id, holder_id): Voluntarily release a held lease.

  • lease_renew(resource_id, holder_id, ttl_seconds): Extend lease duration without releasing.

Group 4 — Sessions & History

  • session_save(session_id, context): Save a snapshot of workflow context.

  • session_restore(session_id): Retrieve saved context after crash or handoff.

  • history_log(key?, n?): Retrieve the last N state-transition records with timestamps and writer IDs.

Group 5 — Observability

  • sidecar_health(): Liveness, backend type, uptime, and database metrics.

  • sidecar_reset(): Irreversibly wipe all data.


License

This project is licensed under the MIT License. See LICENSE for details.

Available Tools

19 tools
history_logB

Return the last N state-transition records in reverse chronological order.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
entriesYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It implies a read-only operation by stating 'Return', but does not explicitly confirm non-destructiveness, rate limits, or behavior for large N. Disclosure is minimal.

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?

Single sentence, no filler, front-loaded with verb and resource. Every word contributes meaning.

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?

The description covers the core functionality but lacks detail on the 'key' parameter and usage context relative to siblings. Although an output schema exists, the missing parameter explanation reduces completeness.

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%. The description explains the 'n' parameter implicitly via 'last N', but completely omits the 'key' parameter, leaving its purpose and permissible values undefined. This is insufficient for correct invocation.

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 clearly states it returns state-transition records, specifies the count (last N), and the order (reverse chronological). It is specific and distinguishes itself from siblings like state_get or state_list, which focus on current state.

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 provides no guidance on when to use this tool versus alternatives such as state_get or state_list. No exclusions, prerequisites, or usage conditions are mentioned.

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

lease_acquireA

Try to acquire an exclusive, TTL-based lease on a named resource.

Use this to prevent split-brain when multiple agents could simultaneously work on the same resource. Only one holder can hold the lease at a time.

If the current holder crashes, the lease expires automatically after ttl_seconds and another agent can acquire it.

Returns acquired=True on success with the expiry timestamp. Returns acquired=False with the current holder's ID on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
holder_idYes
resource_idYes
ttl_secondsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
holderNo
reasonNo
acquiredYes
expires_atNo
resource_idYes

TDQS

A4.5/5.0
Behavior5/5

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

No annotations provided, but the description fully discloses behavior: exclusive lease, TTL-based, automatic expiry on crash, and return values (acquired=True with expiry timestamp, acquired=False with holder ID). This provides thorough transparency beyond structured data.

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?

Three concise sentences, front-loaded with the action, and structured with clear sections. No wasted words; every sentence adds value.

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

Completeness5/5

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

Covers all necessary aspects: purpose, usage scenario, behavior, and outcomes. With an output schema present, return value explanation is sufficient. Complete for a tool with 3 parameters.

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 0%, so the description must add meaning. It implies the roles of resource_id, holder_id, and ttl_seconds through context ('named resource', 'holder', 'TTL-based'), but does not explicitly list or describe each parameter. Adequate but not explicit.

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?

Description clearly states the action: 'Try to acquire an exclusive, TTL-based lease on a named resource.' It uses a specific verb and resource, and distinguishes itself from sibling tools like lease_release and lease_renew.

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?

Explicitly states when to use: 'Use this to prevent split-brain when multiple agents could simultaneously work on the same resource.' While it doesn't explicitly list when not to use, the context and sibling tools imply it's for acquiring, not releasing or renewing.

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

lease_releaseA

Voluntarily release a lease this agent holds.

Only the current holder can release their own lease (holder_id must match). No-op if the lease has already expired or belongs to someone else.

ParametersJSON Schema
NameRequiredDescriptionDefault
holder_idYes
resource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
releasedYes
resource_idYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses mutation, holder_id validation, and no-op behavior under certain conditions, offering good transparency.

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?

Three concise sentences, front-loaded with purpose. No wasted words.

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 the presence of an output schema, the description does not need to detail return values. Covers purpose, usage conditions, and no-op behavior. Lacks explicit error handling info but is reasonably complete.

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 0%, so description must compensate. It clarifies that holder_id must match the current holder, but resource_id is only implicitly the lease identifier. Adds some meaning but could be more explicit.

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 starts with 'Voluntarily release a lease this agent holds,' clearly stating the verb (release) and resource (lease). It distinguishes from siblings like lease_acquire and lease_renew.

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?

Specifies that only the current holder can release their own lease and that it is a no-op if expired or belongs to another. Provides context for when to use, though no explicit alternatives are listed.

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

lease_renewA

Extend an existing lease's TTL while still holding it.

Call this periodically from long-running agents to prevent their lease from expiring mid-execution. The holder_id must match the current holder.

ParametersJSON Schema
NameRequiredDescriptionDefault
holder_idYes
resource_idYes
ttl_secondsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
renewedYes
expires_atNo
resource_idYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must cover behavioral traits. It mentions TTL extension and holder_id matching, but does not describe error behavior, idempotency, or effect on lease duration. Adequate but incomplete.

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?

Two sentences, no redundancy, front-loaded with key action. Every sentence adds value.

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 simple renew tool with output schema present, description covers purpose, usage, and parameter constraint. Could mention what happens on failure (e.g., mismatched holder), but overall sufficient.

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 coverage is 0%, so description must compensate. It adds meaning by linking holder_id to the current holder and ttl_seconds to the new TTL, but does not detail each parameter's format or allowed values. Baseline 3 due to low coverage.

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 clearly states 'Extend an existing lease's TTL while still holding it,' which specifies the verb (extend), resource (lease), and differentiates from siblings like lease_acquire and lease_release.

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?

Provides explicit when-to-use guidance ('Call this periodically from long-running agents to prevent their lease from expiring mid-execution') and a key constraint ('holder_id must match the current holder'). Lacks explicit when-not-to-use but context is clear.

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

session_restoreC

Retrieve the workflow context saved for a session_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYes
contextNo
session_idYes

TDQS

C2.6/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits. It only states 'Retrieve', implying read-only, but fails to mention potential outcomes (e.g., returns null if session not found, any side effects).

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?

Single sentence, no superfluous text. Efficient but leaves gaps.

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 the presence of an output schema but no description of its content, the description omits essential context like return format, error handling, and data scope, making it insufficient for reliable agent use.

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 input schema has 0% description coverage, and the description adds no meaning beyond the parameter name 'session_id'. No format, constraints, or usage details provided.

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?

Description clearly states the action (Retrieve) and resource (workflow context) linked to a session_id. It conveys the core purpose effectively, though it doesn't explicitly distinguish from related tools like state_get or workflow_resume.

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 on when to use this tool versus alternatives like session_save or workflow_checkpoint. Missing prerequisites or context for usage.

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

session_saveC

Persist the full workflow context for a session_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYes
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
session_idYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavior. It only says 'persist' without detailing whether it overwrites, merges, requires specific permissions, or any side effects. No mention of return values or errors.

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 sentence, which is concise, but it lacks necessary detail for a persist operation. It could be expanded without losing conciseness.

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 the complexity (persisting full context) and presence of siblings like state_set and session_restore, the description is incomplete. It does not explain what 'full workflow context' means or how this differs from other state tools. Output schema exists but is not referenced.

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 has 0% description coverage, so description must compensate. It explains session_id (identifier) but context is vague ('full workflow context' without structure). No details on expected format or constraints.

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?

Description uses specific verb 'persist' and identifies resource as 'full workflow context for a session_id'. It clearly states the action and object, but does not differentiate from sibling tools like session_restore or state_set.

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 on when to use this tool versus alternatives such as state_set or session_restore. The description lacks context for when persistence is appropriate or what prerequisites exist.

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

sidecar_healthA

Check sidecar liveness and get backend diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
backendYes
versionNo
uptime_sYes
key_countYes
workflow_countYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations present, so description must carry full burden. It states 'check liveness' (implying safe read) but doesn't disclose what happens on unhealthy sidecar, rate limits, or cost. Minimal behavioral disclosure.

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?

Single sentence, front-loaded with key actions. Zero wasted words, highly concise.

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?

Given no parameters and an output schema (exists but not provided), description is minimal. Could benefit from explaining what 'backend diagnostics' includes or expected usage scenario. Adequate but not rich.

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?

Tool has 0 parameters (baseline 4 per instructions). Schema coverage is 100% trivially. No parameter info needed, so description adequate.

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?

Description clearly states it checks sidecar liveness and gets backend diagnostics, using specific verbs (check, get) and distinct resource (sidecar health). Distinct from sibling tools like sidecar_reset, lease_*, etc. which serve different purposes.

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?

Usage is implied—use this to check sidecar health—but no explicit guidance on when or when not to use it vs. alternatives. No prerequisites or context provided.

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

sidecar_resetA

Wipe all sidecar state: kv_store, leases, workflows, step_outputs, history, and sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
clearedYes

TDQS

A4/5.0
Behavior3/5

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

The description clearly indicates destructiveness ('Wipe') and lists what is reset, but without annotations it lacks warnings about irreversibility or potential side effects. Adequate but minimal.

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 that efficiently communicates purpose and scope with no wasted words.

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 no annotations, the description covers the tool's destructive scope fully. It lacks return value details, but output schema may compensate. Complete enough for a reset tool.

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?

No parameters exist, so the description adds no parameter info. Baseline for 0 parameters is 4; the description still adds value by explaining what is wiped.

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 strong verb 'Wipe' and specifies the exact resources affected (kv_store, leases, workflows, etc.). It clearly distinguishes from sibling tools which handle individual operations.

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?

No explicit guidance on when to use this tool versus performing individual deletions via state_delete, lease_release, etc. The description implies it's for a full reset but doesn't state prerequisites or alternatives.

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

state_deleteA

Delete a key from the state store.

Returns ok=True if the key existed and was removed, ok=False if the key was not found (idempotent — safe to call multiple times).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses idempotency and return value indicating key existence. Could be more explicit about destructive nature, but 'delete' is clear.

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?

Two sentences, front-loaded with action, no wasted words.

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

Completeness5/5

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

For a simple one-parameter tool with an output schema, the description covers core behavior, idempotency, and return value completely.

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?

The description does not elaborate on the 'key' parameter beyond the schema, which lacks a description. Schema coverage is 0%, so description should compensate but does not add meaning such as format or constraints.

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 clearly states 'Delete a key from the state store' with a specific verb and resource, differentiating it from siblings like state_get, state_set, and state_list.

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?

Notes idempotency and safety of multiple calls, providing clear usage guidance. Does not explicitly mention alternatives but sibling names imply context.

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

state_getA

Get the value stored under key.

Returns found=True and the value if the key exists and has not expired. Returns found=False and value=None if the key is missing or expired.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
foundYes
valueNo

TDQS

A4.5/5.0
Behavior5/5

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

Fully describes behavior: returns found flag, value on success, None on missing/expired. Disclosed expiration logic, no side effects implied.

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?

Three concise sentences with clear purpose and return behavior; no unnecessary words.

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

Completeness5/5

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

Covers all necessary behavior for a simple get operation; output schema handles return structure, so description is sufficient.

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 coverage is 0% so description must compensate; it only reiterates 'key' with a simple phrase, adding minimal meaning beyond the schema.

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 clearly states the tool retrieves a value by key, distinguishing it from siblings like state_set or state_delete.

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?

Implies usage for reading a value by key, but does not explicitly contrast with alternatives like state_list or mention when to avoid use.

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

state_listA

List all live (non-expired) keys, optionally filtered by prefix.

Example: state_list(prefix='fact_') returns all keys starting with 'fact_'. Returns an empty list if no keys match.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
keysYes

TDQS

A4.6/5.0
Behavior4/5

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

Discloses that only live (non-expired) keys are returned, and that an empty list is returned on no match. With no annotations, the description provides relevant behavioral context.

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?

Two sentences plus an example. Every sentence adds value. Front-loaded with main purpose. No wasted words.

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

Completeness5/5

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

For a simple listing tool with one optional parameter and an output schema (indicated by context), the description covers key behavior. No additional details needed.

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

Parameters5/5

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

Schema coverage is 0%, so description must compensate. It explains the 'prefix' parameter clearly with an example, and notes the default behavior (null returns all keys). This fully clarifies parameter meaning.

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?

Clearly states the tool lists live (non-expired) keys with optional prefix filtering. Uses specific verb 'list' and resource 'keys', and gives an example that distinguishes it from state_get or state_set.

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?

Implies when to use (listing keys with optional prefix) but does not explicitly state when not to use or mention alternatives among siblings like state_get.

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

state_setA

Set a key-value pair in the shared state store.

The value can be any JSON-serialisable type (dict, list, str, int, …). If ttl_seconds is provided, the entry will expire automatically after that many seconds. Existing entries are overwritten silently. If agent_id is provided, it is recorded in the audit history so the caller can be identified in history_log results.

Use a structured key prefix to avoid collisions in multi-workflow deployments, e.g. 'shared:my_namespace:my_key' or simply 'fact_1'.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
agent_idNo
ttl_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses key behaviors: JSON-serializable values, optional TTL expiration, silent overwrites, and audit logging via agent_id. It does not cover error conditions or rate limits, but for a set operation this is sufficient.

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 7 sentences, front-loaded with the core action, and each sentence adds value. No redundant or irrelevant information. The structure is clear and efficient.

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

Completeness5/5

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

Given the presence of an output schema (return values documented elsewhere), the description covers the operation, parameters, behaviors, and naming advice. It is complete for an agent to understand how and when to invoke state_set.

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 coverage is 0%, so description must compensate. It explains three of four parameters: value (JSON-serializable), ttl_seconds (expiry), agent_id (audit). The key parameter is discussed only in terms of naming convention, not constraints, but overall adds value beyond bare schema.

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 clearly states the action ('Set a key-value pair') and the resource ('shared state store'). It distinguishes from sibling tools like state_get (read), state_delete (delete), and state_list (list) by focusing on setting data.

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 description explains when to use the tool (for storing key-value pairs) and provides naming convention advice. It does not explicitly exclude scenarios or mention alternatives to set, but the sibling context implies distinct purposes.

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

workflow_checkpointA

Atomically persist a completed step's output and advance the step counter.

Call this immediately after each pipeline step completes, before starting the next one. A replacement agent can resume from the last checkpoint using workflow_resume().

The output can be any JSON-serialisable value (dict, list, str, …). If step N was already checkpointed, calling again with the same step overwrites the stored output (idempotent replay support).

ParametersJSON Schema
NameRequiredDescriptionDefault
stepYes
outputYes
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
stepYes
run_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Discloses atomicity, idempotency (overwrite on re-checkpoint), and valid output types (JSON-serializable). Without annotations, this covers key behaviors, but lacks details on error handling, required permissions, or side effects.

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?

Three concise sentences in two paragraphs; no wasted words. Could be more logically ordered (e.g., parameters first), but overall efficient.

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?

Covers core functionality, usage, and idempotency. Output schema exists (not shown) so return value is covered there. Missing prerequisites (workflow must exist) and failure scenarios, but still reasonably complete for a checkpoint tool.

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 coverage is 0%: no parameter descriptions in the description. While 'step' is implied in usage context, 'run_id' is not explained at all, and 'output' is described as JSON-serializable but without constraints. Description adds limited semantic value beyond the schema.

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?

Description clearly states the tool persists checkpoint data and advances step counter, with specific verb 'persist' and resource 'completed step's output'. However, it does not explicitly differentiate from siblings like state_set or workflow_create, though mentioning workflow_resume as complementary.

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?

Explicitly states 'Call this immediately after each pipeline step completes, before starting the next one', providing clear when-to-use. Mentions workflow_resume as the partner for resumption, implying when not to use directly.

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

workflow_claimA

Atomically claim a workflow for this agent.

Only succeeds if the workflow is in 'created' status. If two agents call this concurrently for the same run_id, exactly one will succeed.

After claiming, call workflow_checkpoint() as each step completes. If this agent crashes, use workflow_discover() + workflow_claim() from a replacement agent to resume — the sidecar preserves all checkpoint state.

Returns claimed=False with a reason if the workflow is already taken or does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
agent_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNo
run_idYes
claimedYes
agent_idNo

TDQS

A4.9/5.0
Behavior5/5

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

Discloses atomicity, concurrency safety (exactly one succeeds), and sidecar state preservation. No annotations provided, so description carries full burden and does so comprehensively.

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?

Seven structured sentences with front-loaded key statement. Each sentence adds value without redundancy.

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

Completeness5/5

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

Covers all essential aspects for an atomic claim tool: success conditions, concurrency, lifecycle integration, and return value indication ('claimed=False with a reason'). Output schema exists but description supplements it well.

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?

With 0% schema description coverage, the description adds meaning by identifying run_id as the workflow identifier and agent_id as the claiming agent. Missing explicit format or constraints, but context makes it clear.

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 clearly states the tool atomically claims a workflow for this agent. It specifies the resource (workflow) and action (claim), and distinguishes from siblings like workflow_create and workflow_discover by noting their roles in the lifecycle.

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?

Explicitly states when to use (first step via claim) and when it fails (if not 'created' state or already claimed). Provides sequential guidance: call workflow_checkpoint after steps, and use workflow_discover + workflow_claim for crash recovery.

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

workflow_createA

Register a new workflow and get back a unique run_id.

Call this from the orchestrator before spawning workers. The returned run_id is stored in the sidecar — workers do NOT need to receive it out-of-band; they use workflow_discover() to find it.

Tags are arbitrary key-value metadata used for discovery filtering: e.g. tags={'pipeline': 'data-etl', 'customer': 'acme', 'priority': 'high'}

Status starts as 'created'. Lifecycle: created → claimed → running → done/failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tagsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
run_idYes
statusYes

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, description fully discloses behavior: returns run_id stored in sidecar, workers don't need it out-of-band, tags for filtering, status starts as 'created'. No contradictions.

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?

Five sentences, no fluff, front-loaded with purpose, each sentence adds value (usage, lifecycle, tags details). Extremely concise yet informative.

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

Completeness5/5

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

Given many workflow siblings, description clearly differentiates this from workflow_discover and others. Covers lifecycle, sidecar integration, tags. Missing output schema details but mentions 'unique run_id'.

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

Parameters5/5

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

With 0% schema coverage, description adds full meaning: name is required, tags are arbitrary key-value metadata for discovery filtering with examples (tags={'pipeline': 'data-etl', ...}).

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?

Description states 'Register a new workflow and get back a unique run_id', which is a specific verb+resource+output. It distinguishes from siblings like workflow_discover by noting workers use discover to find it.

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?

Explicitly says 'Call this from the orchestrator before spawning workers' and explains that workers use workflow_discover instead. Provides lifecycle: created → claimed → running → done/failed.

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

workflow_discoverA

Find workflows available for a worker to pick up.

Filters by tag key/value pairs (AND semantics) and/or status. Common usage: workflow_discover(status='created') to find unclaimed work.

Workers should follow this with workflow_claim() to atomically take ownership of one of the returned workflows.

Returns an empty list if no matching workflows are found.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
runsYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adds context: returns empty list if none found, AND semantics for tags. However, it lacks details on side effects, pagination, or error behavior.

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 concise with three sentences, front-loading the main purpose, and each sentence adds value without 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?

Given an output schema exists, the description sufficiently covers purpose, usage, and return behavior. Could mention error conditions or concurrency but is largely complete.

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 coverage is 0%, so description must compensate. It explains that tags filter by key/value pairs with AND semantics and status filters by string. This adds meaning but could be more explicit about parameter structures.

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 clearly states the tool finds workflows available for a worker, specifying filtering by tags and status. It distinguishes itself from siblings like workflow_claim and workflow_list.

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?

It provides a common usage example and explicitly states the follow-up action of calling workflow_claim, guiding when to use this tool. It does not explicitly mention when not to use it.

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

workflow_listA

List all registered workflows (all statuses).

For filtered listing, use workflow_discover(status=..., tags={...}) instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
runsYes

TDQS

A4.4/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 full burden. It states the tool lists all workflows, but does not disclose any behavioral traits such as whether it requires authentication, whether it includes deleted workflows, or performance considerations. However, the tool is simple with no parameters, and the behavior is straightforward.

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 only two sentences, front-loaded with the primary purpose, and no wasted words. It efficiently conveys the essential 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?

Given the tool has an output schema and no parameters, the description is fairly complete. However, it could mention ordering, pagination, or if it returns workflows from the current workspace only. But for a simple list tool, it is adequate.

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 no parameters, so by rule the baseline is 4. The schema coverage is 100% as there are no parameters to document. The description does not add parameter-level information, but none is needed.

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 the specific verb 'List' and the resource 'registered workflows (all statuses)', clearly stating what the tool does. It also distinguishes itself from the sibling tool 'workflow_discover' by mentioning filtered listing is done via that alternative.

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?

The description provides explicit guidance: use this tool for unfiltered listing of all workflows, and for filtered listing use 'workflow_discover' instead. This directly tells the agent when to and 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.

workflow_resumeA

Get everything a replacement agent needs to resume a crashed workflow.

Returns:

  • last_step: the highest step that was successfully checkpointed

  • step_outputs: dict mapping step number (as string) to its output

  • meta: full workflow metadata (name, tags, status, agent_id, …)

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
run_idYes
last_stepYes
step_outputsYes

TDQS

A3.9/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 full burden. It indicates a read operation ('Get everything...') and lists return fields, but does not disclose potential side effects, permission requirements, or error conditions. The behavioral disclosure is partial.

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 concise, front-loaded with the purpose, and uses bullet points to clearly list return values. Every sentence adds value with no waste.

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 the output schema exists and the tool is simple (one required parameter, no nested objects), the description covers the main purpose and return structure. However, it lacks information on error handling or input constraints, which would enhance completeness.

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?

The input schema has 0% description coverage and one parameter (run_id) with no description. The tool description does not add explicit meaning for the parameter beyond the context of resuming a workflow, leaving the agent to infer the parameter's role.

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?

Description explicitly states 'Get everything a replacement agent needs to resume a crashed workflow.' It clearly identifies the action (get), the resource (resumption data for a crashed workflow), and distinguishes from sibling tools like workflow_checkpoint (which saves state) and workflow_create (which starts new).

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 description implies usage for resuming a crashed workflow, providing clear context. However, it does not explicitly mention when not to use it or suggest alternatives (e.g., workflow_create for new workflows).

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

workflow_statusA

Get the current status of a workflow — lightweight alternative to workflow_resume.

Returns the status, last completed step, assigned agent, and timestamps. Does NOT return step outputs (use workflow_resume for that).

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
run_idYes
statusYes
agent_idYes
last_stepYes
created_atYes
updated_atYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It lists the returned fields (status, last completed step, assigned agent, timestamps) and explicitly states what it does NOT return. It does not mention side effects or permissions, but for a read-only status tool this is adequate.

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 two sentences, front-loaded with the purpose, and each sentence adds value. No wasted words.

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

Completeness5/5

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

Given the simple tool with one parameter and an output schema, the description provides enough context: what the tool does, what it returns, and how it differs from a sibling. The output schema covers return details.

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 should explain the run_id parameter. However, it only mentions 'workflow' in the description, leaving the parameter undefined. No details on format or source are given.

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 clearly states 'Get the current status of a workflow', which is a specific verb and resource. It distinguishes itself from sibling workflow_resume by noting it is a lightweight alternative that does not return step outputs.

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?

The description explicitly says 'lightweight alternative to workflow_resume' and instructs to use workflow_resume when step outputs are needed, providing clear when-to-use guidance.

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. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.0
    • First observedhistory_log
    • First observedlease_acquire
    • First observedlease_release
    • First observedlease_renew
    • First observedsession_restore
    • First observedsession_save
    • First observedsidecar_health
    • First observedsidecar_reset
    • First observedstate_delete
    • First observedstate_get
    • First observedstate_list
    • First observedstate_set
    • First observedworkflow_checkpoint
    • First observedworkflow_claim
    • First observedworkflow_create
    • First observedworkflow_discover
    • First observedworkflow_list
    • First observedworkflow_resume
    • First observedworkflow_status

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct resource (history, leases, sessions, sidecar admin, state store, workflows) with clear boundaries. Even overlapping descriptions like workflow_list and workflow_discover are differentiated by purpose—list shows all, discover filters by tags/status—ensuring no ambiguity.

Naming Consistency5/5

All tools consistently use snake_case with a noun_verb pattern (e.g., lease_acquire, state_get, workflow_create). Minor deviation like sidecar_health still follows the resource-first convention. No mixing of styles or irregular verbs.

Tool Count5/5

19 tools cover multiple subsystems (leases, state, workflows, sessions, admin) without redundancy. Each tool has a clear role, and the count feels appropriate for the stated purpose of a sidecar server managing distributed state and workflow coordination.

Completeness4/5

The tool surface covers CRUD for state store, lease lifecycle, workflow creation and resumption, and admin operations. Minor gaps include no explicit tool to mark a workflow as failed/completed (only implied through checkpointing) and no update/delete for sessions. Overall, core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

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/askadvaith/MCP-State-Sidecar'

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