DBOS MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DBOS MCP Servershow my workflows from the last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DBOS MCP Server
This repository contains a Model Context Protocol (MCP) server with tools that can analyze and manage your DBOS workflows. It enables LLMs to retrieve information on your applications' workflows and steps, for example to help you debug issues in development or production. To use this server, your application should be connected to Conductor.
You may want to use this alongside a DBOS prompt (Python, TypeScript, Go, Java) so your model has the most up-to-date information on DBOS.
Setup
Install uv
Before using this MCP server, you must install uv.
For installation instructions, see the uv installation docs.
Setup with Claude Code
To use this MCP server with Claude Code, first install it:
claude mcp add dbos-conductor -- uvx dbos-mcpThen start Claude Code and ask it questions about your DBOS apps! Claude will prompt you to log in by clicking the URL it offers and authenticating in the browser.
Credentials are stored in ~/.dbos-mcp/credentials.
Related MCP server: Debugging MCP Server
Tools
Application Introspection
list_applications- List all applicationslist_executors- List connected executors for an application
Workflow Introspection
list_workflows- List/filter workflowsget_workflow- Get workflow detailslist_steps- Get execution steps for a workflow
Workflow Management
cancel_workflow- Cancel a running workflowresume_workflow- Resume a pending or failed workflowfork_workflow- Fork a workflow from a specific step
Authentication
login- Start login flow (returns URL to login page)login_complete- Complete login after authenticating
Available Tools
25 toolsbulk_cancel_workflowsA
Cancel multiple workflows at once.
Sets each workflow's status to CANCELLED. Each workflow will stop executing at its next step boundary.
Args: application_name (string, required): Name of the DBOS application workflow_ids (array of strings, required): IDs of the workflows to cancel cancel_children (bool, optional): Also cancel child workflows started by these workflows (default: false)
Returns: message (string): Confirmation message count (int): Number of workflows cancelled
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_ids | Yes | ||
| cancel_children | No | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits: 'Sets each workflow's status to CANCELLED' and 'Each workflow will stop executing at its next step boundary.' This goes beyond a simple 'cancel' and explains mutation and execution behavior. It could mention prerequisites or failure modes, but the given details are useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-sentence summary, a behavioral explanation, an Args list, and a Returns list. Each section earns its place, providing essential information without fluff. It is appropriately sized for a bulk operation tool with three parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's function, behavior, parameters, and return values ('message' and 'count'). It does not mention authentication requirements or potential partial-failure scenarios, but these are common to the tool family. Given the presence of a return schema and the clarity of execution semantics, the description is largely complete. A small gap is the lack of note about prerequisites like login, but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), but the description's 'Args' section explains each parameter: application_name is 'Name of the DBOS application', workflow_ids are 'IDs of the workflows to cancel', and cancel_children is 'Also cancel child workflows started by these workflows (default: false)'. This adds meaning beyond the schema's titles and fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Cancel multiple workflows at once.' This clearly states the tool's function and distinguishes it from the sibling 'cancel_workflow' (single cancellation). The scope is explicitly batch, which differentiates it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by stating 'Cancel multiple workflows at once,' making it clear this is for bulk operations. However, it does not explicitly name alternatives (e.g., 'use cancel_workflow for a single workflow') or exclusions. The context is clear, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_workflowsA
Delete multiple workflows at once.
Permanently deletes the workflows and their execution history.
Args: application_name (string, required): Name of the DBOS application workflow_ids (array of strings, required): IDs of the workflows to delete delete_children (bool, optional): Also delete child workflows started by these workflows (default: false)
Returns: message (string): Confirmation message count (int): Number of workflows deleted
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_ids | Yes | ||
| delete_children | No | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states 'Permanently deletes' and 'execution history', which highlights the destructive and irreversible nature. It also explains the 'delete_children' flag's effect on child workflows. However, it does not mention potential non-atomic behavior or error handling, though the core safety concern is addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary sentence, 'Args' section, and 'Returns' section. It is slightly verbose but each sentence provides necessary detail. The formatting aids comprehension, though it could condense the redundancy between the first sentence and the 'Args' content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameters, return values, and destructive behavior, which is sufficient for a delete operation. It does not mention permissions, rate limits, or what happens if some IDs are invalid, but given the output schema exists and the destructive nature is clear, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description compensates fully by defining each parameter: application_name as 'Name of the DBOS application', workflow_ids as 'IDs of the workflows to delete', and delete_children with its default behavior. This adds meaning beyond the schema's bare type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete multiple workflows at once' with a specific verb and resource, and it distinguishes itself from the sibling 'delete_workflow' by including 'multiple' and 'bulk' in both name and description. It also notes the permanent deletion of workflows and their execution history, making the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies use for bulk deletion, but it does not explicitly mention when to use this tool versus the single-delete alternative. It provides context by noting the optional 'delete_children' behavior, but lacks explicit exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_resume_workflowsA
Resume multiple workflows at once.
Resumes execution of workflows that are in CANCELLED state. You can also use this on workflows in ENQUEUED state to immediately start them, bypassing their queue.
Args: application_name (string, required): Name of the DBOS application workflow_ids (array of strings, required): IDs of the workflows to resume queue_name (string, optional): If provided, enqueue the resumed workflows onto this queue instead of running them immediately
Returns: message (string): Confirmation message count (int): Number of workflows resumed
| Name | Required | Description | Default |
|---|---|---|---|
| queue_name | No | ||
| workflow_ids | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the valid input states (CANCELLED, ENQUEUED), the effect on queue (bypass or enqueue via queue_name), and the return values. This goes beyond the bare mutation semantics and gives the agent a solid understanding of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a one-sentence summary, a short behavioral paragraph, then clearly labeled 'Args' and 'Returns' sections. Every sentence earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains the tool's purpose, target states, optional queue behavior, all parameters, and the return format. Given the tool's moderate complexity, this is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The 'Args' section adds meaning beyond the schema: it labels application_name as required, describes workflow_ids as 'IDs of the workflows to resume,' and for queue_name explains the behavioral consequence ('If provided, enqueue the resumed workflows onto this queue instead of running them immediately'). The schema itself provides only types and titles, so this is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Resume multiple workflows at once,' which is a specific verb+resource statement. It further specifies the target states (CANCELLED and ENQUEUED), which distinguishes it from sibling tools like resume_workflow (singular) and bulk_cancel_workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: 'Resumes execution of workflows that are in CANCELLED state' and 'You can also use this on workflows in ENQUEUED state to immediately start them, bypassing their queue.' While it doesn't explicitly mention alternatives like resume_workflow, the bulk nature and state-specific behavior imply the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_workflowA
Cancel a running workflow.
Sets the workflow status to CANCELLED. The workflow will stop executing at the next step boundary.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow to cancel cancel_children (bool, optional): Also cancel child workflows started by this workflow (default: false)
Returns: message (string): Confirmation message workflow_id (string): The cancelled workflow ID
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| cancel_children | No | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the state change to CANCELLED, the execution-boundary behavior, and the effect of cancel_children. It does not mention permissions or reversibility, but the core side effects are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an introductory statement, behavioral details, an Args block, and a Returns block. Every sentence serves a purpose, and the information is front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no annotations, the description covers purpose, behavior, all parameters, and return values (message, workflow_id). It provides everything an agent needs to invoke the tool correctly without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args block fully documents all three parameters: names, types, requiredness, and the default for cancel_children. This adds complete semantic meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Cancel a running workflow' and specifies that it sets the status to CANCELLED and stops at the next step boundary. This provides a specific verb and resource, clearly distinguishing cancellation from resume, delete, or bulk-cancel operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates that the tool applies to running workflows and explains the cancellation behavior, giving clear context for use. It does not explicitly name alternatives or state when not to use it (e.g., for already-completed workflows), but the guidance is sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workflowA
Delete a workflow from DBOS Conductor.
Permanently deletes a workflow and its execution history.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow to delete delete_children (bool, optional): Also delete child workflows started by this workflow (default: false)
Returns: message (string): Confirmation message workflow_id (string): The deleted workflow ID
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| delete_children | No | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly warns that the operation is permanent and deletes execution history, and it clarifies the optional delete_children parameter's effect. It does not disclose permission requirements or possible side effects beyond the mentioned ones, but it covers the critical destructive nature well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a clarifying sentence on permanent deletion, a clean Args list, and a Returns list. Every sentence adds value, and the format is easily scannable. There is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has only three parameters, two required, and an output schema, the description is nearly complete. It covers all parameters and return values. It lacks details on error conditions, permissions, or whether the deletion of children is recursive, but these are not essential for basic invocation. The description is sufficient for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only titles with no descriptions (0% schema description coverage). The description's Args section adds essential meaning for all three parameters: application_name, workflow_id, and delete_children, including types, required status, and default values. This fully compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Delete a workflow from DBOS Conductor' and 'Permanently deletes a workflow and its execution history.' This uses a specific verb and resource, and the permanent deletion detail distinguishes it from sibling tools like cancel_workflow or pause_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a workflow and its execution history should be permanently removed, but it does not explicitly contrast with alternatives like cancel_workflow or resume_workflow. There is no 'when not to use' guidance, so the usage context is clear but lacks explicit exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fork_from_failureA
Fork multiple failed workflows from a specific point.
Creates new workflows that re-execute from a chosen point, reusing the recorded outputs of all prior steps. Useful for retrying a batch of failed workflows after deploying a fix.
IMPORTANT: You must set exactly one of from_last_failure, from_last_step, from_step, or from_step_name.
Args: application_name (string, required): Name of the DBOS application workflow_ids (array of strings, required): IDs of the workflows to fork application_version (string, optional): Application version for the new workflows (defaults to current version) queue_name (string, optional): Enqueue the forked workflows onto this queue queue_partition_key (string, optional): Partition key for the queue from_last_failure (bool, optional): Fork from the last failed step (default: false) from_last_step (bool, optional): Fork from the last executed step (default: false) from_step (int, optional): Fork from this specific step number from_step_name (string, optional): Fork from the step with this function name
Returns: workflow_ids (array of strings): IDs of the newly created forked workflows count (int): Number of workflows forked
| Name | Required | Description | Default |
|---|---|---|---|
| from_step | No | ||
| queue_name | No | ||
| workflow_ids | Yes | ||
| from_last_step | No | ||
| from_step_name | No | ||
| application_name | Yes | ||
| from_last_failure | No | ||
| application_version | No | ||
| queue_partition_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description takes on the full burden. It clearly discloses that new workflows are created, prior step outputs are reused, and exactly one of the from_* parameters must be set. It does not mention permissions, reversibility, or effects on the original workflows, but core behavior is transparent and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear summary, followed by a succinct usage context, a complete parameter list, and return value explanation. Each sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations), the description covers purpose, usage, parameters, and return values. It lacks edge-case behaviors like error conditions or prerequisites, but the presence of an output schema and detailed Args make it largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides a detailed Args section explaining every parameter, including defaults and semantics, such as 'application_version' defaulting to the current version and 'queue_name' enqueueing forked workflows. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Fork multiple failed workflows from a specific point' and elaborates 'Creates new workflows that re-execute from a chosen point, reusing the recorded outputs of all prior steps.' This clearly identifies the verb, resource, and scope, distinguishing it from singular fork_workflow or resume_workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Useful for retrying a batch of failed workflows after deploying a fix' and enforces a critical constraint on the from_* parameters. However, it does not name alternative tools or provide when-not-to-use guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fork_workflowA
Fork a workflow from a specific step.
Creates a new workflow that starts from a specific step of an existing workflow, reusing the recorded outputs of all prior steps. Useful for debugging, testing fixes, or replaying workflows from a specific point.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow to fork from start_step (int, required): The step number to start from (use list_steps to find step IDs) application_version (string, optional): Application version for the new workflow (defaults to current version) new_workflow_id (string, optional): Custom ID for the new workflow (auto-generated if not specified) queue_name (string, optional): Enqueue the forked workflow onto this queue instead of running it immediately queue_partition_key (string, optional): Partition key for the queue
Returns: workflow_id (string): The ID of the newly created forked workflow forked_from (string): The ID of the original workflow start_step (int): The step number the fork starts from
| Name | Required | Description | Default |
|---|---|---|---|
| queue_name | No | ||
| start_step | Yes | ||
| workflow_id | Yes | ||
| new_workflow_id | No | ||
| application_name | Yes | ||
| application_version | No | ||
| queue_partition_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It explains the key behavior of 'reusing the recorded outputs of all prior steps' and creating a new workflow. It also notes that queue_name causes enqueuing instead of immediate execution, adding meaningful behavioral context beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, named parameters with inline explanations, and a returns section. Each sentence adds value, and the format makes it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all 7 parameters, explains the return values, and gives usage hints. For a 7-parameter tool with an output schema, this is thorough and complete, leaving no critical gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a complete Args section explaining every parameter, including guidance like 'use list_steps to find step IDs' for start_step. Since schema coverage is 0%, this fully compensates for the schema's lack of property descriptions and adds significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'fork' with the resource 'workflow' and clearly scopes it 'from a specific step.' It distinguishes from the sibling fork_from_failure by emphasizing arbitrary step selection, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Useful for debugging, testing fixes, or replaying workflows from a specific point,' providing clear usage context. It does not explicitly exclude alternatives like fork_from_failure, but the context is enough for an agent to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduleA
Get details of a specific schedule from DBOS Conductor.
Args: application_name (string, required): Name of the DBOS application schedule_name (string, required): Name of the schedule
Returns: scheduleId (string): Unique identifier scheduleName (string): Name of the schedule workflowName (string): The workflow function this schedule triggers workflowClass (string, optional): The workflow's class name, if any cronExpression (string): Cron expression defining the schedule status (string): "ACTIVE" or "PAUSED" context (string, optional): Schedule context, in a human-readable representation (omitted for private-mode applications) lastFiredAt (string, optional): When the schedule last triggered (ISO 8601) automaticBackfill (bool): Whether missed runs are automatically backfilled cronTimezone (string, optional): Timezone for the cron expression applicationName (string, optional): Name of the application that owns the schedule
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_name | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The verb 'Get details' and the absence of any mutation language imply a read-only operation, and the Returns section transparently describes what data is returned. However, it does not explicitly state that the operation has no side effects, how errors are handled (e.g., schedule not found), or any authentication requirements. For a read-only lookup this is acceptable but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear one-sentence purpose, followed by structured Args and Returns sections. However, the Returns section is quite long and largely duplicates the output schema that already exists (context shows has_output_schema: true). While it adds some nuance (e.g., 'omitted for private-mode applications'), the repeated field listing makes the description less concise than it could be. The structure is orderly, but the length is not fully justified given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter lookup tool with an output schema present, the description is mostly complete: it states the purpose, explains both parameters, and details the return fields with optionality and enums. Minor gaps include lack of explicit usage guidance (when to choose get_schedule over list_schedules) and no mention of error behavior or permissions. These are not critical for a read-only get operation, so the overall completeness is high but not maximal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the input schema provides only names and types with no meaning. The description compensates with an Args section that clearly defines each parameter: 'application_name (string, required): Name of the DBOS application' and 'schedule_name (string, required): Name of the schedule'. This gives enough semantic grounding for an agent to supply the correct values, though it could be enriched with formatting or example values. The compensation is solid but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') and resource ('details of a specific schedule from DBOS Conductor'). This clearly identifies the operation as a single-item lookup, distinguishing it from sibling tools like list_schedules (which lists schedules) and pause_schedule/resume_schedule/trigger_schedule (which modify schedule state). The word 'specific' reinforces that it targets one schedule, not a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need details about a particular schedule identified by application_name and schedule_name. However, it does not explicitly contrast with list_schedules for enumeration or mention any exclusions (e.g., 'use list_schedules to see all schedules'). No alternatives or when-not-to-use guidance is provided, leaving usage context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflowA
Get details of a specific workflow from DBOS Conductor.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow to retrieve
Returns: workflowId (string): The workflow ID status (string): PENDING, SUCCESS, ERROR, CANCELLED, ENQUEUED, DELAYED, or MAX_RECOVERY_ATTEMPTS_EXCEEDED workflowName (string): The name of the workflow function workflowClass (string, optional): The name of the workflow's class, if any workflowConfig (string, optional): The name with which the workflow's class instance was configured, if any user (string, optional): The user who ran the workflow, if specified assumedRole (string, optional): The role with which the workflow ran, if specified roles (string, optional): All roles which the authenticated user could assume (JSON array) input (string, optional): The workflow input, in a human-readable representation output (string, optional): The workflow's output, if any, in a human-readable representation error (string, optional): The error the workflow threw, if any createdAt (string): Workflow start time (ISO 8601) updatedAt (string): Last time the workflow status was updated (ISO 8601) queueName (string, optional): If this workflow was enqueued, on which queue appVersion (string): The application version on which this workflow was started executorId (string, optional): The executor to most recently execute this workflow timeoutMs (int, optional): The start-to-close timeout of the workflow in ms deadline (string, optional): The deadline of the workflow, computed by adding its timeout to its start time (ISO 8601) deduplicationId (string, optional): Unique ID for deduplication on a queue priority (int): Priority of the workflow on the queue (1-2147483647, lower is higher priority) queuePartitionKey (string, optional): If this workflow is enqueued on a partitioned queue, its partition key forkedFrom (string, optional): If this workflow was forked from another, that workflow's ID parentWorkflowId (string, optional): If this is a child workflow, the ID of the parent workflow that started it dequeuedAt (string, optional): When this workflow was dequeued from its queue (ISO 8601) wasForkedFrom (bool): Whether another workflow has been forked from this one (true on the fork's source, not on the fork itself; a fork has forkedFrom set instead) delayUntil (string, optional): If this workflow has a delayed start, the time until which it is delayed (ISO 8601) completedAt (string, optional): When this workflow completed (ISO 8601) attributes (string, optional): Application-defined attributes attached to the workflow, if any scheduleName (string, optional): If this workflow was started by a schedule, that schedule's name applicationName (string, optional): Name of the application that owns the workflow
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description relies on the word 'Get' to convey a read-only operation, but it does not explicitly state side-effect-free behavior or authorization needs. It compensates with detailed return fields but omits edge-case behavior such as what happens if the workflow ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence purpose is front-loaded, followed by clearly labeled Args and Returns sections. The return list is long, but each field includes explanatory semantics that would not be in a bare output schema, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-workflow read, the description covers both parameters and all return fields with human-readable meanings. It is slightly incomplete in that it does not describe error handling or not-found behavior, but these are minor for a simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by describing each parameter: 'Name of the DBOS application' and 'ID of the workflow to retrieve.' It also clarifies which are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get details of a specific workflow from DBOS Conductor.' This clearly differentiates from siblings like list_workflows, which return multiple workflows, and cancel_workflow, which mutates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. While the phrase 'specific workflow' implies an ID lookup, it does not mention list_workflows for listing or state when not to use it. The agent is left to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_aggregatesA
Get workflow aggregate metrics from DBOS Conductor.
Returns workflow aggregates grouped by one or more dimensions. Useful for dashboards and understanding workflow status at a glance (e.g., "how many workflows failed today?", "how many workflows are pending per queue?", "what's the worst queue-wait time per workflow name?").
Select at least one select_* flag to populate aggregate values. At least one group_by_* flag is mandatory to break the results down by dimension; a query with no group_by_* will fail.
Args: application_name (string, required): Name of the DBOS application group_by_status (bool, optional): Group results by workflow status (default: false) group_by_name (bool, optional): Group results by workflow name (default: false) group_by_queue_name (bool, optional): Group results by queue name (default: false) group_by_executor_id (bool, optional): Group results by executor ID (default: false) group_by_application_version (bool, optional): Group results by application version (default: false) group_by_application_name (bool, optional): Group results by application name (default: false) select_count (bool, optional): Include count of workflows in each group (default: false) select_min_created_at (bool, optional): Include earliest creation time (ISO 8601) in each group (default: false) select_max_queue_wait_ms (bool, optional): Include max queue wait time (ms) in each group (default: false) select_max_total_latency_ms (bool, optional): Include max end-to-end latency (ms) in each group (default: false) status (array of strings, optional): Filter to these statuses before aggregating start_time (string, optional): Filter workflows created after this time (ISO 8601) end_time (string, optional): Filter workflows created before this time (ISO 8601) completed_after (string, optional): Filter workflows completed after this time (ISO 8601) completed_before (string, optional): Filter workflows completed before this time (ISO 8601) dequeued_after (string, optional): Filter workflows dequeued after this time (ISO 8601) dequeued_before (string, optional): Filter workflows dequeued before this time (ISO 8601) name (array of strings, optional): Filter to these workflow names before aggregating app_version (array of strings, optional): Filter to these application versions executor_id (array of strings, optional): Filter to these executor IDs queue_name (array of strings, optional): Filter to these queue names workflow_id_prefix (array of strings, optional): Filter to workflow IDs starting with these prefixes time_bucket_size_ms (int, optional): Bucket aggregates into time windows of this many milliseconds schedule_name (array of strings, optional): Filter to workflows started by these schedules
Returns: aggregates: Array of aggregate objects, each containing: - group (object): Map of dimension names to values. Keys are snake_case: status, name, queue_name, executor_id, application_version, application_name (e.g., {"status": "ERROR", "name": "processOrder"}). If time_bucket_size_ms is set, each group also carries a time_bucket key whose value is the bucket's start time as Unix epoch milliseconds (a string), not ISO 8601. - count (int, optional): Number of workflows matching this group (if select_count) - minCreatedAt (string, optional): Earliest creation time, ISO 8601 (if select_min_created_at) - maxQueueWaitMs (int, optional): Max queue wait time in ms (if select_max_queue_wait_ms) - maxTotalLatencyMs (int, optional): Max end-to-end latency in ms (if select_max_total_latency_ms) application (string): Name of the application queried
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ||
| end_time | No | ||
| queue_name | No | ||
| start_time | No | ||
| app_version | No | ||
| executor_id | No | ||
| select_count | No | ||
| group_by_name | No | ||
| schedule_name | No | ||
| dequeued_after | No | ||
| completed_after | No | ||
| dequeued_before | No | ||
| group_by_status | No | ||
| application_name | Yes | ||
| completed_before | No | ||
| workflow_id_prefix | No | ||
| group_by_queue_name | No | ||
| time_bucket_size_ms | No | ||
| group_by_executor_id | No | ||
| select_min_created_at | No | ||
| select_max_queue_wait_ms | No | ||
| group_by_application_name | No | ||
| select_max_total_latency_ms | No | ||
| group_by_application_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden and does so thoroughly. It documents required flag combinations, failure behavior, return shape details, and a subtle format caveat that time_bucket values are Unix epoch millisecond strings rather than ISO 8601. This richly exceeds the minimum needed for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: a front-loaded summary, usage guidance, a complete Args list, and a return-value breakdown. The structured layout makes the high parameter count navigable rather than overwhelming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 25 parameters, no annotations, and zero schema descriptions, the description is exceptionally complete. It covers all required invocation constraints, parameter semantics, and return values, leaving no obvious gap an agent would need to guess about.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully by documenting all 25 parameters with types, required status, defaults, and semantics. It adds meaningful meaning beyond the bare schema, such as explaining filters like workflow_id_prefix and the meaning of time_bucket_size_ms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb-resource relationship ('Get workflow aggregate metrics') and clearly distinguishes from siblings like list_workflows or get_workflow by emphasizing grouped, dashboard-oriented summaries. Concrete example questions ('how many workflows failed today?') reinforce the tool's distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool ('useful for dashboards and understanding workflow status at a glance') and gives mandatory usage rules: at least one select_* flag and at least one group_by_* flag, with the failure consequence for missing group_by. It does not explicitly name alternatives like list_workflows for raw enumeration, but the aggregate-vs-list distinction is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_eventsA
Get events published by a workflow from DBOS Conductor.
Events are OUTBOUND: a workflow publishes them about its own state or progress via setEvent, and anything holding the workflow ID (another workflow, an HTTP handler, a client) reads them via getEvent. A workflow that never received anything can still have events.
To see messages sent TO a workflow, use get_workflow_notifications instead.
Each event has a string key and a value.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow
Returns: events: Array of event objects, each containing: - key (string): The event key - value (string): The event value, in a human-readable representation count (int): Number of events returned workflow_id (string): The workflow ID queried
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the event model, the direction of events, and even notes that a workflow that never received anything can still have events. While it doesn't discuss side effects, it clearly implies a read operation and provides behavioral context beyond a simple 'get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an opening summary, a clarifying note on event direction, an explicit alternative, and clearly labeled Args/Returns sections. It is slightly longer than strictly necessary, but every section adds useful information, and the structure aids comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's modest complexity, two simple string parameters, and the presence of an output schema, the description is complete. It covers the event model, parameter meanings, return value shape, and the relevant sibling alternative, leaving no critical gap for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by documenting both parameters in the Args section: application_name as 'Name of the DBOS application' and workflow_id as 'ID of the workflow'. This gives the agent the semantic meaning needed to populate the required fields correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get events published by a workflow from DBOS Conductor.' It also distinguishes itself from the similar sibling get_workflow_notifications by explicitly contrasting outbound events with messages sent TO a workflow, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: events are outbound, published via setEvent, and read via getEvent by anyone holding the workflow ID. It explicitly names the alternative tool for inbound messages ('To see messages sent TO a workflow, use get_workflow_notifications instead.'), giving an agent a direct routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_notificationsA
Get notifications received by a workflow from DBOS Conductor.
Notifications are INBOUND: another party sends a message to this workflow on a topic via send, and the workflow consumes it via recv. This is the tool to use for "what did this workflow receive?" — for what a workflow published about itself, use get_workflow_events instead.
Unlike events, multiple notifications can be sent on the same topic.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow
Returns: notifications: Array of notification objects, each containing: - topic (string, optional): The notification topic - message (string): The notification message, in a human-readable representation - createdAt (string): When the notification was sent (ISO 8601) - consumed (bool): Whether the notification has been consumed by the workflow count (int): Number of notifications returned workflow_id (string): The workflow ID queried
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly succeeds. It explains the inbound send/recv model, highlights a key distinction from events (multiple notifications per topic), and documents the consumed flag in the output. However, it doesn't cover ordering, pagination, or empty-result behavior, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and mostly concise, with a clear opening line, an Args section, and a Returns section. The Returns block is a bit verbose given that an output schema exists, but it doesn't feel bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's core inputs and output shape sufficiently for an agent to call it correctly. Since the tool has only two simple string parameters and the return structure is documented, missing finer details like error responses or empty-array behavior are acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section only restates the parameter names as 'Name of the DBOS application' and 'ID of the workflow,' adding little beyond the schema's titles. No format, constraints, or source guidance is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get notifications received by a workflow from DBOS Conductor.' It then explicitly differentiates the tool from get_workflow_events, so an agent can immediately tell which sibling to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'This is the tool to use for "what did this workflow receive?"' and directs users to get_workflow_events for the opposite case. This is exactly the kind of when-to-use vs. alternative guidance that helps an agent select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_applicationsB
List all applications registered with DBOS Conductor.
Returns: applications: Array of application objects, each containing: - id (string): Unique identifier - name (string): Name of the application - orgId (string): Organization ID - status (string): "AVAILABLE" or "UNAVAILABLE" - language (string, optional): Programming language of the application - gcTimeThresholdMs (int, optional): Garbage collection time threshold in milliseconds - gcRowsThreshold (int, optional): Garbage collection rows threshold (default 1000000) - globalTimeoutMs (int, optional): Global workflow timeout in milliseconds - executorTimeoutSecs (int): Seconds a disconnected executor can remain before being marked dead and having its workflows recovered (default 60) - privateMode (bool): If true, Conductor never loads application data such as workflow inputs/outputs or schedule contexts - dbosCloud (bool): Whether the application was provisioned by DBOS Cloud count: Number of applications returned
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does state the output shape in detail (applications array and count) and implies a read-only, unfiltered operation. However, it does not mention authentication, pagination/limits, or ordering, and it never explicitly states that the operation has no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The intent line is concise and front-loaded. The long Returns block is well-structured but largely duplicates the available output schema, so many lines do not earn their place in the description. It would be stronger if it cut to the scope statement and only noted non-obvious output details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list with an output schema, the description covers the essential scope and return container. It lacks usage guidance and behavior caveats like pagination, but those are less critical given the tool's simplicity. Overall it provides enough context 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty and schema coverage is 100%, so there are no parameter semantics to document. The baseline for zero-parameter tools is 4, and the description adds nothing misleading. No extra parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List all applications registered with DBOS Conductor.' It clearly identifies the operation and scope. It does not explicitly distinguish this from siblings such as list_application_versions, so it lacks direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose this tool over siblings such as list_application_versions, list_workflows, or list_executors. The description only says what it does, not the context or exclusions. An agent must infer usage from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_application_versionsA
List all versions of an application from DBOS Conductor.
Each time an application connects with a new version string, a new version is recorded. Use set_latest_application_version to control which version is considered current.
Args: application_name (string, required): Name of the DBOS application
Returns: versions: Array of version objects, each containing: - versionId (string): Unique identifier for this version - versionName (string): The version string - versionTimestamp (string): Version timestamp (ISO 8601) - createdAt (string): When this version was first seen (ISO 8601) count (int): Number of versions returned application (string): Name of the application queried
| Name | Required | Description | Default |
|---|---|---|---|
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains the version-recording behavior, the read-only nature implied by 'List all versions,' and the exact return shape. It does not cover pagination, ordering, or error behavior, but those are minor for this simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a compact Args/Returns structure with no redundant information. Every line adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-nested-objects list operation with an output schema, the description is complete. It provides the application name semantics, the version-creation rule, and detailed return fields, so an agent has everything needed to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully define the parameter. It does: 'application_name (string, required): Name of the DBOS application.' This adds precise meaning beyond the schema's bare property title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List all versions of an application from DBOS Conductor.' It clearly identifies the tool's output and distinguishes itself from related version-control behavior by referencing set_latest_application_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when versions are recorded and points to a sibling tool, set_latest_application_version, for controlling the current version. It provides useful context but does not explicitly contrast this tool with other listing tools such as list_applications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_executorsA
List executors for an application from DBOS Conductor.
Executors are running instances of your application connected to Conductor.
Args: application_name (string, required): Name of the DBOS application
Returns: executors: Array of executor objects, each containing: - executorId (string): Unique identifier for this executor - appId (string): The application ID - appVersion (string): Version of the application running on this executor - status (string): HEALTHY, DISCONNECTED, or DEAD - hostId (string, optional): Host identifier of the executor - hostname (string, optional): Hostname of the executor - createdAt (string): When this executor first registered with Conductor (ISO 8601) - updatedAt (string): When this executor's status last changed (ISO 8601). - language (string, optional): Programming language (e.g., "python", "typescript") - dbosVersion (string, optional): Version of the DBOS library - executorMetadata (object, optional): Arbitrary metadata reported by the executor count (int): Number of executors returned application (string): Name of the application queried
| Name | Required | Description | Default |
|---|---|---|---|
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. 'List' clearly signals a read-only enumeration, and the description adds context about what executors are and their possible statuses. However, it does not explicitly state that the operation has no side effects, nor does it mention authentication, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and then organized under Args and Returns headings, making it easy to scan. The Returns section is extensive, but it provides field-level semantics that an agent would need if the output schema lacked descriptions. No sentence is purely filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one required parameter and an output schema available, the description covers the essential invocation knowledge: what the tool does, what argument to provide, and what shape the result takes. It lacks explicit guidance on when to prefer this over sibling tools, but the distinct resource type makes that less critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's bare property definition. It does so by documenting application_name as '(string, required): Name of the DBOS application,' adding semantic meaning beyond the type and title. For a single-parameter tool, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pairing: 'List executors for an application from DBOS Conductor.' It clearly identifies the resource (executors), the scope (per application), and the system (Conductor), which distinguishes it from sibling list tools like list_applications, list_workflows, and list_steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: use this tool to retrieve executors running for a specific DBOS application. It does not explicitly name alternative tools or conditions for exclusion, so it stops short of a 5, but the 'for an application' qualifier makes the usage scenario unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedulesA
List schedules for an application from DBOS Conductor.
Schedules automatically trigger workflows on a cron-based schedule.
Args: application_name (string, required): Name of the DBOS application status (string, optional): Filter by schedule status (e.g., "ACTIVE", "PAUSED") workflow_name (string, optional): Filter by the workflow function the schedule triggers schedule_name_prefix (string, optional): Filter by schedule name prefix
Returns: schedules: Array of schedule objects, each containing: - scheduleId (string): Unique identifier - scheduleName (string): Name of the schedule - workflowName (string): The workflow function this schedule triggers - workflowClass (string, optional): The workflow's class name, if any - cronExpression (string): Cron expression defining the schedule - status (string): "ACTIVE" or "PAUSED" - context (string, optional): Schedule context, in a human-readable representation (omitted for private-mode applications) - lastFiredAt (string, optional): When the schedule last triggered (ISO 8601) - automaticBackfill (bool): Whether missed runs are automatically backfilled - cronTimezone (string, optional): Timezone for the cron expression - applicationName (string, optional): Name of the application that owns the schedule count (int): Number of schedules returned application (string): Name of the application queried
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| workflow_name | No | ||
| application_name | Yes | ||
| schedule_name_prefix | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and handles it well: it discloses the return envelope (schedules/count/application), field-level semantics, and the private-mode omission of the context field. It does not disclose pagination/limits, result ordering, or authentication requirements, which are relevant for a listing tool in an API with login-gated siblings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the layout is scannable: purpose, domain context, args, then returns. The Returns block is long, but nearly every field carries a type and a semantic note, so it earns its place, even though some of it duplicates what the available output schema already provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core invocation is fully specified: one required parameter and three optional filters with clear semantics. Missing pieces for a list tool are pagination/limit behavior, authentication prerequisites given the login/login_complete siblings, and differentiation from get_schedule. Return values are over-covered since an output schema already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the Args section fully compensates: all four parameters receive semantics beyond their bare type/title, application_name is flagged as required, and status gets example values ('ACTIVE', 'PAUSED') since the schema defines no enums. The only gap is that status values are not exhaustively enumerated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb ('List'), resource ('schedules'), and scope ('for an application from DBOS Conductor'). The follow-up sentence explains the domain concept — schedules automatically trigger workflows on a cron-based schedule — which helps an agent distinguish this from workflow-listing or mutation siblings like trigger_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance distinguishes this tool from the singular get_schedule sibling or the schedule mutation tools (pause_schedule, resume_schedule, trigger_schedule) that appear in the sibling list. The filter documentation implies usage scenarios but provides no when-to-use vs. when-not-to-use direction, and no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stepsA
Get execution steps for a workflow from DBOS Conductor.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow limit (int, optional): Maximum number of steps to return offset (int, optional): Number of steps to skip (for pagination)
Returns: steps: Array of step objects, each containing: - stepId (int): The unique ID of the step in the workflow - stepName (string): The name of the step - output (string, optional): The step's output, if any - error (string, optional): The error the step threw, if any - childWorkflowId (string, optional): If the step starts or retrieves the result of a workflow, its ID - startedAt (string, optional): When this step started (ISO 8601) - completedAt (string, optional): When this step completed (ISO 8601) count (int): Number of steps returned workflow_id (string): The workflow ID queried
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| workflow_id | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly discloses a read-only 'Get' operation, pagination parameters, and detailed return fields, which sets proper expectations about what the tool does and returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence followed by Args and Returns sections. The Returns section is somewhat redundant since an output schema exists, but the overall length is reasonable and the information is organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all parameters, optionality, and return shape, and an output schema exists to supplement return details. It is missing explicit guidance on ordering, pagination defaults, or error behavior, but these are minor gaps for a straightforward listing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully compensates by explaining every parameter: application_name, workflow_id, limit, and offset, including types and optionality. This is exactly the semantic detail an agent needs to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get execution steps for a workflow from DBOS Conductor', which clearly names the verb, resource, and context. This distinguishes it from siblings like list_workflows and get_workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving steps of a specific workflow, and the sibling list shows related tools. However, it does not explicitly state when to use this tool versus alternatives such as get_workflow or list_workflows, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflowsA
List workflows from DBOS Conductor with optional filters.
Args: application_name (string, required): Name of the DBOS application workflow_uuids (array of strings, optional): Filter to only these specific workflow IDs workflow_name (string or array of strings, optional): Filter by workflow function name authenticated_user (string or array of strings, optional): Filter by the user who started the workflow start_time (string, optional): Filter workflows created after this time (ISO 8601) end_time (string, optional): Filter workflows created before this time (ISO 8601) completed_after (string, optional): Filter workflows completed after this time (ISO 8601) completed_before (string, optional): Filter workflows completed before this time (ISO 8601) dequeued_after (string, optional): Filter workflows dequeued after this time (ISO 8601) dequeued_before (string, optional): Filter workflows dequeued before this time (ISO 8601) status (string or array of strings, optional): Filter by status - PENDING, SUCCESS, ERROR, CANCELLED, ENQUEUED, DELAYED, or MAX_RECOVERY_ATTEMPTS_EXCEEDED application_version (string or array of strings, optional): Filter by application version forked_from (string or array of strings, optional): Filter to workflows forked from this workflow ID parent_workflow_id (string or array of strings, optional): Filter to child workflows of this parent workflow ID queue_name (string or array of strings, optional): Filter by workflow queue name limit (int, optional): Maximum number of workflows to return offset (int, optional): Number of workflows to skip (for pagination) sort_desc (bool, optional): Sort by creation time descending (default: false, ascending) workflow_id_prefix (string or array of strings, optional): Filter to workflow IDs starting with this prefix load_input (bool, optional): Include workflow input data in response (default: false; always false for private-mode applications) load_output (bool, optional): Include workflow output data in response (default: false; always false for private-mode applications) executor_id (string or array of strings, optional): Filter by executor ID running the workflow queues_only (bool, optional): Only return workflows that are on a queue (default: false) was_forked_from (bool, optional): If true, only return workflows that other workflows have been forked from (fork sources). If false, only return workflows that have never been forked from. To find the forks themselves, use forked_from instead. has_parent (bool, optional): If true, only return child workflows. If false, only return workflows without a parent. schedule_name (string or array of strings, optional): Filter to workflows started by these schedules
Returns: workflows: Array of workflow objects, each containing: - workflowId (string): The workflow ID - status (string): PENDING, SUCCESS, ERROR, CANCELLED, ENQUEUED, DELAYED, or MAX_RECOVERY_ATTEMPTS_EXCEEDED - workflowName (string): The name of the workflow function - workflowClass (string, optional): The name of the workflow's class, if any - workflowConfig (string, optional): The name with which the workflow's class instance was configured, if any - user (string, optional): The user who ran the workflow, if specified - assumedRole (string, optional): The role with which the workflow ran, if specified - roles (string, optional): All roles which the authenticated user could assume (JSON array) - input (string, optional): The workflow input, in a human-readable representation (only if load_input=true) - output (string, optional): The workflow's output, if any, in a human-readable representation (only if load_output=true) - error (string, optional): The error the workflow threw, if any (only if load_output=true; get_workflow always returns it) - createdAt (string): Workflow start time (ISO 8601) - updatedAt (string): Last time the workflow status was updated (ISO 8601) - queueName (string, optional): If this workflow was enqueued, on which queue - appVersion (string): The application version on which this workflow was started - executorId (string, optional): The executor to most recently execute this workflow - timeoutMs (int, optional): The start-to-close timeout of the workflow in ms - deadline (string, optional): The deadline of the workflow, computed by adding its timeout to its start time (ISO 8601) - deduplicationId (string, optional): Unique ID for deduplication on a queue - priority (int): Priority of the workflow on the queue (1-2147483647, lower is higher priority) - queuePartitionKey (string, optional): If this workflow is enqueued on a partitioned queue, its partition key - forkedFrom (string, optional): If this workflow was forked from another, that workflow's ID - parentWorkflowId (string, optional): If this is a child workflow, the ID of the parent workflow that started it - dequeuedAt (string, optional): When this workflow was dequeued from its queue (ISO 8601) - wasForkedFrom (bool): Whether another workflow has been forked from this one (true on the fork's source, not on the fork itself; a fork has forkedFrom set instead) - delayUntil (string, optional): If this workflow has a delayed start, the time until which it is delayed (ISO 8601) - completedAt (string, optional): When this workflow completed (ISO 8601) - attributes (string, optional): Application-defined attributes attached to the workflow, if any - scheduleName (string, optional): If this workflow was started by a schedule, that schedule's name - applicationName (string, optional): Name of the application that owns the workflow count (int): Number of workflows returned application (string): Name of the application queried
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | ||
| end_time | No | ||
| sort_desc | No | ||
| has_parent | No | ||
| load_input | No | ||
| queue_name | No | ||
| start_time | No | ||
| executor_id | No | ||
| forked_from | No | ||
| load_output | No | ||
| queues_only | No | ||
| schedule_name | No | ||
| workflow_name | No | ||
| dequeued_after | No | ||
| workflow_uuids | No | ||
| completed_after | No | ||
| dequeued_before | No | ||
| was_forked_from | No | ||
| application_name | Yes | ||
| completed_before | No | ||
| authenticated_user | No | ||
| parent_workflow_id | No | ||
| workflow_id_prefix | No | ||
| application_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly: it documents defaults (sort_desc default false/ascending), private-mode constraints ('always false for private-mode applications'), nuanced filter semantics for was_forked_from (true/false behavior plus pointer to forked_from), and cross-tool notes like 'get_workflow always returns it'. This goes far beyond a minimal statement of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (~60 lines) but well-structured with clear Args and Returns sections and no filler prose. The purpose line is front-loaded, and parameter lines are consistently formatted. The return-field enumeration is extensive but necessary given the lack of output schema details; overall the length is justified by the 26-parameter, 30-field surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of annotations and schema descriptions, this description is essentially complete: it covers all parameters, defaults, return fields, conditional output behavior, and special cases like private-mode applications and fork/parent semantics. The only missing element is explicit sibling-tool routing, which is already scored under usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate, and it does. All 26 parameters receive type, optionality, default, and behavioral detail (e.g., status lists valid enum values, was_forked_from clarifies fork-source semantics, limit/offset explain pagination). This is a model of how parameter descriptions should augment an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List workflows from DBOS Conductor with optional filters' – a specific verb, resource, and scope. It clearly separates this from sibling tools like get_workflow (singular) and list_applications/list_steps (other resources), even without naming them. The purpose is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus siblings such as get_workflow, list_workflow_aggregates, or list_executors. The optional filters suggest a search/browse use case, but no when-to-use context or exclusion conditions are given. The agent must infer usage solely from the tool name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Start DBOS Cloud login flow.
Returns a URL that the user must open in their browser to authenticate. After authenticating, call login_complete to finish the login process.
Returns: Dictionary with url to visit and instructions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses that the tool returns a URL that must be opened in a browser and that authentication must be completed via a separate call. It also states the return format as a dictionary with URL and instructions. This is transparent about the tool's role and limitations, though it omits details like error handling or token expiration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, clearly separated sentences/paragraphs. It front-loads the purpose, then gives flow details and return info. Every sentence is useful; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with no annotations, the description covers the essential workflow, return value, and the required next step. The presence of an output schema is noted, and the description's mention of the dictionary return is sufficient. The only minor gap is the content of 'instructions,' but this is not critical for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the description has nothing to add. Per the baseline for zero-parameter tools, this earns a 4. The description correctly avoids inventing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the tool 'Start DBOS Cloud login flow,' using a specific verb and resource. It distinguishes from the sibling tool login_complete by explicitly mentioning the follow-up step. The description also specifies the return value, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the two-step process: call this tool to get a URL, then call login_complete after authenticating. This provides clear context for when this tool is needed and its relationship to the sibling login_complete, though it does not explicitly list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_completeA
Complete DBOS Cloud login after authenticating in browser.
Call this after you have opened the login URL and authenticated.
Returns: Dictionary with userName and organization on success.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the success return value (dictionary with userName and organization) but does not mention failure behavior, idempotency, or what happens if called prematurely. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a return-value note, with the action verb and target stated upfront. Every sentence adds necessary context, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description adequately covers purpose, sequencing, and return values. It is sufficiently complete for the agent to invoke it correctly within the login flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% and the description correctly focuses on usage context rather than parameter details. The baseline for zero-parameter tools is 4, and the description fulfills that by explaining the flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the action as completing the DBOS Cloud login flow after browser authentication. The verb 'complete' plus the specific resource 'DBOS Cloud login' distinguishes it from the sibling 'login' tool, which presumably initiates the flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit sequencing guidance: 'Call this after you have opened the login URL and authenticated.' This clearly states when to use the tool, though it doesn't explicitly mention alternatives or exclusions. The sibling 'login' is implicitly the prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_scheduleA
Pause a schedule, stopping it from triggering new workflows.
The schedule can be resumed later with resume_schedule.
Args: application_name (string, required): Name of the DBOS application schedule_name (string, required): Name of the schedule to pause
Returns: message (string): Confirmation message schedule_name (string): The paused schedule name
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_name | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the core effect (stops triggering new workflows) and reversibility (can be resumed later), which is helpful. However, it omits details such as whether in-flight workflows are affected, idempotency, or required permissions, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise summary sentence, a useful cross-reference to resume_schedule, and clearly formatted Args/Returns sections. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description is largely complete. It covers the action, its effect, the key counterpart tool, parameter meanings, and the return format. It lacks edge-case details (e.g., error conditions, behavior when already paused), but given the tool's simplicity and existing output schema, these omissions are acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (coverage 0%), so the description must compensate. It does so by providing meaningful definitions for both parameters: 'Name of the DBOS application' and 'Name of the schedule to pause.' This adds clear value beyond the schema's bare titles, though it could go further with guidance on sourcing these values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Pause a schedule') and adds the clarifying effect 'stopping it from triggering new workflows.' This clearly distinguishes it from sibling tools like resume_schedule and trigger_schedule, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by noting the schedule 'can be resumed later with resume_schedule,' giving the agent a direct counterpart and implying the appropriate use case. However, it does not explicitly state when not to use it or list alternatives like cancel_workflow, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_scheduleA
Resume a paused schedule, allowing it to trigger workflows again.
Args: application_name (string, required): Name of the DBOS application schedule_name (string, required): Name of the schedule to resume
Returns: message (string): Confirmation message schedule_name (string): The resumed schedule name
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_name | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention side effects, prerequisites (e.g., schedule must exist or be paused), idempotency, permissions, or behavior if the schedule is already running. This lack of edge-case behavior transparency is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a structured Args/Returns block. It is concise, front-loaded with the purpose, and contains no redundant or extraneous information. Every element contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The operation is simple (resume a schedule), and the description covers the core purpose, parameters, and return values. An output schema exists, so return details are not required. However, missing edge-case behavior and prerequisites prevent a perfect score, though these are less critical for a straightforward action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions (0% coverage), so the description's Args section fully compensates by explaining each parameter: application_name as 'Name of the DBOS application' and schedule_name as 'Name of the schedule to resume.' This adds crucial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Resume a paused schedule, allowing it to trigger workflows again.' It identifies the resource (schedule) and the effect, distinguishing it from sibling tools like resume_workflow (resumes a workflow) and trigger_schedule (triggers a schedule immediately).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a schedule is paused, but it does not explicitly state when not to use it or mention alternatives. For instance, it does not say 'to resume a workflow, use resume_workflow' or 'to trigger immediately, use trigger_schedule.' The context is clear from the name and phrasing, but no explicit guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_workflowA
Resume a workflow.
Resumes execution of a workflow that is in CANCELLED state. You can also use this on a workflow in the ENQUEUED state to immediately start it, bypassing its queue. You cannot resume a workflow in any other state.
Args: application_name (string, required): Name of the DBOS application workflow_id (string, required): ID of the workflow to resume queue_name (string, optional): If provided, enqueue the resumed workflow onto this queue instead of running it immediately
Returns: message (string): Confirmation message workflow_id (string): The resumed workflow ID
| Name | Required | Description | Default |
|---|---|---|---|
| queue_name | No | ||
| workflow_id | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains state requirements, the effect of queue_name (enqueue vs immediate), and the bypass behavior for ENQUEUED workflows. This is solid behavioral disclosure, though it doesn't cover potential edge cases like idempotency or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear main sentence, usage constraints, Args section, and Returns section. Every sentence earns its place, and the format aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers purpose, usage, parameters, and return values. The output schema and parameter documentation make it self-sufficient. It provides enough context for an agent to invoke the tool correctly without needing external information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. The Args section does exactly that, providing names, types, requiredness, and meaning (e.g., 'If provided, enqueue the resumed workflow onto this queue instead of running it immediately'). This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Resume a workflow' with specific conditions ('in CANCELLED state'). It distinguishes from sibling tools like cancel_workflow and bulk_resume_workflows by focusing on a single workflow action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: resumes CANCELLED workflows and can start ENQUEUED ones immediately. Also states exclusions ('You cannot resume a workflow in any other state'). However, it does not mention alternative sibling tools like bulk_resume_workflows, so it lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_latest_application_versionA
Set the latest version for an application in DBOS Conductor.
This controls which version is considered current. Useful for rolling back to a previous version or promoting a specific version.
Args: application_name (string, required): Name of the DBOS application version_name (string, required): The version string to set as latest
Returns: message (string): Confirmation message version_name (string): The version that was set as latest
| Name | Required | Description | Default |
|---|---|---|---|
| version_name | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It does disclose the core behavioral effect ('controls which version is considered current') and lists return values, but omits potential side effects like reversibility, what happens to previous 'latest' versions, or any required permissions. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear one-sentence purpose, a brief explanation of behavior, and neatly separated Args and Returns sections. Every sentence adds value, with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter with an output schema, the description covers parameters, return values, and use cases. It lacks explicit guidance about how this tool relates to listing versions or any prerequisites, but overall it is sufficiently complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description's Args section thoroughly explains both parameters: application_name is 'Name of the DBOS application' and version_name is 'The version string to set as latest.' This fully compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set the latest version for an application in DBOS Conductor,' a specific verb+resource statement. It further explains that this controls which version is considered current, which clearly distinguishes it from sibling tool 'list_application_versions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Useful for rolling back to a previous version or promoting a specific version,' giving clear context for when to use the tool. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_scheduleA
Manually trigger a schedule to run its workflow immediately.
This does not affect the schedule's regular cron timing.
Args: application_name (string, required): Name of the DBOS application schedule_name (string, required): Name of the schedule to trigger
Returns: workflow_id (string, optional): The ID of the triggered workflow, if one was created schedule_name (string): The triggered schedule name
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_name | Yes | ||
| application_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses that the trigger does not alter the schedule's regular cron timing and that workflow_id is optional ('if one was created'), adding valuable behavioral context beyond the basic operation. It lacks some edge-case details, but the main behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear intro sentence, a valuable clarifying caveat, and labeled Args/Returns sections. Every sentence provides useful information, with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter trigger tool, the description covers the essential aspects: action, parameters, and return values. It does not address potential edge cases (e.g., error behavior when schedule is paused) but remains reasonably complete given the scope and absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It does so by listing both parameters with clear descriptions: 'Name of the DBOS application' and 'Name of the schedule to trigger'. This provides the meaning needed to populate the arguments, although it adds no extra nuance like format or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action: 'Manually trigger a schedule to run its workflow immediately.' This identifies the verb (trigger), resource (schedule), and outcome (run workflow), effectively distinguishing it from siblings like pause_schedule or list_schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for immediate manual runs) and includes a key caveat that it does not affect cron timing. However, it does not explicitly name alternatives or state when not to use this tool, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a clearly distinct purpose, with explicit separation between single and bulk operations (e.g., cancel_workflow vs bulk_cancel_workflows) and between resource types (workflows, schedules, executors, versions, login). Even similarly named tools like get_workflow_events and get_workflow_notifications are differentiated by detailed descriptions of events vs notifications.
The vast majority of tools follow a consistent snake_case verb_noun pattern (list_workflows, get_schedule, resume_workflow), with a uniform bulk_ prefix for batch operations. The only deviations are 'login' and 'login_complete', which break the verb_noun pattern but remain readable and predictable.
At 25 tools, this is at the heavy end of the borderline range. Each tool covers a specific operational need for DBOS Conductor, but the inclusion of separate bulk variants and multiple get_workflow_* detail endpoints inflates the count beyond the typical 3-15 ideal.
The toolset provides comprehensive coverage for workflow lifecycle management (get, list, cancel, resume, delete, fork), monitoring (steps, events, notifications, aggregates), and schedule operations (list, get, pause, resume, trigger). Minor gaps include no create/delete schedule API and no direct get_application operation, but these are secondary for an admin-focused server.
Maintenance
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
Give your AI agents the tools to build, manage, and run automation workflows.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceEnables AI assistants to interact with Netflix Conductor Workflow Engine for troubleshooting workflows, managing executions, and creating/updating workflow and task definitions through natural language.192
- FlicenseAqualityDmaintenanceEnables LLMs to automatically diagnose coding errors through codebase search, test execution, and live debugger integration (DAP/V8 CDP). Provides a secure, policy-gated environment for investigating failures while preventing destructive operations.9
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with read-only access to Temporal infrastructure through 28 tools, plus an Agent Skill with expert guidance for writing correct Temporal code.355MIT
- AlicenseAqualityCmaintenanceEnables managing and debugging Azure Logic Apps through natural language, with tools for listing, debugging, creating, updating, and deleting workflows.40476MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/dbos-inc/dbos-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server