Skip to main content
Glama

toggl-focus-mcp

MCP server for Toggl Focus (2.0) — not Toggl Track 1.0.

Connect Claude, Cursor, Codex, or OpenCode to your Focus workspace with a Bearer API key (toggl_sk_…) and npx. No OAuth browser flow required.

npx -y toggl-focus-mcp

Auth

Focus Bearer API key (Authorization: Bearer toggl_sk_…)

API

https://focus.toggl.com/api

Transport

stdio MCP

Node

≥ 20 (CI / .nvmrc → latest Current)

Track “API Token” values (Basic Auth / profile token for Track) do not work. Create a Focus / Toggl 2.0 key in settings. Official OAuth MCP: @togglhq/mcp.


Prerequisites

  1. A Toggl Focus / 2.0 API key (toggl_sk_…) — shown once when created

  2. Your organization ID and workspace ID (strongly recommended)

  3. Node.js 20+ (for npx)

Find org/workspace IDs in the Focus URL, e.g.
https://focus.toggl.com/.../organizations/21504582/workspaces/21503801/...

Setting both IDs avoids extra discovery calls and protects against Focus hourly quota limits.


Related MCP server: timing-mcp-server

Environment variables

Variable

Required

Description

TOGGL_FOCUS_API_TOKEN

Yes*

Focus API key (toggl_sk_…)

TOGGL_API_KEY

Yes*

Alias for the Focus API key

TOGGL_API_TOKEN

Yes*

Additional alias

TOGGL_ORGANIZATION_ID

Recommended

Default organization ID

TOGGL_WORKSPACE_ID

Recommended

Default workspace ID

TOGGL_FOCUS_BASE_URL

No

API base (default https://focus.toggl.com/api)

* Exactly one of TOGGL_FOCUS_API_TOKEN, TOGGL_API_KEY, or TOGGL_API_TOKEN is required.

Most tools accept optional organization_id / workspace_id arguments that override the env defaults for that call.


Install

Replace toggl_sk_..., 123, and 456 with your real key and IDs.

Claude Code

claude mcp add toggl-focus \
  -e TOGGL_FOCUS_API_TOKEN=toggl_sk_... \
  -e TOGGL_ORGANIZATION_ID=123 \
  -e TOGGL_WORKSPACE_ID=456 \
  -- npx -y toggl-focus-mcp

Verify:

claude mcp list

Claude Desktop

Edit claude_desktop_config.json, then restart Claude Desktop.

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "toggl-focus": {
      "command": "npx",
      "args": ["-y", "toggl-focus-mcp"],
      "env": {
        "TOGGL_FOCUS_API_TOKEN": "toggl_sk_...",
        "TOGGL_ORGANIZATION_ID": "123",
        "TOGGL_WORKSPACE_ID": "456"
      }
    }
  }
}

Cursor

Add to project .cursor/mcp.json or your global Cursor MCP settings:

{
  "mcpServers": {
    "toggl-focus": {
      "command": "npx",
      "args": ["-y", "toggl-focus-mcp"],
      "env": {
        "TOGGL_FOCUS_API_TOKEN": "toggl_sk_...",
        "TOGGL_ORGANIZATION_ID": "123",
        "TOGGL_WORKSPACE_ID": "456"
      }
    }
  }
}

Enable the server in Cursor Settings → MCP, then confirm tools like focus_whoami appear.

Codex

CLI (recommended):

codex mcp add toggl-focus \
  --env TOGGL_FOCUS_API_TOKEN=toggl_sk_... \
  --env TOGGL_ORGANIZATION_ID=123 \
  --env TOGGL_WORKSPACE_ID=456 \
  -- npx -y toggl-focus-mcp

Or edit ~/.codex/config.toml (or project .codex/config.toml in a trusted repo):

[mcp_servers.toggl-focus]
command = "npx"
args = ["-y", "toggl-focus-mcp"]

[mcp_servers.toggl-focus.env]
TOGGL_FOCUS_API_TOKEN = "toggl_sk_..."
TOGGL_ORGANIZATION_ID = "123"
TOGGL_WORKSPACE_ID = "456"

To keep secrets out of the file, set them in your shell and forward by name:

[mcp_servers.toggl-focus]
command = "npx"
args = ["-y", "toggl-focus-mcp"]
env_vars = ["TOGGL_FOCUS_API_TOKEN", "TOGGL_ORGANIZATION_ID", "TOGGL_WORKSPACE_ID"]

Shared across Codex CLI, IDE extension, and ChatGPT desktop Codex host. Docs: developers.openai.com/codex/mcp.

OpenCode

Add to opencode.json / opencode.jsonc (project or global):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "toggl-focus": {
      "type": "local",
      "command": ["npx", "-y", "toggl-focus-mcp"],
      "enabled": true,
      "environment": {
        "TOGGL_FOCUS_API_TOKEN": "toggl_sk_...",
        "TOGGL_ORGANIZATION_ID": "123",
        "TOGGL_WORKSPACE_ID": "456"
      }
    }
  }
}

You can also reference shell env vars with OpenCode’s {env:VAR} syntax where supported. Docs: opencode.ai/docs/mcp-servers.


Quick start prompts

Once the server is connected, try:

  • “Who am I in Toggl Focus?”

  • “List my projects”

  • “Start a timer on project X”

  • “Create a task called Ship MCP docs on project Y”

  • “Show time entries for this week”

Creates, updates, deletes, and timer start/stop apply immediately (no confirmation token).


Tools

24 tools. All are Focus/2.0 only. Shared optional args on almost every tool:

Arg

Type

Notes

organization_id

number

Overrides TOGGL_ORGANIZATION_ID

workspace_id

number

Overrides TOGGL_WORKSPACE_ID

page

number

Default 1 (list tools)

per_page

number

Default 50, max 100 (list tools)

Account & context

focus_whoami

Account metadata + user settings for the authenticated Focus key.

Arg

Type

Required

Description

include_settings

boolean

No

Default true — also fetch GET /users/me/settings

organization_id / workspace_id

number

No

Optional scope

focus_get_workspace_context

Resolve and cache organization_id / workspace_id for later tools. Prefer setting both env vars. Does not call the session-only /workspaces/{id}/context endpoint (that returns 403 for API keys).

focus_list_org_users

List organization users (assignee lookup). Read-only.

Arg

Type

Required

Description

filter

string

No

Search name/email

active_status

string

No

Active-status filter when supported

page / per_page

number

No

Pagination

Projects

focus_list_projects

List workspace projects.

Arg

Type

Description

name

string

Filter by project or client name

archived / completed / pinned

boolean

Status filters

client_id

number[]

Filter by client IDs

tag_id

number[]

Filter by tag IDs

focus_get_project

Arg

Type

Required

project_id

number

Yes

focus_create_project

Creates immediately. Requires name.

Arg

Type

Description

name

string

Required

description

string

client_id

number

Supported on create

color

string

private / pinned / billable

boolean

start_date / end_date

string

YYYY-MM-DD

tag_ids

number[]

Applied via follow-up PATCH; may be forbidden on some plans/roles — project still creates and a warning is returned

parent_project_id

number

focus_update_project

Partial update (PATCH). Requires project_id. Same optional fields as create, plus nullable client_id and optional archived.

Tasks

focus_list_tasks

Arg

Type

Description

name

string

Name filter

project_id

number[]

Project IDs

status_id

number[]

Status IDs

assignee_user_id

number[]

Assignees

tag_id

number[]

Tags

pinned / archived

boolean

parent_task_id

number[]

Parent tasks

include_assignees

boolean

Expand assignees

focus_get_task

Requires task_id. Optional include_assignees.

focus_create_task

Creates immediately. Requires name.

Arg

Type

Description

name

string

Required

description / notes

string

project_id / parent_task_id / status_id

number

assignee_user_ids / tag_ids

number[]

estimated_mins

number

priority

"none" | "low" | "medium" | "high"

pinned / private / billable

boolean

start_date / end_date

string

YYYY-MM-DD

focus_update_task

Partial update. Requires task_id. Same mutable fields as create (all optional).

Live tracking

focus_get_current_timer

Returns the running timer for the workspace, or { "running": false }.

focus_start_timer

Starts immediately. type defaults to "activity".

Arg

Type

Description

type

"activity" | "break"

Default activity

task_id / project_id

number

description

string

billable

boolean

tag_ids

number[]

time_block_id

number

start

string

RFC3339; server default = now

focus_stop_timer

Stops the running timer. Optional end (RFC3339); defaults to current UTC.

Time entries

focus_list_time_entries

Requires a date range. Accepts YYYY-MM-DD or RFC3339 (YYYY-MM-DD is expanded to start/end of day UTC).

Arg

Type

Required

Description

date_from

string

Yes

Range start

date_to

string

Yes

Range end

task_id

number

No

type

"activity" | "break"

No

archived / include_taskless

boolean

No

time_block_id

number

No

focus_create_time_entry

Creates a completed entry immediately. If task_id is set, uses the task-scoped endpoint; otherwise creates a taskless entry. type defaults to "activity".

Arg

Type

Description

task_id / project_id

number

description

string

start

string

RFC3339

duration

number

Seconds

billable

boolean

tag_ids

number[]

time_block_id

number

type

"activity" | "break"

focus_update_time_entry

Partial update. Requires time_entry_id. Optional task_id selects the task-scoped path.

focus_delete_time_entry

Deletes immediately. Requires time_entry_id. Optional task_id for the task-scoped path.

Clients

focus_list_clients

Optional name filter plus pagination.

focus_create_client

Requires name. Optional currency (ISO 4217).

Tags

focus_list_tags

Optional name, tag_id (array), pagination.

focus_create_tag

Requires name and color (hex or Focus color token).

focus_list_statuses

List task statuses. Optional name, type, pagination.

Unified search across time entries, tasks, and projects.

Arg

Type

Required

Description

keyword

string

Yes

Search text

per_group

number

No

Results per group

project_id / task_id

number

No

Scope

only_me / include_drafts

boolean

No


Behavior notes

  • Mutations are immediate — create / update / delete / start / stop have no confirmation step.

  • Project tags on create — some Focus plans/roles reject tag_ids on POST. The tool creates the project first, then PATCHes tags; on failure you still get the project plus a warning.

  • Workspace context — session cookie endpoints are not used; set org + workspace env vars.

  • Quota — Focus enforces per-user-per-org hourly limits (e.g. Free ~30/hour). HTTP 402 means quota exhausted; wait for X-Toggl-Quota-Resets-In. Prefer env IDs so tools do not rediscover context every call.


Development

git clone https://github.com/copperline-ai/toggl-focus-mcp.git
cd toggl-focus-mcp
npm install
npm run check          # typecheck + unit/mocked MCP tests + build (CI gate)
npm run test:live      # optional — real Focus API; local only, needs .env
node dist/index.js

npm run check is the same gate used by GitHub Actions on PRs and before publish. It uses mocked Focus responses — CI never calls your real Toggl account.

Live MCP tests (local only)

Optional suite against a real Focus workspace. Not run in CI.

  1. Copy .env.example.env and set your Focus key + org/workspace IDs

  2. Run:

npm run test:live

Reuses stable fixtures (client Toggl Focus, project Toggl Focus MCP, task MCP live test, tag MCP live). Disposable time entries are deleted. Paces ~1 req/sec for rate limits. .env is gitignored and not published.

Publishing

Releases use release-it + AI Gateway (semver bump, changelog, GitHub Release, npm publish):

npm run release:dry-run
npm pack --dry-run

CI secrets: NPM_ACCESS_TOKEN, AI_GATEWAY_API_KEY.

Vendored OpenAPI: openapi/focus.json from Focus OpenAPI.


License

MIT

Available Tools

24 tools
focus_create_clientC

Toggl Focus/2.0: create a client immediately. Requires name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
currencyNoISO 4217 currency code
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

C2.7/5.0
Behavior2/5

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 fails to mention side effects (e.g., permanent creation), required permissions, or potential errors. The word 'immediately' hints at synchronous behavior but is too vague to be informative.

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

Conciseness4/5

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

The description is extremely concise and front-loaded, with the core action in the first phrase. The 'Toggl Focus/2.0' prefix provides product context. However, it is so brief that it borders on under-specification, but for a simple tool it is acceptably short.

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

Completeness2/5

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

Given the tool has 4 parameters, no output schema, and no annotations, the description should explain return values, error cases, or behavioral nuances. It does none of this. For a create operation, an agent would not know what to expect after invocation.

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

Parameters2/5

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

Schema description coverage is 75%, leaving the 'name' parameter without a description, but the description adds nothing beyond the schema. It repeats the requirement of 'name' (already in the schema) and does not explain currency, workspace_id, or organization_id behavior or defaults.

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

Purpose4/5

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

The description clearly states the action ('create a client') and the resource ('client'), which is a specific verb+resource combination. It does not explicitly differentiate from sibling tools like create_project or create_task, but the resource type itself provides clear distinction.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives. It only states 'Requires name,' which is a prerequisite, not a usage scenario. There is no mention of when to choose create_client over list_clients or other create tools.

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

focus_create_projectA

Toggl Focus/2.0: create a project immediately (no confirmation). Requires name. Optional client_id is supported. tag_ids are applied in a follow-up PATCH when permitted by the workspace plan/role; if tags are forbidden the project is still created and a warning is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
colorNo
pinnedNo
privateNo
tag_idsNoOptional tags. Applied after create; may be forbidden on some plans/roles.
billableNo
end_dateNoYYYY-MM-DD
client_idNo
start_dateNoYYYY-MM-DD
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
parent_project_idNo

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behaviors: creation happens immediately without confirmation, tag_ids are applied via a follow-up PATCH only when allowed, and the project is still created if tags are forbidden (with a warning). This adds meaningful behavioral context beyond a simple 'create' statement.

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

Conciseness5/5

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

The description is concise: two sentences, front-loaded with the core purpose, and each sentence adds essential information. No filler or irrelevant content.

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

Completeness2/5

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

With 13 parameters, no annotations, and no output schema, this creation tool requires richer context. The description covers the immediate-creation behavior and tag edge case, but omits return value, error conditions, and semantics for most optional fields. An agent would need external docs to fully understand the tool.

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

Parameters2/5

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

Schema description coverage is only 46%, leaving 7 of 13 parameters without schema descriptions (color, pinned, private, billable, description, parent_project_id, client_id). The tool description only explicitly elaborates on name, client_id, and tag_ids, providing useful detail only for tag_ids. It fails to compensate for the large number of undocumented parameters.

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

Purpose5/5

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

The description clearly states 'create a project' with a specific verb and resource, and notes it happens immediately with no confirmation. This distinguishes it from sibling tools like focus_update_project and focus_list_projects.

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

Usage Guidelines4/5

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

Provides context that creation is immediate and requires a name, and explains the conditional behavior of tag_ids. However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of explicit when/when-not guidance.

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

focus_create_tagB

Toggl Focus/2.0: create a tag immediately. Requires name and color.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorYesTag color (hex or Focus color token)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It only states 'create a tag immediately,' which reveals the action is immediate but does not disclose side effects, permissions, idempotency, return values, or error conditions. This is insufficient behavioral transparency 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.

Conciseness4/5

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

The description is very short and action-oriented, but the prefix 'Toggl Focus/2.0:' is redundant given the tool name starts with 'focus.' Every other word earns its place; a slightly cleaner version would omit the redundant prefix.

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

Completeness3/5

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

For a simple creation tool with a 4-parameter schema and no output schema, the description provides the essential purpose but lacks context about response format, optional parameter defaults, or any side effects. The schema fills in some gaps, making the description minimally adequate but not comprehensive.

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

Parameters3/5

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

The input schema already provides descriptions for color, workspace_id, and organization_id, covering 75% of parameters. The description only restates that name and color are required, which the schema already specifies. No additional semantic value is added beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('create') and the target resource ('a tag'), with a specific verb and object. It also mentions the required inputs (name and color), distinguishing it from sibling tools like focus_list_tags or focus_create_project.

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

Usage Guidelines3/5

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

The description implies the use case (creating a tag) and provides a prerequisite (requires name and color), but it does not provide explicit guidance on when to choose this tool over alternatives or any exclusion criteria. The purpose is self-evident, giving an implied usage context.

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

focus_create_taskA

Toggl Focus/2.0: create a task immediately (no confirmation). Requires name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
notesNo
pinnedNo
privateNo
tag_idsNo
billableNo
end_dateNoYYYY-MM-DD
priorityNo
status_idNo
project_idNo
start_dateNoYYYY-MM-DD
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
estimated_minsNo
parent_task_idNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
assignee_user_idsNo

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It reveals that creation is immediate and without confirmation, but omits other important traits such as what the API returns, whether it requires authentication, or any side effects on related resources. This is insufficient 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.

Conciseness5/5

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

The description is a single concise sentence that front-loads the action ('create a task') and includes key constraints. No word is wasted.

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

Completeness2/5

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

For a tool with 17 parameters and no output schema, the description is too thin. It does not guide the agent on optional parameters, expected return values, or how to set up related fields like project_id or tag_ids. This leaves substantial ambiguity for correct invocation.

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

Parameters2/5

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

The description only restates that 'name' is required, which is already explicit in the input schema. With schema description coverage at only 24%, the description does not compensate by explaining the other 76% of parameters or clarify optional parameter usage.

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

Purpose5/5

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

The description clearly states the tool creates a task, with a specific verb and resource. It distinguishes from sibling tools like focus_update_task and focus_get_task by emphasizing immediate creation without confirmation. The 'Toggl Focus/2.0' prefix provides version context.

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

Usage Guidelines4/5

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

The description gives clear context that this tool is for creating a task immediately without confirmation, and notes the name requirement. It does not explicitly mention alternatives or when not to use it, but the purpose is unambiguous.

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

focus_create_time_entryA

Toggl Focus/2.0: create a completed time entry immediately. If task_id is set, creates under that task; otherwise creates a taskless entry. type defaults to activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
startNoRFC3339 start
tag_idsNo
task_idNo
billableNo
durationNoDuration in seconds
project_idNo
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
time_block_idNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds useful details: the conditional behavior around task_id and the default of type to 'activity'. However, it does not mention potential side effects (e.g., does it affect a running timer?), required permissions, or return behavior. Some transparency is present, but significant gaps remain, so a 3 is appropriate.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose. Every sentence adds value: the first states the core action, and the second explains key parameter behaviors. There is no fluff or redundancy, making it appropriately concise and well-structured.

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

Completeness2/5

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

The tool has 11 parameters, no annotations, and no output schema, so the description needs to cover more ground. It explains the main purpose and two parameter behaviors but omits details about return values, parameter interactions, prerequisites, or edge cases. For a tool with this complexity, the description is too sparse to be considered complete.

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

Parameters2/5

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

Schema description coverage is only 36%, so the description must compensate for undocumented parameters. It adds meaning for task_id (creates under that task or taskless) and type (defaults to 'activity'), which are helpful. However, many parameters (tag_ids, billable, project_id, description, time_block_id) remain unexplained in both schema and description. The compensation is insufficient for the low coverage, hence a 2.

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

Purpose5/5

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

The description clearly states the tool's specific action: 'create a completed time entry immediately.' The verb 'create' and resource 'completed time entry' are specific, and the phrase 'immediately' distinguishes it from timer-starting or updating operations. The added detail about task_id and taskless entries further clarifies its niche among siblings.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: when you need to log a completed time entry rather than start a running timer. It implies this is for retroactive logging, which differentiates it from focus_start_timer and focus_update_time_entry. However, it does not explicitly name alternatives or provide explicit 'when not to use' guidance, so it falls 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.

focus_delete_time_entryA

Toggl Focus/2.0: delete a time entry immediately (no confirmation).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
time_entry_idYes
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A3.6/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the burden of behavioral disclosure. It discloses that deletion is immediate and without confirmation, which is important for a destructive action. However, it does not mention whether running entries can be deleted, side effects, or permission requirements.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately communicates the operation and key behavior. It contains no filler and every word contributes meaning.

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

Completeness3/5

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

For a destructive operation with no annotations and no output schema, the description gives the essential detail of immediate deletion but lacks context about error conditions, relationship between parameters, or what happens to the entry after deletion. It is adequate but has clear gaps.

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

Parameters2/5

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

The schema description coverage is 50%, but the description itself adds no parameter explanations. It does not clarify the role of task_id or organization_id in the deletion context, leaving the purpose of these parameters ambiguous beyond their names.

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

Purpose5/5

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

The description clearly states the action 'delete' and the resource 'time entry', with the additional detail 'immediately (no confirmation)' distinguishing it from update or create operations. This is a specific verb+resource pairing that effectively separates it from sibling tools.

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

Usage Guidelines3/5

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

The description implies the tool is for deleting time entries but provides no explicit guidance on when to use it versus alternatives, nor any exclusions or prerequisites. It is clear enough to infer usage but lacks direct contextual instructions.

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

focus_get_current_timerB

Toggl Focus/2.0: get the currently running timer for the workspace, if any.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only notes 'if any', implying a possible null result, but does not mention authentication requirements, rate limits, or the exact response shape. For a read operation this is minimal but still lacks important context.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded with the key action and resource. It avoids redundancy and is appropriately sized for a simple getter tool.

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

Completeness3/5

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

This is a simple tool with two optional parameters and no output schema. The description explains the purpose but does not describe return values, error behavior, or the format of the timer object. Given the lack of output schema, the description is adequate but not fully complete.

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

Parameters3/5

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

The input schema provides 100% coverage for both parameters (workspace_id and organization_id) with descriptive text. The description adds no additional parameter semantics beyond what the schema already describes, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific action ('get'), the resource ('currently running timer'), and the scope ('for the workspace'), distinguishing it from sibling tools like focus_list_time_entries (list all) and focus_start_timer/focus_stop_timer (mutation).

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives such as focus_list_time_entries or focus_start_timer. There is no mention of exclusions, prerequisites, or alternative tool selection.

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

focus_get_projectB

Toggl Focus/2.0: get a project by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'get' without stating that it is read-only, whether it can return errors, or any side effects. For a tool with no annotation support, this is insufficient.

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

Conciseness5/5

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

The description is a single concise sentence: 'Toggl Focus/2.0: get a project by ID.' It is front-loaded with the action and resource, with no redundant words or filler.

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

Completeness4/5

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

For a simple get-by-ID operation, the description is generally sufficient. It implies the return of a project object, though it does not explicitly state the return format. Given the simplicity and rich schema, this is adequate.

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

Parameters3/5

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

The input schema covers all three parameters with descriptions (coverage 100%), so the schema itself provides parameter semantics. The description adds nothing beyond 'by ID', making it baseline 3.

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

Purpose4/5

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

The description 'get a project by ID' clearly states the verb and resource, and the 'by ID' qualifier distinguishes it from listing or creating projects. However, it does not explicitly mention sibling tools or contrast with them.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like focus_list_projects, focus_create_project, or focus_update_project. Usage must be inferred from the tool name and 'by ID' phrase, which is not explicit guidance.

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

focus_get_taskB

Toggl Focus/2.0: get a task by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
include_assigneesNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'get', implying a read operation, but does not disclose the return format, authentication requirements, or behavior regarding optional parameters like include_assignees.

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

Conciseness5/5

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

The description is a single concise and front-loaded sentence. Every word earns its place, with no redundant content.

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

Completeness2/5

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

With no output schema, no annotations, and four parameters (including an unexplained include_assignees), the description is too minimal. It does not describe the return value, parameter semantics, or default behaviors, leaving significant gaps.

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

Parameters2/5

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

Schema descriptions cover 50% of parameters (workspace_id and organization_id), but the description adds only 'by ID' for task_id. It does not explain include_assignees, nor does it compensate for the lack of schema description on that parameter.

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

Purpose5/5

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

The description 'get a task by ID' uses a specific verb and resource, clearly identifying the operation and its key parameter. It distinguishes this tool from siblings like focus_list_tasks and focus_get_project by focusing on retrieving a single task by ID.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as focus_list_tasks or focus_get_current_timer. There are no conditions, exclusions, or references to other tools for related use cases.

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

focus_get_workspace_contextA

Toggl Focus/2.0: resolve organization_id and workspace_id from env/args (and current_workspace_id from settings when needed). Caches IDs for later tools. Set TOGGL_ORGANIZATION_ID + TOGGL_WORKSPACE_ID. Note: the session /workspaces/{id}/context endpoint is not used with API keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the transparency burden. It discloses that it caches IDs, reads from environment variables, and intentionally avoids a session endpoint. However, it does not address failure behavior (e.g., missing env vars), potential side effects of caching, or whether this is a read-only operation. This is moderate disclosure but not complete.

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

Conciseness5/5

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

The description is three sentences, with the main purpose front-loaded. Every sentence adds value: the core resolution task, caching behavior, and a relevant note about API key usage. There is no redundancy or filler.

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

Completeness2/5

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

The tool has no output schema, and the description does not mention what the tool returns (presumably resolved IDs). While the parameter semantics are covered and the tool is relatively simple, the lack of return-value explanation and limited behavioral detail (e.g., no indication of read-only nature) leaves gaps. Given the tool's context-resolution role, a return format description would be expected.

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

Parameters4/5

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

The input schema already provides 100% coverage for both parameters, explaining defaults from environment variables or cached context. The description adds extra semantic context by mentioning 'current_workspace_id from settings when needed', which goes beyond the schema. This additional nuance justifies a score above the baseline of 3.

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

Purpose4/5

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

The description clearly states the tool's role: resolving organization_id and workspace_id from env/args, and caching them for later tools. This distinguishes it from sibling tools that operate on specific resources like timers or projects. However, it does not explicitly state the output format or what a successful invocation returns, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies this tool is a prerequisite for other tools by mentioning it 'Caches IDs for later tools' and instructing to set environment variables. It also notes an endpoint is not used with API keys, which is useful context. However, it lacks explicit 'when to use' or 'when not to use' statements, leaving the usage window inferential rather than direct.

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

focus_list_clientsB

Toggl Focus/2.0: list clients in a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNoPage number (default 1)
per_pageNoResults per page (default 50, max 100)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.2/5.0
Behavior2/5

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 only says 'list clients in a workspace' and does not mention pagination, authentication, or error behavior. The schema hints at pagination, but the description adds no behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It earns its place, though it is minimal.

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

Completeness2/5

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

With 5 parameters, no annotations, and no output schema, this minimal description is insufficient. It does not mention pagination behavior, output format, or any context on when to use the tool, leaving the agent under-informed.

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

Parameters3/5

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

Schema description coverage is 80%, so most parameters are explained. The description adds no additional meaning beyond the schema, and the mention of 'workspace' is already covered by the workspace_id parameter description.

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

Purpose5/5

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

The description clearly states the action (list) and the resource (clients) within a workspace, which is specific and distinguishes it from sibling tools like focus_list_projects or focus_list_tasks.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, when not to use it, or any prerequisites. The description simply states what it does without context.

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

focus_list_org_usersA

Toggl Focus/2.0: list organization users (for assignee resolution). Mutations are not performed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
filterNoSearch filter for name/email
per_pageNoResults per page (default 50, max 100)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
active_statusNoFilter by active status if supported by API
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. The explicit statement 'Mutations are not performed' is a valuable safety signal. It does not cover rate limits or response structure, but for a read-only list tool this is acceptable.

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

Conciseness5/5

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

Two concise sentences front-load the tool's purpose and safety, with no filler or redundancy. Every phrase earns its place.

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

Completeness4/5

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

For a simple read-only list tool with fully documented parameters, the description provides adequate context. It could mention the expected return format, but 'list organization users' plus the assignee resolution hint covers the core need.

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

Parameters3/5

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

The input schema provides descriptions for all 6 parameters, giving 100% schema coverage. The description itself adds no additional parameter-level meaning; the parameter names and schema descriptions are sufficient.

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

Purpose5/5

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

The description states a specific verb ('list'), resource ('organization users'), and context ('Toggl Focus/2.0'), along with an intended purpose ('for assignee resolution'). This distinguishes it clearly from sibling list tools like focus_list_projects and focus_list_tasks.

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

Usage Guidelines4/5

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

The phrase 'for assignee resolution' signals when this tool is appropriate, but it does not explicitly mention when not to use it or name alternative tools. This is clear context without exclusions.

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

focus_list_projectsB

Toggl Focus/2.0: list projects in a workspace. Not Track.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by project or client name
pageNoPage number (default 1)
pinnedNo
tag_idNo
archivedNo
per_pageNoResults per page (default 50, max 100)
client_idNo
completedNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits itself. It only states the action (list projects) but omits important behaviors such as pagination defaults, filtering semantics (e.g., whether archived projects are included by default), or response format. The 'Not Track' is a product distinction, not a behavioral trait. This minimal disclosure leaves significant gaps for a tool with 10 filter parameters.

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

Conciseness5/5

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

The description is a single, focused sentence that immediately conveys the tool's purpose. It front-loads the core action and includes a brief product clarification ('Not Track'). There is no redundant phrasing or unnecessary elaboration, making it highly concise.

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

Completeness2/5

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

Given the tool has 10 parameters, no annotations, and no output schema, the one-sentence description is insufficient for an agent to understand the full context of use. It does not mention return structure, default behaviors, or the significance of the many filter options. The description is far from complete for a tool of this complexity, especially with no annotations to fill gaps.

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

Parameters2/5

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

Schema description coverage is 50% (5 of 10 parameters have descriptions). The tool description adds no parameter-level meaning beyond the schema. Parameters like 'pinned', 'archived', 'completed', and 'client_id' remain ambiguous without additional explanation. Since the description does not compensate for the half of parameters lacking schema descriptions, it fails to clarify semantics for those fields.

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

Purpose5/5

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

The description clearly states the tool's function: 'list projects in a workspace' with the verb 'list' and resource 'projects'. It distinguishes itself from sibling tools like focus_get_project (singular) and focus_create_project/update_project by focusing on listing multiple projects. The 'Not Track' note clarifies the product scope, not the action, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like focus_get_project for a single project, or focus_list_tasks for related resources. The only contextual note 'Not Track' clarifies the API domain but does not address use cases or exclusions. There is no mention of when listing projects is appropriate or when another tool would be better.

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

focus_list_statusesA

Toggl Focus/2.0: list task statuses for a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNoPage number (default 1)
typeNoFilter by status type
per_pageNoResults per page (default 50, max 100)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations present, the description carries full responsibility for behavioral disclosure. It only states that it lists statuses, omitting any mention of read-only nature, pagination behavior, or side effects. While 'list' implies safety, the description does not explicitly confirm any operational traits.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler or redundancy. It quickly communicates the core function without waste, earning a top score for conciseness.

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

Completeness4/5

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

For a straightforward list tool with good schema coverage, the description provides the essential scope ('for a workspace') and resource focus. It lacks any detail about pagination or the response format, but these are partially covered by the schema's parameter descriptions, making it adequate yet not fully comprehensive.

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

Parameters3/5

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

Schema description coverage is 83%, so the baseline is 3. The description adds no parameter-specific meaning; it relies entirely on the schema's parameter descriptions. The one undocumented parameter ('name') is not clarified in the description either.

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

Purpose5/5

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

The description uses a specific verb ('list') and clearly identifies the resource ('task statuses') and scope ('for a workspace'). This distinguishes it from sibling tools that list other entities like projects, tasks, or clients, 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.

Usage Guidelines3/5

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

The description implies usage (you'd use it to list task statuses for a workspace) but provides no explicit when-to-use guidance or exclusion of alternatives. There are no prerequisites or 'use instead' cues, so the agent must infer the appropriate context.

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

focus_list_tagsB

Toggl Focus/2.0: list tags in a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNoPage number (default 1)
tag_idNo
per_pageNoResults per page (default 50, max 100)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavior disclosure. It only states the basic operation without mentioning pagination, filtering, defaults, or return behavior, leaving the agent with minimal context about how the tool behaves.

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

Conciseness5/5

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

The description is a single, compact sentence that is front-loaded and free of unnecessary words. It states the essential purpose without any filler.

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

Completeness2/5

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

For a tool with six optional parameters, no output schema, and no annotations, the description is too sparse. It does not mention pagination, filtering capabilities, or return structure, requiring the agent to rely entirely on the schema for invocation details.

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

Parameters3/5

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

Schema description coverage is 67%, with page, per_page, workspace_id, and organization_id already documented. The description adds no parameter information and does not clarify the undocumented 'name' and 'tag_id' fields, so it neither improves nor detracts from the schema's baseline.

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

Purpose5/5

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

The description clearly states the action 'list' and the resource 'tags in a workspace', making its purpose specific and unambiguous. It differentiates from sibling tools like focus_create_tag and other list tools by naming the resource directly.

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

Usage Guidelines3/5

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

The description implies when to use the tool—whenever a list of tags in a workspace is needed—but does not explicitly discuss alternatives or exclusions. No guidance is given on when not to use it, but the core usage is evident from the verb and resource.

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

focus_list_tasksB

Toggl Focus/2.0: list tasks with common filters (project, status, assignee, name, pinned). Not Track.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNoPage number (default 1)
pinnedNo
tag_idNo
archivedNo
per_pageNoResults per page (default 50, max 100)
status_idNo
project_idNoFilter by project IDs. Empty project_id query can mean no-project tasks on API.
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
parent_task_idNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
assignee_user_idNo
include_assigneesNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'list tasks' without mentioning read-only nature, pagination, default parameters, or effects of filters. Lacks detail on side effects or guarantees.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the action and resource, and no redundant words. The 'Not Track' is a useful disambiguator. Excellent brevity and structure.

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

Completeness2/5

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

Given 13 optional parameters and no output schema, the description is far too sparse. It omits pagination behavior, workspace defaults, return format, and any caveats. The 'Not Track' note provides some product context, but the description is inadequate for reliable invocation.

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

Parameters3/5

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

Schema coverage is only 38% (5 of 13 params have descriptions). The description highlights key filters (project, status, assignee, name, pinned) but doesn't explain array semantics, defaulting behavior, or edge cases like empty project_id. It adds moderate value by grouping filters but does not fully compensate for low schema coverage.

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

Purpose4/5

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

Description clearly states the tool lists tasks in Toggl Focus with commonly used filters, distinguishing it from Track and siblings like focus_list_projects. The verb 'list' and resource 'tasks' are explicit, though the filter list is abbreviated.

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

Usage Guidelines3/5

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

The 'Not Track' tag hints at product differentiation, and listing filters implies use for task retrieval, but no explicit when-to-use vs alternatives (e.g., focus_search for complex queries) is provided. Context is implied rather than stated.

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

focus_list_time_entriesA

Toggl Focus/2.0: list time entries in a date range (date_from/date_to required). Accepts YYYY-MM-DD or RFC3339.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
typeNo
date_toYesEnd of range (YYYY-MM-DD or RFC3339)
task_idNo
archivedNo
per_pageNoResults per page (default 50, max 100)
date_fromYesStart of range (YYYY-MM-DD or RFC3339)
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
time_block_idNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
include_tasklessNo

TDQS

A3.7/5.0
Behavior3/5

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

The description conveys that this is a read-only listing operation and emphasizes the mandatory date range and accepted formats. With no annotations provided, it carries the behavioral transparency burden, but it omits details like pagination defaults and result structure. It does not contradict any structured data.

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

Conciseness5/5

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

Two short sentences, front-loaded with the main purpose and immediately followed by the key constraint. No filler.

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

Completeness2/5

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

The tool has 11 parameters, no output schema, and no annotations, yet the description only covers the required date range and format. It does not mention pagination (page/per_page), optional filters (type, archived, include_taskless, task_id, time_block_id), or return behavior, leaving significant gaps for an agent.

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

Parameters2/5

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

The description mostly restates the schema's required fields and date format; it adds no new semantics for the five parameters that lack schema descriptions (type, task_id, archived, time_block_id, include_taskless). With 55% schema coverage, the description could have compensated for the undocumented filters but does not.

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

Purpose5/5

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

The description clearly identifies the action ('list') and resource ('time entries'), and constrains scope to a date range. This distinguishes it from sibling tools that list other resources (projects, tasks, clients) and from get_current_timer or search.

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

Usage Guidelines4/5

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

It states a concrete requirement (date_from/date_to) and date format, giving the user a clear context for invocation. However, it does not explicitly mention when to prefer this over focus_search or other list variants, so it stops short of full alternative guidance.

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

focus_start_timerC

Toggl Focus/2.0: start a timer immediately. type defaults to activity. Optional task_id/project_id/description.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDefault: activity
startNoRFC3339 start time; defaults to now on server
tag_idsNo
task_idNo
billableNo
project_idNo
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
time_block_idNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

C2.9/5.0
Behavior2/5

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

Beyond the minimal fact that it starts a timer immediately, the description discloses very little. No annotations are present, so the description must carry the full burden. It omits critical behaviors like whether an existing timer is automatically stopped, how the 'start' parameter interacts with 'immediately', or any permission or side-effect requirements. This is insufficient for a state-changing operation.

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

Conciseness4/5

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

The description is a single sentence, front-loaded with the essential action. The prefix 'Toggl Focus/2.0:' is unnecessary noise but does not significantly hinder readability. Overall, it is concise and to the point, though it could list examples more efficiently.

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

Completeness2/5

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

Given the tool has 10 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to describe the return value, side effects on existing timers, or the meaning of many optional parameters. For an agent to use this tool correctly, more context is needed.

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

Parameters2/5

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

The schema description coverage is only 40%, so the description must compensate. It mentions 'type defaults to activity' and 'Optional task_id/project_id/description,' but this largely repeats schema information. It does not explain the meaning or usage of tag_ids, billable, time_block_id, or other parameters. The description adds little value beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool's action: 'start a timer immediately.' It specifies the primary verb and resource, and distinguishes this from sibling tools like focus_stop_timer or focus_get_current_timer. The mention of defaults ('type defaults to activity') adds precision without ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as focus_create_time_entry or when to stop an existing timer. The description implies immediate start but does not state any exclusions, prerequisites, or trade-offs. There is no mention of scenarios where a different tool would be more appropriate.

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

focus_stop_timerA

Toggl Focus/2.0: stop the running timer. end defaults to now (UTC) if omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoRFC3339 end time; defaults to current UTC
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses that 'end defaults to now (UTC) if omitted', which is a useful behavioral detail. However, it does not state what happens if no timer is running, error handling, or the return value, leaving gaps.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core action ('stop the running timer') and then notes a key default. It is concise and every word earns its place.

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

Completeness3/5

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

The tool is simple with all parameters optional and covered by the schema, but there is no output schema and the description does not mention return values or error conditions. It is minimally complete but leaves some contextual gaps.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter is already described in detail. The description repeats the default behavior for 'end' but adds minimal value beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'stop the running timer'. This is a specific verb and resource, and it distinguishes from siblings like focus_start_timer and focus_get_current_timer.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when a timer is running and needs to be stopped), but it does not explicitly mention alternatives or when not to use it. No exclusions are noted.

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

focus_update_projectB

Toggl Focus/2.0: partially update a project (PATCH). Changes apply immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
pinnedNo
privateNo
tag_idsNo
archivedNoIf provided via other endpoints; prefer name/fields here
billableNo
end_dateNo
client_idNo
project_idYes
start_dateNo
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It mentions 'Changes apply immediately,' which is a useful temporal side-effect note, but it fails to disclose mutation risks, reversibility, authentication requirements, or the partial-update semantics beyond the word 'partially.' This is a sparse disclosure for a write operation.

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

Conciseness5/5

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

The description is a single efficient sentence, front-loaded with the tool's purpose and method. Every word earns its place, and it is appropriately sized for the information it conveys.

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

Completeness2/5

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

Given the tool has 14 parameters, no output schema, and no annotations, this description is under-specified. It does not mention required parameters, update constraints, response behavior, or the meaning of key fields. It is not complete enough for an agent to safely invoke without additional lookup.

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

Parameters1/5

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

Schema coverage is only 21%, and the description adds no parameter-level meaning beyond the resource name. It does not list which fields are updatable, explain the project_id requirement, or clarify defaults like workspace_id and organization_id. The description does nothing to compensate for the low schema coverage.

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

Purpose5/5

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

The description clearly states the action (partially update), the resource (a project), and the HTTP method (PATCH). It distinguishes this tool from siblings like focus_get_project, focus_create_project, and focus_update_task by specifying the partial update nature and project target.

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

Usage Guidelines3/5

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

The description implies usage for modifying existing project fields but does not explicitly state when to prefer this over other update tools or any exclusions. It lacks direct guidance on prerequisites or scenarios where other tools (e.g., focus_create_project) would be more appropriate.

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

focus_update_taskA

Toggl Focus/2.0: partially update a task (PATCH). Changes apply immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
notesNo
pinnedNo
privateNo
tag_idsNo
task_idYes
billableNo
end_dateNo
priorityNo
status_idNo
project_idNo
start_dateNo
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
estimated_minsNo
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
assignee_user_idsNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses two behavioral traits: it's a PATCH (partial update, not full replacement) and changes apply immediately. However, it lacks details on side effects, permissions, or idempotency, which would be expected for a mutation tool without annotation support.

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

Conciseness5/5

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

The description is one concise sentence with exactly the essential information: product, operation, method, and immediacy. It is front-loaded and every word earns its place with no redundancy.

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

Completeness2/5

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

Given the tool's complexity (17 parameters, no output schema), the description is far from complete. It omits typical usage context such as how required parameters are determined, how workspace/org IDs default, what the response looks like, or any constraints. The minimal description is inadequate for an agent to confidently invoke this tool correctly.

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

Parameters2/5

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

Schema description coverage is only 12%, and the description adds no parameter-level meaning. It does not explain any of the 17 parameters beyond what the schema provides via names/types. The description fails to compensate for the low schema coverage, making parameter semantics mostly left to inference.

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

Purpose5/5

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

The description clearly states the tool performs a partial update (PATCH) on a task, with the specific resource 'task' and the method 'PATCH'. It distinguishes from sibling tools like focus_create_task and focus_get_task, and the 'partially update' phrasing clarifies its scoped purpose.

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

Usage Guidelines4/5

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

The description implies use when partially modifying an existing task, and the PATCH method signals that only provided fields change. However, it does not explicitly state when not to use it or mention alternatives (e.g., full update via PUT if available). 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.

focus_update_time_entryC

Toggl Focus/2.0: partially update a time entry (PATCH). Changes apply immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
startNo
tag_idsNo
task_idNoOptional; if set, uses the task-scoped endpoint path
billableNo
durationNo
project_idNo
descriptionNo
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
time_entry_idYes
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure, but it only reveals that changes apply immediately. It omits other important behaviors such as required permissions, side effects, error handling, or reversibility, leaving significant gaps.

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

Conciseness4/5

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

The description is a single sentence that conveys the method (PATCH) and immediate effect without waste. It is concise and front-loaded, though arguably too minimal to cover critical details, the structure itself is efficient.

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

Completeness1/5

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

Given 11 parameters, no output schema, and no annotations, the description is severely under-specified. It does not mention required parameters, return values, error cases, or any caveats, making it inadequate for an AI agent to invoke the tool safely and correctly.

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

Parameters1/5

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

Schema description coverage is only 27% (3 of 11 properties), and the description itself does not explain any parameters. It fails to note that time_entry_id is required or which common fields can be updated, providing zero value beyond the schema.

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

Purpose5/5

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

The description clearly states 'partially update a time entry (PATCH)' with a specific verb and resource, distinguishing it from other update tools like focus_update_project and focus_update_task. The PATCH method further clarifies its scoped behavior.

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

Usage Guidelines3/5

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

The description implies usage for modifying a subset of time entry fields via 'partially update' and mentions 'changes apply immediately', but it does not explicitly specify when to prefer this over other tools, nor does it mention any exclusions or prerequisites.

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

focus_whoamiA

Toggl Focus/2.0: return account metadata and user settings for the authenticated Focus API key. Not Track.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID. Defaults to TOGGL_WORKSPACE_ID or cached context.
organization_idNoOrganization ID. Defaults to TOGGL_ORGANIZATION_ID or cached context.
include_settingsNoIf true (default), also fetch GET /users/me/settings

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It indicates a read-only return operation and the authentication context, but it does not disclose details like the default of include_settings or reliance on cached context, which are left to the schema.

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

Conciseness5/5

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

The description is a single, focused sentence with no superfluous content. 'Not Track' is a necessary disambiguator and earns its place.

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

Completeness4/5

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

For a simple whoami-style tool with three optional parameters and no output schema, the description provides sufficient high-level information about returned data. It could be more explicit about workspace/organization context, but the parameter defaults imply the connection.

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

Parameters3/5

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

Schema coverage is 100% with descriptive parameter explanations, so the baseline is 3. The description does not add any parameter-level information beyond what is already in the schema.

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

Purpose5/5

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

The description uses a specific verb ('return') and identifies a clear resource ('account metadata and user settings'). It distinguishes itself from Toggl Track via 'Not Track' and is clearly distinct from sibling tools like focus_get_workspace_context.

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

Usage Guidelines3/5

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

The description implies usage as a whoami-style lookup for Focus account info, but it does not explicitly state when to use it vs alternatives. The 'Not Track' note clarifies product scope but provides no concrete alternative comparisons or exclusionary guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 24 tool updatesv1.0.2
    • First observedfocus_create_client
    • First observedfocus_create_project
    • First observedfocus_create_tag
    • First observedfocus_create_task
    • First observedfocus_create_time_entry
    • First observedfocus_delete_time_entry
    • First observedfocus_get_current_timer
    • First observedfocus_get_project
    • First observedfocus_get_task
    • First observedfocus_get_workspace_context
    • First observedfocus_list_clients
    • First observedfocus_list_org_users
    • First observedfocus_list_projects
    • First observedfocus_list_statuses
    • First observedfocus_list_tags
    • First observedfocus_list_tasks
    • First observedfocus_list_time_entries
    • First observedfocus_search
    • First observedfocus_start_timer
    • First observedfocus_stop_timer
    • First observedfocus_update_project
    • First observedfocus_update_task
    • First observedfocus_update_time_entry
    • First observedfocus_whoami

TDQS

A3.5/5.0

Scored across 24 tools

Disambiguation5/5

Each tool targets a distinct resource and action (e.g., get_current_timer vs. list_time_entries, start_timer vs. create_time_entry). Even with overlapping domains, the descriptions make boundaries clear.

Naming Consistency5/5

All tools share the 'focus_' prefix and almost all follow a verb_noun pattern (list_projects, create_task, update_time_entry). The few exceptions (whoami, search) are standard single-word commands and don't break the overall consistency.

Tool Count4/5

24 tools is on the higher end but justified by the broad Toggl Focus domain covering projects, tasks, time entries, clients, tags, statuses, and user/context helpers. It feels comprehensive without redundant or trivial tools.

Completeness3/5

Core resources have strong coverage: projects and tasks support list/get/create/update, and time entries support list/create/update/delete. However, projects and tasks lack delete operations, and clients/tags only support list/create, leaving notable lifecycle gaps for these resources.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers