MCP WorkBoard CrunchTools
This server provides secure tools for managing users, objectives/goals, key results, and workstreams within the WorkBoard OKR and strategy execution platform.
User Management
Retrieve a specific user by ID or the current authenticated user (
workboard_get_user)List all users — requires Data-Admin role (
workboard_list_users)Create new users — requires Data-Admin role (
workboard_create_user)Update existing user information (
workboard_update_user)
Objective & Goal Management
Get objectives associated with a user (
workboard_get_objectives)Get details for a specific objective including key results (
workboard_get_objective_details)Get the current user's owned objectives (
workboard_get_my_objectives)Create new objectives with key results — requires Data-Admin role (
workboard_create_objective)Get all goals for a user (
workboard_get_goals)Get details for a specific goal (
workboard_get_goal_details)
Key Result Management
List the current user's key results with metric IDs and progress (
workboard_get_my_key_results)Update key result progress for weekly OKR check-ins (
workboard_update_key_result)
Workstream Management
Retrieve team workstreams accessible to the authenticated user (
workboard_get_workstreams)Get workstream details with all action items (
workboard_get_workstream_activities)Retrieve all workstreams for a specific team (
workboard_get_team_workstreams)Create new workstreams for a team (
workboard_create_workstream)Update workstream properties — name, dates, pace, health, priority (
workboard_update_workstream)
Security: Runs locally via stdio with no third-party services, comprehensive input validation, token protection, automated CVE scanning, and containerized deployment.
Click 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., "@MCP WorkBoard CrunchToolsshow me my current goals"
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.
MCP WorkBoard CrunchTools
A secure MCP (Model Context Protocol) server for WorkBoard OKR and strategy execution platform.
Overview
This MCP server is designed to be:
Secure by default - Comprehensive threat modeling, input validation, and token protection
No third-party services - Runs locally via stdio, your API token never leaves your machine
Cross-platform - Works on Linux, macOS, and Windows
Automatically updated - GitHub Actions monitor for CVEs and update dependencies
Containerized - Available at
quay.io/crunchtools/mcp-workboardbuilt on Hummingbird Python base image
Related MCP server: Workato MCP Server
Naming Convention
Component | Name |
GitHub repo | |
Container |
|
Python package (PyPI) |
|
CLI command |
|
Module import |
|
Why Hummingbird?
The container image is built on the Hummingbird Python base image from Project Hummingbird, which provides:
Minimal CVE exposure - Built with a minimal package set, dramatically reducing attack surface
Regular updates - Security patches applied promptly
Optimized for Python - Pre-configured with uv package manager
Production-ready - Proper signal handling and non-root user defaults
Features
User Management (4 tools)
workboard_get_user- Get a user by ID or the current authenticated userworkboard_list_users- List all users (Data-Admin role required)workboard_create_user- Create a new user (Data-Admin role required)workboard_update_user- Update an existing user
Objective Management (4 tools)
workboard_get_objectives- Get objectives associated with a user (API capped at 15)workboard_get_objective_details- Get details for a specific objective with key resultsworkboard_get_my_objectives- Get the current user's owned objectives by ID (recommended)workboard_create_objective- Create a new objective with key results (Data-Admin required)
Key Result Management (2 tools)
workboard_get_my_key_results- List current user's key results with metric IDs and progressworkboard_update_key_result- Update key result progress for weekly OKR check-ins
Workstream Management (5 tools)
workboard_get_workstreams- Get team workstreams accessible to the authenticated userworkboard_get_workstream_activities- Get workstream details with all action itemsworkboard_get_team_workstreams- Get all workstreams belonging to a specific teamworkboard_create_workstream- Create a new workstream for a teamworkboard_update_workstream- Update workstream properties (name, dates, pace, health, priority)
Installation
With uvx (Recommended)
uvx mcp-workboard-crunchtoolsWith pip
pip install mcp-workboard-crunchtoolsWith Container
podman run -e WORKBOARD_API_TOKEN=your_token \
quay.io/crunchtools/mcp-workboardConfiguration
Getting a WorkBoard API Token
Log in to your WorkBoard instance
Navigate to Admin Settings > API Configuration
Generate a JWT API token
Copy the token immediately - store it securely
Add to Claude Code
claude mcp add mcp-workboard \
--env WORKBOARD_API_TOKEN=your_token_here \
-- uvx mcp-workboard-crunchtoolsOr for the container version:
claude mcp add mcp-workboard \
--env WORKBOARD_API_TOKEN=your_token_here \
-- podman run -i --rm -e WORKBOARD_API_TOKEN quay.io/crunchtools/mcp-workboardUsage Examples
Get Current User
User: Who am I in WorkBoard?
Assistant: [calls workboard_get_user with no args]List All Users
User: List all WorkBoard users
Assistant: [calls workboard_list_users]Get User Objectives
User: Show me objectives for user 12345
Assistant: [calls workboard_get_objectives with user_id=12345]Get Objective Details
User: Get details on objective 67890 for user 12345
Assistant: [calls workboard_get_objective_details with user_id=12345, objective_id=67890]Get My Objectives
User: Show me my objectives (IDs: 2900058, 2900075, 2901770)
Assistant: [calls workboard_get_my_objectives with objective_ids=[2900058, 2900075, 2901770]]List My Key Results
User: Show me my key results
Assistant: [calls workboard_get_my_key_results]Update Key Result Progress
User: Update key result 12345 to 75
Assistant: [calls workboard_update_key_result with metric_id=12345, value="75"]Create an Objective
User: Create an objective called "Increase retention" owned by user@example.com
Assistant: [calls workboard_create_objective with name, owner, dates, and optional key_results]List Workstreams
User: Show me my workstreams
Assistant: [calls workboard_get_workstreams]Get Workstream Action Items
User: Show me the agenda for workstream 4130463
Assistant: [calls workboard_get_workstream_activities with ws_id=4130463]Security
This server was designed with security as a primary concern. See SECURITY.md for:
Threat model and attack vectors
Defense in depth architecture
Token handling best practices
Input validation rules
Key Security Features
Token Protection
Stored as SecretStr (never accidentally logged)
Environment variable only (never in files or args)
Sanitized from all error messages
Input Validation
Pydantic models for all inputs
Positive integer validation for IDs
Email validation for user creation
API Hardening
Hardcoded API base URL (prevents SSRF)
TLS certificate validation
Request timeouts
Response size limits
Automated CVE Scanning
GitHub Actions scan dependencies weekly
Automatic issues for security updates
Dependabot alerts enabled
Development
Setup
git clone https://github.com/crunchtools/mcp-workboard.git
cd mcp-workboard
uv syncRun Tests
uv run pytestLint and Type Check
uv run ruff check src tests
uv run mypy srcBuild Container
podman build -t mcp-workboard .License
AGPL-3.0-or-later
Contributing
Contributions welcome! Please read SECURITY.md before submitting security-related changes.
Links
Available Tools
22 toolsworkboard_create_activity_toolA
Create a new action item (card) on a WorkBoard workstream.
State must be "next", "doing", "done", or "pause". Priority must be "low", "med", or "high". Effort must be "easy", "medium", or "huge".
| Name | Required | Description | Default |
|---|---|---|---|
| ai_description | Yes | Description of the action item — shown as the card title (required) | |
| ai_note | No | Notes or body text for the action item (optional) | |
| ai_workstream | No | Workstream ID to place the action item in (optional) | |
| ai_team | No | Team ID to associate with (optional) | |
| ai_owner | No | Owner user ID or email (optional) | |
| ai_state | No | Initial state: next, doing, done, or pause (optional) | |
| ai_priority | No | Priority: low, med, or high (optional) | |
| ai_effort | No | Effort estimate: easy, medium, or huge (optional) | |
| ai_due_date | No | Due date as UNIX timestamp string (optional) | |
| ai_column | No | Custom Kanban column ID to place the card in (optional). Workstreams can define custom columns within each state (e.g. "Homework", "Interlocks", "Active" within "doing"). |
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 disclose behavioral traits. It only mentions creation and field constraints, but lacks details on side effects (e.g., permissions required, whether duplicates are allowed, what happens if workstream doesn't 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?
Four sentences, front-loaded with the core purpose, then constraints listed concisely. No redundant or verbose text.
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 purpose and field constraints, but does not mention what the tool returns (output schema exists but description could note the created card's ID). For a creation tool, more outcome context would be helpful.
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 coverage is 100% but the description adds value by explicitly enumerating allowed values for state (next, doing, done, pause), priority (low, med, high), and effort (easy, medium, huge), which are not listed in the schema. It also clarifies the ai_column parameter's role.
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 creates a new action item (card) on a WorkBoard workstream, distinguishing it from sibling tools like create_objective, update_activity, and get_workstream_activities.
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 lists valid values for state, priority, and effort but does not explicitly guide when to use this tool versus alternatives like update_activity or get_activities. Usage is implied by the tool name rather than described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_create_objective_toolA
Create a new objective with optional key results (requires Data-Admin token).
Provide the goal name, owner, dates, and optionally key results with targets. Each key result dict can include: metric_name, metric_start, metric_target, metric_type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Objective name (e.g. "Increase customer retention") | |
| owner | Yes | Owner's email address or user ID | |
| start_date | Yes | Start date in YYYY-MM-DD format | |
| target_date | Yes | Target completion date in YYYY-MM-DD format | |
| narrative | No | Optional description/narrative for the objective | |
| goal_type | No | "1" for Team objective (default), "2" for Personal objective | 1 |
| permission | No | Visibility setting (default "internal,team") | internal,team |
| key_results | No | Optional list of key result dicts, each with keys like "metric_name", "metric_start", "metric_target", "metric_type" |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the auth requirement and optional key results structure. With no annotations, it carries the burden but does not cover error behavior, idempotency, or other constraints.
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?
Two concise sentences with no wasted words. Front-loaded with purpose and auth requirement.
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?
With an output schema present, description covers creation purpose, required parameters, optional key results, and auth. Missing some edge cases but adequate for the tool's 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?
Schema has 100% description coverage, so the description adds limited new meaning. It summarizes required fields and explains key results, but this largely mirrors the 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?
Description clearly states the tool creates an objective with optional key results. It distinguishes itself from sibling tools (e.g., create_activity, create_user) by focusing on objectives.
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?
Mentions the required Data-Admin token, providing a usage prerequisite. Does not explicitly state when not to use or compare with alternatives, but context is clear given sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_create_user_toolA
Create a new WorkBoard user (requires Data-Admin role).
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | Yes | User's first name | |
| last_name | Yes | User's last name | |
| Yes | User's email address | ||
| designation | No | User's job title or designation |
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 transparency burden. It discloses the creation action and role requirement but omits details like return value or side effects, despite an output schema existing.
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?
A single, focused sentence that conveys the essential information without extraneous words. It is front-loaded and efficient.
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 no annotations and an output schema, the description covers the core purpose and a key prerequisite. It could mention the expected response but is adequate for a simple create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond the schema. The description does not elaborate on parameter specifics or constraints beyond their names.
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 verb 'Create', the resource 'WorkBoard user', and a prerequisite role, distinguishing it from sibling tools like workboard_create_activity_tool.
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 notes the required 'Data-Admin' role, providing clear context for when to use. However, it does not specify when not to use or mention alternatives like update_user_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_create_workstream_toolA
Create a new workstream for a team.
Requires team manager or co-manager permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| ws_name | Yes | Name of the workstream | |
| team_id | Yes | Parent team ID | |
| ws_owner | Yes | User ID of the team manager or co-manager | |
| ws_objective | No | Optional descriptive narrative or objective statement |
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 only discloses the permission requirement, lacking information on mutation behavior, error handling, or idempotency. Limited transparency for a create 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?
Two concise sentences: first states the purpose, second adds a critical prerequisite. No unnecessary words, efficiently structured.
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?
Description covers purpose and permissions but omits details like return value, constraints on ws_name, or error conditions. With an output schema present, return format is covered, but completeness is adequate rather than thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already describes all parameters. The description adds no additional semantic meaning beyond what is in the schema, resulting in a baseline score of 3.
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?
Description explicitly states 'Create a new workstream for a team,' providing a specific verb, resource, and context. It distinguishes from sibling tools like 'update' or 'get' workstreams.
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?
Mentions required permissions (team manager or co-manager) but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. Usage is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_activity_toolB
Get a single WorkBoard action item by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | Action item ID (positive integer) |
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. It only states the function without disclosing behavioral traits like read-only nature, permission requirements, or error handling. For a simple retrieval, minimal transparency is acceptable but could be improved.
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, clear sentence with no unnecessary words. It is appropriately front-loaded and concise.
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 get-by-ID operation with an output schema, the description is adequate. It could mention that it returns the action item details, but the output schema presumably covers that. The description is complete enough given the tool's simplicity.
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 coverage is 100% with the parameter description already clear. The description does not add additional semantics beyond the schema, but the baseline for high coverage is 3.
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?
Description clearly states 'Get a single WorkBoard action item by its ID', specifying verb and resource. It distinguishes from siblings like workboard_list_activities_tool which returns multiple items.
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 versus alternatives. It does not mention that users should use workboard_list_activities_tool for listing or workboard_create_activity_tool for creating. The name implies usage, but no context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_my_key_results_toolA
List all key results (metrics) the current user owns or has access to.
Use this to find metric IDs and see current progress before updating with workboard_update_key_result_tool. Returns metric names, current values, targets, and IDs.
By default, only shows current year key results. Set include_prior_years=True to see key results from previous years.
| Name | Required | Description | Default |
|---|---|---|---|
| include_prior_years | No | If True, include key results from prior years. Defaults to False (current year only). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses key behavioral traits: returns metric names, current values, targets, IDs; by default only current year results. Lacks details on pagination or ordering, but tool is simple with one optional parameter.
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?
Three sentences with front-loaded purpose, clear usage guidance, and parameter explanation. No wasted words or redundancy. Every sentence serves a distinct purpose.
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 simplicity (one optional parameter, output schema exists), the description fully covers purpose, usage, parameter, and return content. It is sufficient for an AI agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters (one boolean with description). The description adds usage context ('Set include_prior_years=True to see key results from previous years') but does not significantly extend beyond schema documentation. Baseline 3 is appropriate.
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?
Description explicitly states 'List all key results (metrics) the current user owns or has access to', clearly identifying the verb, resource, and scope. This distinguishes it from the sibling 'workboard_get_user_key_results_tool', which likely targets a different user.
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 recommended use: 'Use this to find metric IDs and see current progress before updating with workboard_update_key_result_tool.' Also explains the include_prior_years parameter behavior. However, it doesn't explicitly state when not to use it, though the context implies it's for the current user's own key results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_my_objectives_toolA
Get the current authenticated user's objectives with key results.
This is the RECOMMENDED tool when users ask about "my objectives" or "my OKRs". It automatically determines the current user and discovers their objectives from their key results — no IDs needed.
| Name | Required | Description | Default |
|---|---|---|---|
| objective_ids | No | Optional list of specific objective IDs to fetch. If not provided, objectives are auto-discovered from the user's key results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description states it retrieves objectives via auto-discovery, but does not detail potential side effects or edge cases (e.g., empty results, auth enforcement). Adequate but could be more explicit.
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?
Very concise: three short sentences front-load purpose and include critical usage guidance. No unnecessary 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?
Given the simple tool (1 optional param, output schema exists), description provides enough context for an agent to select and use it correctly. Minor gap: no mention of authentication context, but implied by 'authenticated user'.
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 covers the single parameter at 100%; description adds value by explaining the auto-discovery behavior when parameter is omitted, which aids correct invocation.
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?
Description clearly states it retrieves the current user's objectives with key results, distinguishing it from sibling tools like workboard_get_objectives_tool by emphasizing automatic user determination and no ID requirement.
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?
Explicitly recommends use when users ask about 'my objectives' or 'my OKRs', implying alternatives for other cases. It also explains the key benefit: no IDs needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_objective_details_toolA
Get full details for a single objective including all its key results.
Returns the objective name, progress, status, dates, and all key results (metrics) with their targets, progress, and update schedules.
Use workboard_get_user_tool (no arguments) to find the current user's ID.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | User ID (positive integer). Get this from workboard_get_user_tool. | |
| objective_id | Yes | Objective ID (positive integer). |
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 describes the return fields (objective name, progress, status, dates, key results) but does not explicitly mention that it is a read-only operation or state any side effects. For a read tool, this is acceptable but could be improved.
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 sentences with no filler. First sentence states purpose, second details returns, third gives a helpful hint. It is front-loaded and every sentence 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?
The description covers the main return contents and prerequisites. Since an output schema exists, the description does not need to detail every field. However, it lacks mention of error handling or status codes, but given the tool's simplicity, it is adequate.
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 coverage is 100% with parameter descriptions, but the description adds value by instructing to get user_id from workboard_get_user_tool, clarifying the parameter's source beyond the schema's type and description.
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 it gets full details for a single objective including key results, with specific verb 'Get' and resource 'objective details'. It distinguishes from siblings like workboard_get_objectives_tool by specifying 'single objective'.
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 a explicit prerequisite: use workboard_get_user_tool to get the user ID. While it does not explicitly state when not to use it, the context implies it is for retrieving details of a specific objective, which is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_objectives_toolA
Get objectives owned by a WorkBoard user by their user ID.
Returns all objectives the user owns, with full pagination. Also exposes
workstreams and status_color fields on each objective when present.
Use workboard_get_user_tool (no arguments) to find the current user's ID. Use workboard_get_team_members_tool to resolve a name or email to a user ID.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | User ID (positive integer). Get this from workboard_get_user_tool. |
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. It notes that all objectives are returned with full pagination and mentions optional fields like workstreams and status_color, which is helpful. It does not need to state read-only since the name 'get' implies it, but no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. The first sentence states the core purpose, the second adds return details, and the third provides usage guidance. It is front-loaded and efficient.
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 a single well-described parameter, existence of an output schema, and clear prerequisites, the description is complete. It covers what the tool does, what it returns, and how to obtain the required input.
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 single parameter 'user_id' has a detailed schema description (positive integer, get from workboard_get_user_tool). The tool description repeats this guidance, but does not add new semantic meaning beyond the schema. Since schema coverage is 100%, a baseline score of 3 is appropriate.
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 retrieves objectives owned by a specific user via their user ID. It distinguishes from sibling tools like workboard_get_my_objectives_tool and workboard_get_user_key_results_tool by specifying the required user ID, and it directs the user to other tools for obtaining that ID.
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 explicit guidance on prerequisite steps: using workboard_get_user_tool to find the current user's ID and workboard_get_team_members_tool to resolve a name/email. It lacks explicit instructions on when not to use this tool, but the context implies alternatives exist for the current user's objectives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_team_members_toolA
Get all members of a WorkBoard team, including their user IDs and emails.
Use this to resolve a person's name or email to their WorkBoard user_id. Combine with workboard_get_objectives_tool(user_id) to fetch their OKRs.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The WorkBoard team ID (get from workboard_get_teams_tool) |
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 bears full responsibility. It implies a read operation ('Get all members') and mentions the output fields. However, it does not explicitly state the tool is read-only, nor does it disclose potential issues like required permissions or team existence validation. The description is adequate but could be more explicit.
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 functional sentences plus a third sentence with a usage tip. Every sentence adds value, and the purpose is front-loaded. No unnecessary 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?
Given the simple one-parameter schema and existence of an output schema, the description covers the core functionality, input derivation, and a typical workflow. There is no missing critical context for a list-members tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for team_id. The tool description adds context about resolving names/emails but does not significantly enhance parameter semantics beyond what the schema already provides (e.g., indicating the ID comes from workboard_get_teams_tool). Baseline 3 is appropriate.
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 it gets all members of a WorkBoard team, including user IDs and emails. It also specifies a secondary use (resolving names/emails to user_id). This distinguishes it from siblings like workboard_get_teams_tool (lists teams) and workboard_get_user_tool (single user).
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 says when to use the tool ('resolve a person's name or email to their WorkBoard user_id') and suggests a combination with workboard_get_objectives_tool. It does not provide explicit when-not-to-use guidance or alternatives, but the context is sufficiently clear with a concrete example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_teams_toolA
Get all teams the authenticated user belongs to.
Returns team IDs, names, and owner user IDs. Use workboard_get_team_members_tool to get the full member list (with user_ids) for a specific team.
Returns: List of teams with team_id, team_name, team_owner_id, is_team_owner
| 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 provided, but the description discloses that it returns a list of teams with specific fields and is read-only (implied by 'get'). It could be more explicit about safety, but it does not contradict any annotations and is straightforward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and one list of return fields, highly concise, front-loaded with purpose, and every sentence adds essential information with zero waste.
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 no parameters and presence of output schema, the description fully covers the tool's purpose, return values, and relationship to siblings. It is complete for a simple get-all teams tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds value by explaining the return fields beyond the schema, meeting the baseline of 4 for zero-parameter tools.
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 'Get all teams the authenticated user belongs to' with specific verb (get) and resource (teams), and distinguishes from sibling tool workboard_get_team_members_tool by mentioning that the latter gets members for a specific team.
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 explicit when-to-use context (get teams for authenticated user) and explicitly names the alternative workboard_get_team_members_tool for getting full member list, giving clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_team_workstreams_toolA
Get all workstreams belonging to a specific team.
Use workboard_get_teams_tool to find team IDs first.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | Team ID (positive integer) |
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 states the operation is read-only and scoped to a team, but does not elaborate on pagination, ordering, or other behavioral traits. Adequate for a simple retrieval.
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?
Two sentences with no fluff; every sentence is essential. Front-loaded with the action, followed by helpful guidance.
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 simple inputs, presence of output schema, and no annotations, the description is nearly complete. It could mention alternatives but is sufficient for a focused retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for team_id. The description adds value by explaining how to obtain the team ID (via workboard_get_teams_tool), which goes beyond the schema's definition.
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 'Get all workstreams belonging to a specific team,' using a specific verb and resource, and distinguishes from sibling tools like workboard_get_workstreams_tool by specifying team scope.
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 prerequisite guidance with 'Use workboard_get_teams_tool to find team IDs first,' but does not provide when-not-to-use or mention the alternative general workstream tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_user_key_results_toolA
List key results (metrics) for a specific WorkBoard user by their user ID.
Use this to see KRs owned by or associated with any user — for example, to review a direct report's key results before a 1:1. Skills layer maps organizational roles (e.g. "direct report") to user IDs; this tool only knows about WorkBoard user IDs.
Use workboard_get_teams_tool and workboard_get_team_members_tool to resolve a person's name to their user ID.
By default, only shows current year key results. Set include_prior_years=True to see key results from previous years.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | User ID (positive integer). Get this from workboard_get_team_members_tool. | |
| include_prior_years | No | If True, include key results from prior years. Defaults to False (current year only). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description explains default behavior (current year only) and the optional include_prior_years parameter. Does not explicitly state read-only, but tool name and description imply retrieval. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise yet informative. Four sentences, each adding value. Front-loaded with purpose, then usage guidance, then parameter context. No 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?
Given output schema exists and parameters are fully described in schema and further in description, the tool is complete. It covers scope (any user), default filter, and hints for resolving IDs.
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 coverage is 100%, so both parameters have descriptions. The description adds value by explaining how to obtain the user_id from other tools and clarifying the default behavior of include_prior_years.
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 states it lists key results for a specific user by user ID. Distinguishes from sibling 'workboard_get_my_key_results_tool' by specifying 'any user' and from other tools by focusing on key results.
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?
Explicitly says when to use (reviewing KRs, e.g., for direct reports) and provides pointers to resolve names to IDs via other tools. Also notes limitation: only knows WorkBoard user IDs, not organizational roles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_user_toolA
Get a WorkBoard user by ID, or the current authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | User ID (positive integer). If not provided, returns the current authenticated user. |
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 states the action but omits details like permissions, error handling, or what constitutes a valid user. For a simple get tool, this is adequate but does not exceed minimal disclosure.
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 clear sentence with no wasted words. It communicates the core functionality efficiently.
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 simplicity and the presence of an output schema, the description covers the essential behavior. It explains the two retrieval modes, which is sufficient for a get-by-id tool. No critical information is missing.
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 100% description coverage for the single parameter, so the description adds no new meaning beyond the schema. The description's mention of 'current authenticated user' aligns with the schema's default behavior, but does not enhance it.
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 it retrieves a WorkBoard user by ID or the current authenticated user. It distinguishes from sibling tools like workboard_list_users_tool which returns a list, and workboard_get_my_* tools which are more specific.
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 the two modes (by ID or current user) but does not provide guidance on when to use this tool versus alternatives like workboard_list_users_tool or other get tools. It lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_workstream_activities_toolA
Get a workstream's full details including all action items.
Returns the workstream metadata plus every action item with descriptions, owners, due dates, comments, sub-actions, and attached files.
| Name | Required | Description | Default |
|---|---|---|---|
| ws_id | Yes | Workstream ID (positive integer) |
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 burden. It discloses that the tool returns 'workstream metadata plus every action item with descriptions, owners, due dates, comments, sub-actions, and attached files', clearly outlining the return content. No side effects or prerequisites are mentioned, but as a read operation, it is sufficiently 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 two sentences, front-loaded with the purpose, and contains no filler. Every sentence adds value 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 simplicity (one parameter) and the existence of an output schema, the description adequately covers the return data by listing key fields (metadata, action items with sub-fields). It provides a complete picture for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters, with ws_id described as 'Workstream ID (positive integer)'. The description provides no additional parameter semantics beyond the schema, earning the baseline score of 3.
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 'Get a workstream's full details including all action items', specifying the verb 'Get' and resource 'workstream's full details with action items'. It distinguishes from siblings like workboard_get_workstreams_tool (which likely returns a list without details) and workboard_get_activity_tool (single activity), 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 for retrieving workstream details with actions but does not explicitly state when to use this tool over alternatives like workboard_get_workstreams_tool or workboard_get_activity_tool. No exclusions or context on when not to use it are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_get_workstreams_toolA
Get team workstreams accessible to the authenticated user.
Returns all team workstreams the user has access to. Personal workstreams are not included. Optionally filter to a single workstream by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| ws_id | No | Optional workstream ID to fetch a specific workstream. |
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 burden. It mentions the access-based filtering ('accessible to authenticated user') and exclusion of personal workstreams. However, it does not disclose additional behaviors like response format, pagination, or any side effects. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three short sentences. It front-loads the core purpose ('Get team workstreams') and includes all essential information 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 simplicity (one optional parameter, output schema present), the description covers what it does, what it returns, and what it excludes. Minor omission: no mention of pagination, but not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline is 3. The description adds the word 'filter' for the ws_id parameter, which is a slight enhancement over the schema's 'fetch a specific workstream.' No significant added 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?
Description clearly states the tool retrieves team workstreams accessible to the user, distinguishing it from personal workstreams. It also notes optional filtering by ID, making the purpose specific and distinct from siblings like workboard_get_workstream_activities_tool.
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?
Description implies usage for retrieving team workstreams and excludes personal workstreams, but does not explicitly state when to use this over alternatives like workboard_get_my_key_results_tool or workboard_get_team_workstreams_tool. It provides context but no direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_list_activities_toolA
List action items accessible to the authenticated user.
Returns up to 15 action items by default. Use limit and offset for pagination. Filter by owner, state, priority, or effort to narrow results.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_owner | No | Filter by owner user ID or email (optional) | |
| ai_state | No | Filter by state: next, doing, done, or pause (optional) | |
| ai_priority | No | Filter by priority: low, med, or high (optional) | |
| ai_effort | No | Filter by effort: easy, medium, or huge (optional) | |
| limit | No | Maximum number of results (optional) | |
| offset | No | Pagination offset (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It states it returns up to 15 items by default and supports pagination/filtering. Does not disclose if results are ordered, or any read-only nature. 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?
Three concise sentences, each delivering key information: main purpose, default limit, pagination, filters. Front-loaded with primary action. No unnecessary 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?
With an output schema present, return values need not be explained. Description covers listing, pagination, and filters. Missing mention of sorting or ordering, but overall adequate for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the schema (100% coverage). The description restates filters (owner, state, priority, effort) and pagination, but adds valuable default limit of 15 not in schema. Adds marginal value beyond 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 verb 'List' and resource 'action items' are clear. It specifies 'accessible to the authenticated user', but does not explicitly distinguish from sibling tools like workboard_get_workstream_activities_tool which lists activities for a specific workstream.
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 instructions for pagination and filtering, but does not state when to use this tool versus alternatives (e.g., workboard_get_activity_tool for a single item). No exclusions or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_list_users_toolA
List all WorkBoard users (requires Data-Admin role).
Returns: List of all users
| 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 must disclose behavior. It states it lists all users and requires admin role, but lacks details on pagination, response size, or whether the list includes inactive users. This is adequate for a simple list operation but could be more 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 extremely concise: two sentences with no redundant information. Every sentence adds value: first states action and requirement, second states return type.
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 tool has an output schema but its content is not visible; the description only says 'List of all users' which is vague. For a list tool, it would benefit from specifying key fields returned (e.g., name, email, role). However, given the tool's simplicity and the presence of an output schema, the description is minimally sufficient.
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 zero parameters, so no parameter documentation is needed. The description adds no parameter info, but none is required. Schema coverage is effectively 100%.
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 'List all WorkBoard users' which specifies the verb (list) and resource (users). It distinguishes from sibling tool workboard_get_user_tool which retrieves a single user, and from create/update tools.
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 includes a role requirement ('requires Data-Admin role'), giving a clear prerequisite. However, it does not specify when to use this tool versus alternatives like workboard_get_user_tool for a specific user, or mention limitations like rate limits or data freshness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_update_activity_toolA
Update an existing WorkBoard action item.
Performs read-before-write to confirm the action item exists. Only provided fields are updated. State must be "next", "doing", "done", or "pause". Priority must be "low", "med", or "high". Effort must be "easy", "medium", or "huge".
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | Action item ID (positive integer) | |
| ai_description | No | New description — shown as the card title (optional) | |
| ai_note | No | New notes or body text (optional) | |
| ai_owner | No | New owner user ID or email (optional) | |
| ai_state | No | New state: next, doing, done, or pause (optional) | |
| ai_priority | No | New priority: low, med, or high (optional) | |
| ai_effort | No | New effort: easy, medium, or huge (optional) | |
| ai_due_date | No | New due date as UNIX timestamp string (optional) | |
| ai_column | No | Custom Kanban column ID to move the card to (optional). Workstreams can define custom columns within each state. |
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 read-before-write behavior and that only provided fields are updated, which adds useful behavioral transparency beyond the input schema.
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 with four sentences, front-loading the purpose. Each sentence contributes meaningful information 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?
The description covers core update behavior and field validations, but given the complexity of 9 parameters and no annotations, it lacks details on error conditions, permissions, or concurrency. An output schema exists, so return values are not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds general context ('Only provided fields are updated') but does not provide per-parameter meaning beyond what the schema already enumerates.
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 it 'Update an existing WorkBoard action item,' with a specific verb and resource. It distinguishes from sibling tools like workboard_create_activity_tool by focusing on updating existing items.
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 (when updating an existing action item) but does not explicitly state when not to use or provide alternatives among sibling update tools. Usage context is implied but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_update_key_result_toolA
Update progress on a key result (metric). This is the primary tool for weekly OKR check-ins — update a key result's value without logging into WorkBoard.
Use workboard_get_my_key_results_tool to find metric IDs first.
| Name | Required | Description | Default |
|---|---|---|---|
| metric_id | Yes | Metric ID (positive integer). Get this from workboard_get_my_key_results_tool. | |
| value | Yes | The new progress value (e.g. "75" for 75%). | |
| comment | No | Optional check-in comment describing what changed. |
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 only states 'update progress' without disclosing side effects, authentication needs, or rate limits. Since the update is a mutation, more detail on what changes (e.g., previous value, response format) is expected.
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?
Two sentences deliver purpose and prerequisite with no filler. Front-loaded with the core action: 'Update progress on a key result (metric).'
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 tool has an output schema, so return values need not be explained. The description covers the main use case and prerequisite. Minor gap: does not mention whether comment is truly optional or what the outcome confirmation looks like, but output schema likely covers that.
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 coverage is 100%, so baseline is 3. The description adds context by mentioning metric IDs come from another tool, but does not elaborate on parameter formats beyond what the schema already provides (e.g., value as string).
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 updates progress on a key result (metric) and identifies it as the primary tool for weekly OKR check-ins. This distinguishes it from sibling tools like workboard_update_activity_tool or workboard_update_user_tool.
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 instructs the agent to first use workboard_get_my_key_results_tool to find metric IDs, providing a clear prerequisite. It contextualizes usage for weekly check-ins but does not specify when not to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_update_user_toolC
Update an existing WorkBoard user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | User ID (positive integer) | |
| first_name | No | User's first name (optional) | |
| last_name | No | User's last name (optional) | |
| No | User's email address (optional) | ||
| designation | No | User's job title or designation (optional) |
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 only says 'Update', implying mutation, but does not disclose side effects, permission requirements, or behavior on invalid user_id. The schema provides fields but no behavior beyond that.
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, clear sentence with no unnecessary verbiage. However, it is too brief and could be more informative without harming conciseness.
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 has 5 parameters and an output schema, the description lacks information about mutation behavior, error conditions, or the meaning of optional fields. It is insufficient for an agent to use confidently.
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 coverage is 100%, so the description does not add parameter meaning beyond what the input schema already provides. The description is minimal and does not clarify field usage or constraints.
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 action (update) and resource (existing WorkBoard user), which distinguishes it from create and read tools. However, it does not differentiate from other update tools like update_activity or update_key_result beyond the resource name.
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 on when to use this tool versus alternatives. For example, it does not mention that create_user is for new users or get_user for reading. The agent is left to infer usage from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workboard_update_workstream_toolA
Update an existing workstream's properties.
Performs read-before-write to confirm the workstream exists. Requires team manager or co-manager permissions. Pace must be "slow", "fast", or "steady". Health must be "ok", "good", or "risk". Priority must be "p1" through "p5".
| Name | Required | Description | Default |
|---|---|---|---|
| ws_id | Yes | Workstream ID (positive integer) | |
| ws_name | No | New name (optional) | |
| ws_start_date | No | Start date in YYYY-MM-DD (optional) | |
| ws_end_date | No | End date in YYYY-MM-DD (optional) | |
| ws_pace | No | Pace: slow, fast, or steady (optional) | |
| ws_health | No | Health: ok, good, or risk (optional) | |
| ws_priority | No | Priority: p1 through p5 (optional) |
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. It discloses read-before-write behavior, permission requirements, and valid values for pace, health, and priority. This is sufficient for an update 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 three sentences, each providing essential information without redundancy. It is front-loaded with the primary purpose, then adds behavioral and constraint 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?
Given the tool's complexity (7 parameters, 1 required, output schema exists), the description covers all necessary aspects: purpose, permissions, behavior, and valid values. It is complete for an agent to use 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 100%, so the baseline is 3. The description adds value by specifying valid enum values for pace, health, and priority, which are not constrained in the schema. This helps the agent understand allowed inputs beyond what the schema states.
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 action: 'Update an existing workstream's properties.' It uses a specific verb and resource, and distinguishes from sibling tools like create and get 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 provides context on when to use: it mentions read-before-write and required permissions (team manager or co-manager). It does not explicitly state when not to use or list alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
24 tool updates
v0.7.0- Added
workboard_create_activity_tool - Added
workboard_create_objective_tool - Changed
workboard_create_user_tool5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / designation / descriptionAdded value: +"User's job title or designation" - added
Input schema / properties / email / descriptionAdded value: +"User's email address" - added
Input schema / properties / first_name / descriptionAdded value: +"User's first name" - added
Input schema / properties / last_name / descriptionAdded value: +"User's last name"
- Added
workboard_create_workstream_tool - Added
workboard_get_activity_tool - Removed
workboard_get_goal_details_tool - Removed
workboard_get_goals_tool - Added
workboard_get_my_key_results_tool - Added
workboard_get_my_objectives_tool - Added
workboard_get_objective_details_tool - Added
workboard_get_objectives_tool - Added
workboard_get_team_members_tool - Added
workboard_get_team_workstreams_tool - Added
workboard_get_teams_tool - Added
workboard_get_user_key_results_tool - Changed
workboard_get_user_tool2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / user_id / descriptionAdded value: +"User ID (positive integer). If not provided, returns the\n current authenticated user."
- Added
workboard_get_workstream_activities_tool - Added
workboard_get_workstreams_tool - Added
workboard_list_activities_tool - Changed
workboard_list_users_tool1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Added
workboard_update_activity_tool - Added
workboard_update_key_result_tool - Changed
workboard_update_user_tool6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / designation / descriptionAdded value: +"User's job title or designation (optional)" - added
Input schema / properties / email / descriptionAdded value: +"User's email address (optional)" - added
Input schema / properties / first_name / descriptionAdded value: +"User's first name (optional)" - added
Input schema / properties / last_name / descriptionAdded value: +"User's last name (optional)" - added
Input schema / properties / user_id / descriptionAdded value: +"User ID (positive integer)"
- Added
workboard_update_workstream_tool
6 tool updates
v0.1.0- First observed
workboard_create_user_tool - First observed
workboard_get_goal_details_tool - First observed
workboard_get_goals_tool - First observed
workboard_get_user_tool - First observed
workboard_list_users_tool - First observed
workboard_update_user_tool
TDQS
Each tool targets a distinct resource-action combination (e.g., create_activity, get_activity, list_activities). Tools for different resources (activities, objectives, key results, users, workstreams, teams) have clear boundaries. The few similar-sounding tools (e.g., get_my_objectives vs get_objectives) are well-differentiated by parameters and descriptions.
All tools follow the consistent pattern `workboard_<verb>_<noun>_tool`, using snake_case throughout. Verbs are limited to create, get, list, update. This makes tool selection predictable and unambiguous.
At 22 tools, the server is slightly above the typical well-scoped range (3-15) but still reasonable given the complexity of the domain (multiple resource types with CRUD and queries). Each tool serves a distinct purpose, and no tool feels superfluous.
The tool surface covers most CRUD operations for primary resources but lacks delete tools for activities, objectives, users, and workstreams. Also missing update for objectives and create/delete for key results. These gaps could hinder workflows requiring removal of entities.
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
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides comprehensive access to LinkedIn data and functionality, enabling data retrieval and user account management through the HorizonDataWave API.263763JavaScriptMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides seamless interaction with Workato's API through custom AI tools, enabling management of recipes, connections, connectors, folders, and activity logs.4MIT
- -licenseNot gradedqualityNot gradedmaintenanceA production-grade Model Context Protocol server that enables secure management of context data through a React dashboard, supporting ZIP processing, context approval workflows, and system monitoring.225-
- FlicenseBqualityDmaintenanceA Model Context Protocol server providing access to WeWork project management data, enabling project search, task analysis, and statistics retrieval through Claude and other LLM clients.6-
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/crunchtools/mcp-workboard'
If you have feedback or need assistance with the MCP directory API, please join our Discord server