Skip to main content
Glama
sesonet

freelo-mcp-server

Official
by sesonet

@sesonet/freelo-mcp-server

MCP (Model Context Protocol) server for Freelo project management API.

Key Features:

  • 33 curated tools (reduced from 98 in original)

  • Readonly mode by default (--readonly flag)

  • Audit logging (JSONL + optional webhook)

  • All MCP clients supported (Claude Code, Cursor, VS Code, etc.)

Fork of karlost/FreeloMCP.

Installation

Note: This package is not published to npm registry. Install directly from GitHub.

# Install globally from GitHub
npm install -g github:sesonet/freelo-mcp-server

Related MCP server: Freelo MCP Server

Quick Start

# Set credentials
export FREELO_EMAIL="your@email.com"
export FREELO_API_KEY="your-api-key"

# Run in readonly mode (default)
freelo-mcp-server

# Run with all tools (including edit operations)
FREELO_READONLY=false freelo-mcp-server

Documentation

Tool Categories

Category

Tools

Description

Projects

4

List, details, workers

Tasks

11

CRUD, finish, activate, templates

Tasklists

2

List, details

Subtasks

2

List, create

Comments

1

List all comments

Notes

3

Get, create, update

Users

2

List, assignable workers

Time Tracking

2

Start, stop timer

Work Reports

3

List, create, update

Search

2

Elasticsearch, custom filters

States

1

List task states

Total: 33 tools (20 readonly + 13 edit)

Modes

Readonly Mode (Default)

FREELO_READONLY=true freelo-mcp-server

Only 20 read-only tools available. Safe for browsing and reporting.

Full Mode

FREELO_READONLY=false freelo-mcp-server

All 33 tools available including create, update, and finish operations.

Audit Logging

All tool calls are logged to audit.jsonl:

{"timestamp":"2025-01-12T10:30:00.000Z","tool":"freelo_get_projects","params":{},"status":"success","durationMs":245}

Configure via environment:

FREELO_AUDIT_LOG=./logs/audit.jsonl  # Log file path
FREELO_AUDIT_WEBHOOK=https://...      # Optional webhook URL
FREELO_AUDIT_ENABLED=false            # Disable logging

Environment Variables

Variable

Required

Description

FREELO_EMAIL

Yes

Freelo account email

FREELO_API_KEY

Yes

Freelo API key

FREELO_USER_AGENT

No

Custom User-Agent

FREELO_READONLY

No

Enable readonly mode

FREELO_AUDIT_LOG

No

Audit log path

FREELO_AUDIT_WEBHOOK

No

Webhook URL

FREELO_AUDIT_ENABLED

No

Enable/disable audit

Client Configuration

Claude Code (CLI)

Add to ~/.claude.json (macOS/Linux) or %USERPROFILE%\.claude.json (Windows):

{
  "mcpServers": {
    "freelo": {
      "type": "stdio",
      "command": "freelo-mcp-server",
      "env": {
        "FREELO_EMAIL": "your@email.com",
        "FREELO_API_KEY": "your-api-key",
        "FREELO_READONLY": "true"
      }
    }
  }
}

Other Clients

See Installation Guide for Cursor, VS Code, Windsurf, and Continue.dev setup.

License

MIT License - see LICENSE for details.

Dual copyright:

  • Original: (c) 2024 Chodeec

  • Fork: (c) 2025 sesonet

Available Tools

33 tools
freelo_activate_taskFreelo Activate TaskA
Idempotent

Reactivates a finished task, moving it back to active state. Use when a completed task needs to be reopened.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to reactivate. Must be a finished task.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
project_idNoProject ID
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate this is a mutating, non-destructive, idempotent operation. The description adds meaningful behavioral context by specifying the state transition from finished to active. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no redundant phrasing. The core action is stated first, followed by the usage condition. Every word earns its place.

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

Completeness5/5

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

For a simple one-parameter state-change tool, the description is complete. The output schema covers return values, annotations cover safety and idempotency, and the schema covers the required 'finished task' precondition.

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%, and the parameter description in the schema already states 'Task ID to reactivate. Must be a finished task.' The tool description adds no additional parameter-level detail, so the baseline of 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 uses a specific verb ('reactivates') and clearly states the resource and state change: a finished task moved back to active state. This differentiates it from sibling tools like freelo_finish_task without needing to inspect schemas.

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 explicitly says when to use the tool: 'Use when a completed task needs to be reopened.' It gives clear context for use, though it does not explicitly mention when not to use it or name alternative tools.

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

freelo_create_noteFreelo Create NoteA
Idempotent

Creates a new note in a project. Notes are standalone documents for project documentation, meeting minutes, or specifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteDataYesNote data
projectIdYesProject ID (e.g., "197352"). Get from freelo_get_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesNote name
uuidYesUUID identifier
authorNoUser object
contentNoNote content
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare this as an idempotent, non-read-only, non-destructive operation, and the description's 'creates' aligns with that. The description adds some useful conceptual context about notes but does not disclose additional operational behaviors such as authentication requirements, side effects, or output behavior. The annotation coverage keeps this at a 3 rather than lower.

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 short sentences with no filler. The primary action is front-loaded in the first sentence, and the second sentence earns its place by explaining when notes are the right artifact type.

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

Completeness5/5

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

For a simple create operation with two required parameters, 100% schema coverage, and an output schema present, the description plus schema is sufficient. It explains what a note is, what the tool does, and the conceptual place of notes relative to tasks, leaving no critical gap for the agent to call the tool correctly.

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%, so the schema already documents projectId and noteData, including the projectId example and the instruction to obtain it from freelo_get_projects. The description adds no parameter-level detail beyond what the schema provides, so the baseline 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 states a specific verb and resource: 'Creates a new note in a project.' It also clarifies what a note is by contrasting it with tasks and subtasks: 'standalone documents for project documentation, meeting minutes, or specifications.' This clearly distinguishes it from sibling tools like freelo_create_task and freelo_create_subtask.

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 usage context by listing concrete use cases for notes: project documentation, meeting minutes, or specifications. It does not explicitly mention when to prefer alternatives or when not to use the tool, but the standalone-document framing implies the boundary against task-creation siblings.

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

freelo_create_subtaskFreelo Create SubtaskA
Idempotent

Creates a subtask under an existing task. Subtasks help break down complex tasks into smaller pieces.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesParent task ID (e.g., "25368707"). Get from freelo_get_all_tasks.
subtaskDataYesSubtask data

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesSubtask ID
nameYesSubtask name
labelsNo
workerNoUser object
task_idYesParent task ID
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
tracking_usersNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, covering the core safety profile. The description adds the parent-child placement constraint, which is useful, but does not disclose behavior on invalid taskId, whether the parent task must exist, or error conditions. Consistent with annotations.

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?

Two short sentences, front-loaded with the core action and free of repetition. The first sentence earns its place fully; the second adds mild contextual value but is somewhat generic. No wasted words.

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 straightforward create tool with 100% schema coverage, an output schema, and safety annotations, the description is adequate. It lacks explicit preconditions (parent task must exist) and routing guidance among 32 siblings, though the taskId schema description ('Get from freelo_get_all_tasks') partially compensates.

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%, so both taskId and subtaskData are already documented with their own field descriptions. The description's 'under an existing task' phrase reinforces taskId's meaning but adds no new parameter-level detail 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 states a specific verb and resource — 'Creates a subtask under an existing task' — and the phrase 'under an existing task' clearly differentiates it from siblings like freelo_create_task. An agent can identify the tool's function and scope without opening the schema.

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

Usage Guidelines3/5

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

The second sentence, 'Subtasks help break down complex tasks into smaller pieces,' implies when the tool is appropriate, but there is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named. Usage context is present but left to inference.

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

freelo_create_taskFreelo Create TaskB
Idempotent

Creates a new task in a specific tasklist. Task is created in active state.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskDataYesTask data
projectIdYesProject ID. Get from freelo_get_projects.
tasklistIdYesTasklist ID. Get from freelo_get_project_tasklists.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
project_idNoProject ID
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already convey the mutation profile (readOnlyHint=false, destructiveHint=false) and idempotency (idempotentHint=true). The description adds the useful detail that the task is created in active state. It does not elaborate on idempotent creation semantics, but it also does not contradict the annotations.

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 with the main verb and resource front-loaded. The active-state note earns its place as task behavior, and there is no filler or repetition.

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

Completeness4/5

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

Given 100% schema coverage, an output schema, and annotations covering safety and idempotency, the description is nearly complete for invocation. It clearly identifies the action and initial state; the only notable gap is the lack of usage-alternative context, which is already penalized in the usage dimension.

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%, so the schema already documents all parameters and requirements. The description adds no new parameter-level meaning beyond 'a specific tasklist', which is already implied by the tasklistId parameter. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific action ('Creates a new task') and a resource ('a specific tasklist'), and notes the initial active state. It is clear, but it does not explicitly distinguish this from sibling tools like freelo_create_task_from_template or freelo_create_subtask, so it misses the top level of differentiation.

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

Usage Guidelines2/5

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

No guidance is given on when to choose this tool over alternatives such as freelo_create_task_from_template or freelo_create_subtask. The mention of 'specific tasklist' implies a precondition, but no explicit when/when-not or alternative routing is provided.

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

freelo_create_task_from_templateFreelo Create Task From TemplateA
Idempotent

Creates a new task based on an existing template task. The new task inherits the template's name, description, and structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesTarget project ID. Get from freelo_get_projects.
tasklistIdYesTarget tasklist ID. Get from freelo_get_project_tasklists.
templateIdYesTemplate task ID. Get from template projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
project_idNoProject ID
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey that the operation mutates (readOnlyHint=false), is idempotent, and is non-destructive. The description adds that the new task inherits name, description, and structure, which is useful, but it does not disclose whether other aspects like subtasks, assignees, or custom fields are copied, leaving some behavioral ambiguity.

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

Conciseness5/5

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

A single sentence states the core action and the key inheritance behavior without filler. It is front-loaded and easy to scan, and every clause contributes information.

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

Completeness4/5

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

Given the low parameter count, full schema coverage, explicit annotations, and presence of an output schema, the description is largely complete. The only notable gap is the lack of explicit alternative guidance, but that does not prevent correct invocation in most cases.

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%, with each parameter already given a short explanation and provenance hint. The tool description does not add parameter-level detail beyond restating the template concept, so it does not need to compensate; 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?

Description names a specific action ('Creates a new task'), the source resource ('an existing template task'), and a meaningful consequence ('inherits the template's name, description, and structure'). This clearly distinguishes it from plain freelo_create_task and other task-related siblings.

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

Usage Guidelines3/5

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

Usage is implied: this tool is for creating a task from a template rather than from scratch. However, it does not explicitly say when to prefer this over freelo_create_task, nor does it mention any exclusions or prerequisites beyond the ID provenance hints in the schema.

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

freelo_create_work_reportFreelo Create Work ReportA
Idempotent

Creates a new work report (time entry) for a task. Use after completing work for timesheet entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID. Get from freelo_get_all_tasks.
reportDataYesWork report data

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesWork report ID
taskNoTask object (minimal)
userNoUser object
minutesYesMinutes worked
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
descriptionNoWork description
date_reportedYesDate of work (YYYY-MM-DD)

TDQS

A4/5.0
Behavior3/5

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

The annotations already establish that the tool is non-read-only, idempotent, and non-destructive, so the description does not need to repeat those traits. It adds helpful context by framing the created object as a work report/time entry and timing it after work. However, the phrase 'new work report' sits slightly ambiguously with idempotentHint=true, leaving repeated-call behavior somewhat unclear.

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 with no filler. The first sentence fronts the action and resource; the second sentence earns its place by specifying when to use the tool.

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 create tool with a fully documented schema and an output schema present, the description covers what is created and when to use it. It could be slightly stronger by pointing to related siblings for editing or reading work reports, but nothing essential is missing.

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 the schema already documents taskId, reportData, date, minutes, and description with examples. The description adds use-case context but no additional parameter-level meaning, so the baseline 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 states a specific verb ('Creates'), a specific resource ('new work report'), and scope ('for a task'), with a clarifying parenthetical that it is a time entry. This distinguishes it from siblings like freelo_update_work_report and freelo_get_work_reports.

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 second sentence provides a clear trigger condition: 'Use after completing work for timesheet entry.' It does not explicitly mention exclusions or alternatives, such as using freelo_update_work_report to modify an existing entry, but the creation context is clearly implied.

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

freelo_edit_taskFreelo Edit TaskA
Idempotent

Updates an existing task. Can modify name, assignment, due date, or priority. For description updates, use freelo_update_task_description.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to update. Get from freelo_get_all_tasks.
taskDataYesTask update data - only include fields to change

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
project_idNoProject ID
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry the behavioral profile (readOnlyHint=false confirms mutation, idempotentHint=true confirms safe re-invocation, destructiveHint=false). The description adds the field scope and that the target must be an existing task, which is useful but not rich. No contradiction exists and the description works with the annotations rather than replacing them.

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

Conciseness5/5

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

Two sentences with zero filler. The core action is stated first, the field scope second, and the routing exclusion third — exactly the order an agent needs. Every sentence earns its place, including the disclosure of additionalProperties: false being left to the schema where it belongs.

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 two-parameter update tool with fully documented schema fields, a nested object, an output schema, and consistent annotations, the description covers the essential selection and invocation concerns. The 'only include fields to change' patch semantics live in the schema, and return values are covered by the output schema. Minor gaps like error behavior and permission requirements are acceptable at this complexity level.

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% — taskId, taskData, and every nested sub-field (name, worker, dueDate, priority) are documented, including format (YYYY-MM-DD) and semantics (higher = more important). The description's field list ('assignment' mapping to worker) merely restates what the schema already says, 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?

States a specific verb and resource ('Updates an existing task') and enumerates the exact modifiable fields (name, assignment, due date, priority). It also actively distinguishes itself from the sibling freelo_update_task_description, so an agent can tell these two edit tools apart without inspecting either schema.

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 when to use it (when modifying name, assignment, due date, or priority) and gives one explicit exclusion with a named alternative: 'For description updates, use freelo_update_task_description.' It doesn't enumerate other alternatives, but the main ambiguity for an edit operation is resolved.

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

freelo_finish_taskFreelo Finish TaskA
Idempotent

Marks a task as finished/completed. Task is moved to finished state, preserving all data. Can be reactivated with freelo_activate_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to mark as finished. Get from freelo_get_all_tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
project_idNoProject ID
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context beyond that by stating the task preserves all data and can be reactivated, which tells the agent the operation is reversible and non-destructive.

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 compact sentences with no filler. The core action is front-loaded, and the reversibility note is a valuable addition that earns its place.

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

Completeness5/5

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

For a single-parameter tool with a rich schema, output schema, and relevant annotations, the description is complete. It states the action, outcome, data preservation, and reversal path; nothing essential is missing for correct 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 100% and the schema already documents taskId with its source (freelo_get_all_tasks). The main description does not add parameter-level meaning beyond the schema, so the baseline score of 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 uses a specific verb and resource ('Marks a task as finished/completed') and clarifies the state transition ('moved to finished state, preserving all data'). It also distinguishes this from the inverse sibling freelo_activate_task, so an agent can correctly separate the two lifecycle operations.

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 clearly implies this is the operation to use when completing a task and explicitly names freelo_activate_task as the reactivation counterpart. It does not list exclusions or alternative completion-related tools, but the lifecycle context is strong enough for an agent to call it appropriately.

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

freelo_get_all_commentsFreelo Get All CommentsA
Read-only

Fetches all comments across projects with filtering and sorting. Includes discussions on tasks, documents, files, and links.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoOptional filters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations by disclosing that the result spans multiple entity types (tasks, documents, files, links), which helps set expectations. It does not add detail on pagination behavior, result limits, or defaults, but this is modest given the read-only nature and existing annotations. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with zero filler. The first sentence front-loads the verb, resource, and capabilities ('Fetches all comments across projects with filtering and sorting'), and the second sentence earns its place by clarifying which entity types are included. Every word contributes.

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?

The tool has a full output schema, complete parameter documentation, and annotations covering its read-only, non-destructive behavior, so the description does not need to explain return values or safety. It adequately specifies the resource, scope, and entity coverage. The only notable omission is guidance on when to prefer this aggregate tool over search or focused per-entity tools, which overlaps with the usage_guidelines gap.

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%, so each parameter (p, type, order, order_by, projects_ids) is already documented in the schema. The description's 'filtering and sorting' phrase is a high-level summary that maps to the filters object but adds no concrete detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('Fetches') and a specific resource ('all comments across projects'), and the second sentence clarifies the entity scope ('discussions on tasks, documents, files, and links'). This is clear and distinct enough from sibling tools like freelo_get_all_tasks or freelo_get_all_projects, though it does not explicitly name any sibling to rule out.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: 'Fetches all comments across projects' suggests using it when aggregating comments globally, and the filtering/sorting note hints at its capabilities. However, there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as freelo_search_elasticsearch or per-entity tools.

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

freelo_get_all_projectsFreelo Get All ProjectsA
Read-only

Fetches all projects in Freelo - both owned and shared. Supports pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a real behavioral fact—pagination support—but doesn't explain how pagination is controlled or surfaced, leaving only partial transparency.

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

Conciseness5/5

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

Two short sentences, each carrying distinct information (scope and pagination). No filler or redundant restatement of the title.

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

Completeness4/5

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

With no parameters and an output schema present, the description covers the essential selection and invocation context. The only small gap is that 'supports pagination' is not expanded into how a subsequent page is requested or identified, but the output schema may cover that.

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?

There are zero parameters, and the schema is empty with 100% coverage, so there is nothing for the description to disambiguate. Per the baseline for zero-parameter tools, this is 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 uses a specific verb ('fetches') and resource ('all projects in Freelo') and explicitly scopes it to 'both owned and shared', which clearly distinguishes it from the sibling freelo_get_projects. The 'Supports pagination' note further characterizes the operation.

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

Usage Guidelines3/5

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

It conveys that this is for retrieving the full project set including shared projects, giving implied usage context. However, it never names the sibling alternative freelo_get_projects or states when not to use this tool, so the agent must infer the decision from scope alone.

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

freelo_get_all_statesFreelo Get All StatesA
Read-only

Fetches all available task states in Freelo. States represent task lifecycle (1=active, 2=finished). Essential for state_id filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already signal a safe read-only operation. The description adds valuable behavioral context beyond the schema by documenting the numeric state mapping and emphasizing that the result is needed as filter input. It does not contradict the annotations and enriches understanding of how the data should be used.

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, purposeful sentences front-load the core purpose, then add the only two pieces of essential context: the numeric lifecycle mapping and the primary use case. There is no filler or redundant restating of the tool name.

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

Completeness5/5

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

This is a zero-parameter, read-only lookup tool with an output schema. The description fully covers what the tool returns, why an agent would need it, and how the values are encoded. Nothing needed for correct invocation is missing.

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 is empty, so there are no parameters to document. With zero parameters, the baseline is 4; the description still contributes semantic value by explaining what states mean and why they matter, which compensates for the absence of parameters entirely.

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 ('Fetches') with an explicit resource ('all available task states in Freelo') and adds domain meaning by explaining the lifecycle values (1=active, 2=finished). It clearly distinguishes itself from sibling tools by focusing on states rather than tasks, projects, or time tracking.

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 states a clear use context: 'Essential for state_id filters.' This tells an agent when the tool's output matters, though it does not explicitly mention when not to use it or name alternative tools. Since no sibling tool appears to specialize in states, the guidance is sufficient but not exhaustive.

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

freelo_get_all_tasksFreelo Get All TasksA
Read-only

Fetches all tasks across all projects with filtering. Supports search, project/tasklist filter, label filter, date ranges, worker assignment, and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoOptional filters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying that this fetches tasks across all projects and supports filtering and pagination, which goes beyond a bare 'get tasks' 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?

Two short sentences with no filler. The core scope ('all tasks across all projects') is front-loaded, and the second sentence efficiently summarizes the filter capabilities.

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

Completeness4/5

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

Given the detailed input schema and the presence of an output schema, the description is complete enough for an agent to understand the tool's role. It does not enumerate every filter, but the schema already covers those details, so no critical calling context is missing.

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%, so the schema fully documents every filter parameter. The description provides a useful high-level summary of filter categories but does not add substantive meaning beyond the schema, so 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 uses a specific verb ('Fetches') and resource ('all tasks across all projects'), and clearly marks this as a broad listing tool with filtering. This distinguishes it from siblings like freelo_get_task_details, freelo_get_finished_tasks, and freelo_get_tasks_by_filter_uuid.

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 broad task retrieval across projects, but it does not explicitly state when to prefer it over alternatives or when not to use it. It gives clear context but no exclusions or comparative guidance.

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

freelo_get_assignable_workersFreelo Get Assignable WorkersA
Read-only

Fetches users who can be assigned to tasks in a specific tasklist. Use before creating or assigning tasks to ensure the assignee has access.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID (e.g., "197352"). Get from freelo_get_projects.
tasklistIdYesTasklist ID (e.g., "12345"). Get from freelo_get_project_tasklists.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, so the read-only safety profile is covered. The description adds meaningful behavioral context by clarifying that the result is limited to users who can be assigned within a specific tasklist, which is not captured by the annotations.

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

Conciseness5/5

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

Two sentences, no filler: the first states the function, the second states when to use it. The key scoping detail ('specific tasklist') is front-loaded.

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

Completeness5/5

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

The output schema exists, parameters are fully documented, and the description covers both what the tool does and when it should be used. For a simple read-only lookup, nothing essential is missing.

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% parameter coverage, with each parameter described and sourced (projectId from freelo_get_projects, tasklistId from freelo_get_project_tasklists). Since the schema already carries the parameter meaning, the description doesn't need to add more.

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 explicitly states the operation as 'Fetches users who can be assigned to tasks in a specific tasklist,' providing a clear verb-resource-scope combination. The 'specific tasklist' qualifier differentiates it from siblings like freelo_get_project_workers (project-scoped) and freelo_get_users (global).

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 explicit usage context: 'Use before creating or assigning tasks to ensure the assignee has access.' It does not explicitly name alternatives or state when not to use the tool, but the workflow guidance is clear enough to direct an agent.

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

freelo_get_finished_tasksFreelo Get Finished TasksA
Read-only

Fetches completed/finished tasks from a specific tasklist. For finished tasks across all projects, use freelo_get_all_tasks with state_id=2.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasklistIdYesTasklist ID (e.g., "12345"). Get from freelo_get_project_tasklists.
search_queryNoOptional fulltext search to filter task names

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds scoping context but does not disclose pagination, ordering, or response-size behavior. This is adequate but not rich, matching the baseline for annotation-backed read tools.

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 with no filler. The primary behavior is front-loaded, and the alternative routing is included in a single follow-up sentence.

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

Completeness5/5

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

For a simple read-only fetch with a required tasklistId, optional search filter, full schema coverage, and an output schema present, the description provides sufficient context. It covers scope, the key alternative, and the parameter source via the schema.

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%, and the schema already documents tasklistId (including where to obtain it) and search_query. The description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 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 states a specific action ('Fetches completed/finished tasks') and a specific resource ('from a specific tasklist'). It also distinguishes itself from the sibling freelo_get_all_tasks by explicitly noting the cross-project alternative.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool (finished tasks in a specific tasklist) and directs the agent to freelo_get_all_tasks with state_id=2 for finished tasks across all projects. This provides clear routing guidance relative to the main alternative.

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

freelo_get_noteFreelo Get NoteA
Read-only

Fetches a specific note by ID, including title, content, and metadata. Notes are standalone documents for project documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteIdYesNote ID (e.g., "12345"). Get from project details or search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesNote name
uuidYesUUID identifier
authorNoUser object
contentNoNote content
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive behavior, and the description adds useful context about the response contents and the document nature of notes. There is no contradiction with the annotations, and the added detail about what is fetched goes beyond the structured metadata.

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

Conciseness5/5

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

Two sentences with no filler. The primary action and resource are front-loaded, and the clarifying context about notes being standalone documents is concise and meaningful.

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-by-ID tool with one parameter, an output schema, and safety annotations, this description is nearly complete. It tells the agent what the tool returns and what notes are in this system, which is enough to select and invoke it correctly. It does not cover edge cases like missing IDs, but that is adequately handled by the schema and output schema context.

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 schema already provides 100% coverage of the single parameter, including a concrete example and a hint for where to obtain the value. The description adds no additional parameter-specific meaning, so the baseline of 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 states a clear verb ('Fetches'), a specific resource ('a specific note by ID'), and the expected payload ('title, content, and metadata'). The phrase 'Notes are standalone documents for project documentation' distinguishes this from task-related siblings like freelo_get_task_details and freelo_get_task_description.

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 this tool by clarifying that notes are standalone documentation documents, which separates them from tasks, projects, and comments. However, it does not explicitly state when not to use it or name alternative tools, so the usage guidance remains implicit rather than direct.

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

freelo_get_project_detailsFreelo Get Project DetailsB
Read-only

Fetches detailed information about a specific project including workers, tasklists, and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID (e.g., "197352"). Get from freelo_get_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesProject ID
nameYesProject name
tagsNoProject tags
ownerNoProject owner
stateNoProject state
clientNoClient information
workersNoProject workers
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tasklistsNoActive tasklists
currency_isoNoProject currency
custom_fieldsNoCustom fields
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about what is fetched (workers, tasklists, settings), but does not disclose details like response size, filtering behavior, or whether all project fields are returned.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the action and resource, then lists the key content areas. Every word 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?

With an output schema present, return-value details are not required. The combination of description, annotations, and schema sufficiently covers the tool's purpose, safety, and single parameter. The main gap is the lack of usage guidance relative to sibling tools, but that is already penalized in the usage dimension.

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%, so the schema already documents the projectId parameter, including an example and where to obtain it. The description adds no additional parameter semantics, but none are needed given the 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?

The description names a specific verb ('Fetches'), resource ('detailed information about a specific project'), and the main included content ('workers, tasklists, and settings'). It is clear about what the tool does, though it does not explicitly differentiate from closely related siblings like freelo_get_project_workers or freelo_get_project_tasklists.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. The schema parameter note says to get projectId from freelo_get_projects, but the description itself does not state usage context, prerequisites, or when not to use this tool.

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

freelo_get_projectsFreelo Get ProjectsA
Read-only

Fetches your own active projects in Freelo. Returns only projects that you own. For all accessible projects, use freelo_get_all_projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context beyond annotations: it only returns projects the user owns and only active ones, not all accessible projects.

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

Conciseness5/5

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

Two sentences with no wasted words. The scope and ownership constraint are front-loaded, and the sibling distinction is included in the second sentence.

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

Completeness5/5

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

For a zero-parameter read-only tool with an output schema present, the description is complete. It covers ownership, active status, and the key sibling alternative, while annotations cover the read-only nature.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. There are no parameter descriptions needed, and the schema coverage is effectively complete with an empty properties object.

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

Purpose5/5

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

The description states a specific verb ('Fetches') and resource ('your own active projects in Freelo') and explicitly narrows the scope to owned projects. It also distinguishes the tool from freelo_get_all_projects, so an agent can tell them apart immediately.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool versus the alternative: use it for owned active projects, and use freelo_get_all_projects for all accessible projects. This direct routing removes ambiguity.

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

freelo_get_project_tasklistsFreelo Get Project TasklistsA
Read-only

Fetches all tasklists within a project. Tasklists organize tasks into logical groups (e.g., "To Do", "In Progress", "Done"). Use after freelo_get_projects to drill down into project structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID (e.g., "197352"). Get from freelo_get_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description adds meaningful context beyond annotations: what a tasklist is ('organize tasks into logical groups, e.g., To Do, In Progress, Done') and the all-tasklists scope. This enriches the agent's understanding of the returned data. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences, zero waste. The first sentence front-loads the core action and scope; the second provides domain context and workflow guidance. Every clause earns its place, and the structure is easy to scan.

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

Completeness5/5

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

For a simple tool with one well-documented parameter, an existing output schema, and annotations covering the read-only behavior, the description is complete. It covers what the tool does, what a tasklist represents, and where it fits in the project-navigation flow. Nothing an agent needs to invoke it correctly is missing.

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 the schema already documents projectId thoroughly with a concrete example ('197352') and provenance ('Get from freelo_get_projects'). The description reinforces this provenance but adds no new parameter meaning, so the baseline 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 states a specific verb and resource: 'Fetches all tasklists within a project.' The scope is explicit ('all tasklists within a project'), which distinguishes it from siblings like freelo_get_tasklist_details (single tasklist) and freelo_get_all_tasks (tasks, not tasklists). The title also matches the description, leaving no ambiguity.

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 sequencing guidance: 'Use after freelo_get_projects to drill down into project structure.' This tells the agent when in a workflow to invoke this tool. It does not name alternatives or state when-not-to-use (e.g., pointing to freelo_get_tasklist_details for a single tasklist), so it falls short of a 5 but provides clear context.

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

freelo_get_project_workersFreelo Get Project WorkersB
Read-only

Fetches all workers (team members) assigned to a specific project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID (e.g., "197352"). Get from freelo_get_projects.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing the read-only safety profile. The description clarifies that returned workers are specifically those assigned to the project, adding a small behavioral nuance, but it does not cover response format, pagination, or permissions. With annotations present, this is adequate but not enriched.

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

Conciseness5/5

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

A single focused sentence with no filler. The action and object are front-loaded, and every word contributes meaning, making it an exemplary concise definition.

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 one-parameter, read-only fetch tool, the description conveys the core behavior and scope. Minor gaps remain: there is no output schema to clarify the return format, and the description does not explicitly disambiguate from related worker-list siblings, but the schema and annotations cover most operational needs.

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%. The projectId parameter description includes an example ('197352') and a clear source pointer ('Get from freelo_get_projects'). The tool description itself adds no parameter-level detail, so the schema carries the full burden and the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('fetches') and a clear resource ('workers assigned to a specific project'), making the tool's purpose obvious. It does not explicitly name sibling tools like freelo_get_assignable_workers or freelo_get_users, so differentiation relies on the 'assigned to a specific project' qualifier.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives. The 'assigned to a specific project' phrasing implies a scoping condition, but there is no mention of freelo_get_assignable_workers, freelo_get_users, or any exclusions that would help an agent choose correctly.

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

freelo_get_subtasksFreelo Get SubtasksA
Read-only

Fetches all subtasks belonging to a parent task. Returns subtasks with their names, statuses, and assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesParent task ID (e.g., "25368707"). Get from freelo_get_all_tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context by specifying the return contents (names, statuses, assignments), but does not disclose pagination, ordering, or other behavioral traits beyond that.

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

Conciseness5/5

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

Two sentences with no filler: the first states the action and target, the second summarizes the return value. It is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a single-parameter read-only tool with an output schema and annotations, the description is sufficiently complete. It explains the scope, return contents, and the required input, with no missing critical information.

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 has 100% parameter coverage, including an example and a source hint ('Get from freelo_get_all_tasks'). The description adds no additional meaning for taskId beyond what the schema already provides, 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.

Purpose4/5

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

The description states a specific verb ('Fetches') and resource ('all subtasks belonging to a parent task'), making the core purpose immediately clear. It does not explicitly contrast with sibling tools like freelo_get_task_details or freelo_create_subtask, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

The description implies the tool should be used when subtasks of a parent task are needed, but it provides no explicit guidance about when to choose this over alternatives. It does not mention exclusions, prerequisites beyond the taskId, or edge cases.

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

freelo_get_task_descriptionFreelo Get Task DescriptionA
Read-only

Fetches only the description content of a task. More lightweight than freelo_get_task_details when you only need the description text.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (e.g., "25368707"). Get from freelo_get_all_tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
authorNoTask author
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
subtasksNoSubtasks
project_idNoProject ID
descriptionNoTask description
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
time_estimateNo
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo
date_finished_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying that only the description content is fetched and that this variant is more lightweight than the details endpoint, which helps agents predict response scope and cost.

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 with no filler. The core behavior is front-loaded, the comparison to the sibling is placed second, and every word contributes to helping an agent decide whether to invoke this tool.

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

Completeness5/5

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

The tool is simple (one required parameter), the schema fully documents that parameter, the output schema exists so return values need not be described, and annotations cover safety. The description provides the missing contextual piece—when to choose this over freelo_get_task_details—making the definition complete.

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

Parameters3/5

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

Schema description coverage is 100%: taskId is fully documented with type, required status, an example, and a source (freelo_get_all_tasks). The description does not add parameter-specific details, but the schema already carries the full burden, 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 states a specific action ('Fetches only the description content of a task') on a clear resource, and explicitly distinguishes itself from freelo_get_task_details. An agent can immediately understand what this tool does and how it differs from a closely related sibling.

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

Usage Guidelines5/5

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

The description names the alternative freelo_get_task_details and provides the selection condition: use this tool when 'you only need the description text.' It also tells the agent where to obtain the taskId (from freelo_get_all_tasks), giving clear practical guidance.

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

freelo_get_task_detailsFreelo Get Task DetailsA
Read-only

Fetches complete details about a specific task including name, description, assignees, due date, priority, status, labels, and metadata. Use after finding tasks with freelo_get_all_tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (e.g., "25368707"). Get from freelo_get_all_tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
authorNoTask author
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
subtasksNoSubtasks
project_idNoProject ID
descriptionNoTask description
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
time_estimateNo
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo
date_finished_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a list of returned task details but does not add deeper behavioral context such as pagination, error cases, or that the tool only returns task-level data rather than subtasks. This is acceptable given the annotations and output 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 two sentences long, front-loads the core purpose, and immediately provides actionable sequencing advice. Every sentence earns its place with no redundancy.

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

Completeness5/5

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

With a single parameter, a complete output schema, and annotations covering the read-only nature, the description provides everything an agent needs: what the tool does, what it returns at a high level, and how to obtain the required taskId. No critical context is missing.

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 the taskId parameter already includes an example and a pointer to freelo_get_all_tasks. The description adds no additional parameter semantics, 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 states a specific verb ('Fetches complete details') and a clear resource ('a specific task'), and enumerates the included fields. This makes it easy to distinguish from sibling tools like freelo_get_all_tasks (list) and freelo_get_task_description (only description).

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 explicit sequencing guidance: 'Use after finding tasks with freelo_get_all_tasks.' It does not explicitly mention exclusions or when to prefer sibling tools like freelo_get_task_description, but the stated context is sufficient for basic routing.

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

freelo_get_tasklist_detailsFreelo Get Tasklist DetailsA
Read-only

Fetches detailed information about a specific tasklist including name, description, color, workers, and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasklistIdYesTasklist ID (e.g., "12345"). Get from freelo_get_project_tasklists.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTasklist ID
nameYesTasklist name
colorNoTasklist color
orderNoTasklist order
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful content-level detail about workers and settings but does not mention error cases, rate limits, or response behavior beyond what the output schema likely already communicates.

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 names the action and object immediately. Every detail included earns its place, and there is no redundant 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 single-parameter read-only tool with full schema coverage, an output schema, and read-only annotations, the description is largely sufficient. A short pointer to sibling alternatives would make it fully complete, but nothing essential is missing for making a correct call.

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 the parameter description already provides the ID format ('e.g., "12345"') and its source (freelo_get_project_tasklists). The tool description only restates 'specific tasklist' and adds no new parameter semantics, 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 uses a specific verb ('Fetches') and a specific resource ('a specific tasklist') while enumerating the returned content: name, description, color, workers, and settings. This clearly differentiates it from sibling tools like freelo_get_project_tasklists, which retrieve collections rather than a single tasklist's details.

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 it should be used when a single tasklist's details are needed, and the parameter schema points to freelo_get_project_tasklists as the source of the ID. However, it never explicitly states when not to use this tool or names alternatives, so usage guidance is largely left to inference.

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

freelo_get_tasks_by_filter_uuidFreelo Get Tasks By Filter UuidA
Read-only

Fetches tasks using a custom filter UUID. Custom filters are pre-configured task searches with multiple criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the custom filter

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Fetches tasks' is consistent with that. The description adds useful context about pre-configured filters but does not disclose behaviors like pagination, result ordering, or potential missing fields.

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 short, front-loaded sentences with no filler. Every sentence adds relevant information about what the tool does and why the UUID matters.

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

Completeness5/5

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

For a single-parameter read-only tool with a full input schema and an output schema, the description is sufficient for an agent to invoke it correctly. The context around custom filters provides enough orientation without needing excessive detail.

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 schema already provides 100% coverage for the single 'uuid' parameter with a clear description. The tool description echoes this by calling it a custom filter UUID but does not add substantive new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states a specific action and resource: fetching tasks using a custom filter UUID. It also explains what a custom filter is, which distinguishes this tool from broader task-listing tools like freelo_get_all_tasks.

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 use when a custom filter UUID is available, and explains that custom filters are pre-configured searches. However, it does not explicitly state when to prefer this over alternatives such as freelo_get_all_tasks or freelo_search_elasticsearch.

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

freelo_get_usersFreelo Get UsersA
Read-only

Fetches all users in the Freelo workspace. Returns user list with names, emails, IDs, and roles. Essential for getting user IDs before assigning tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4.5/5.0
Behavior4/5

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

The description is consistent with the readOnlyHint and destructiveHint annotations and adds useful behavioral context: it returns all users in the workspace and includes specific fields. It does not discuss pagination or authorization, but for a simple read-only list operation this is not a significant gap.

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 with no filler. The core action is front-loaded, and the second sentence adds practical value by explaining why the tool matters for task assignment.

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

Completeness5/5

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

With no parameters, an output schema present, and annotations covering the read-only safety profile, the description provides enough context for an agent to select and invoke the tool correctly. The use case, return contents, and scope are all covered.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing for the description to clarify. Per the baseline for parameterless tools, 4 is appropriate because no param explanation is needed and the description appropriately focuses on what the tool returns.

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 ('Fetches'), a specific resource ('all users in the Freelo workspace'), and the key outcome (user list with names, emails, IDs, and roles). This clearly distinguishes it from sibling tools focused on projects, tasks, or notes.

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

Usage Guidelines4/5

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

It provides clear context for when to use this tool: 'Essential for getting user IDs before assigning tasks.' It does not explicitly name alternatives like freelo_get_project_workers or freelo_get_assignable_workers, nor state when not to use it, 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.

freelo_get_work_reportsFreelo Get Work ReportsA
Read-only

Fetches work reports (time entries) with filtering. Essential for billing, productivity analysis, and project reporting.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoOptional filters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read. The description adds that filtering is supported and clarifies that work reports are time entries, but it does not disclose additional behavioral details such as default scope when no filters are supplied. There is no contradiction with annotations.

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 front-loads the core action and resource, then adds the filtering capability and a short use-case statement. It contains no filler or redundant content.

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 tool with one optional filters parameter and an output schema present, the description is mostly complete. It names the resource type and use cases. The only minor omission is not explicitly stating that omitting filters returns all work reports, but the schema marks filters as optional, allowing inference.

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%, so the schema fully documents the filters object and its nested properties. The description adds only the generic phrase 'with filtering' and does not explain parameters further, but the schema already carries that weight.

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 explicitly states 'Fetches work reports (time entries)' – a specific verb plus resource – and notes the filtering capability. It is immediately distinguishable from siblings like freelo_create_work_report and freelo_update_work_report because it is the only read operation for this resource.

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 use contexts: 'Essential for billing, productivity analysis, and project reporting.' It does not explicitly name alternatives or exclusion conditions, but since there is no sibling that fetches work reports, the guidance is adequate for selection.

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

freelo_search_elasticsearchFreelo Search ElasticsearchA
Read-only

Performs full-text search across Freelo using Elasticsearch. Searches tasks, subtasks, projects, tasklists, files, and comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchDataYesSearch data with query and filters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesItems in the response

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the scope of entities searched but does not disclose result ordering, pagination behavior, query syntax semantics, or any Elasticsearch-specific quirks.

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 with no filler. The core purpose and entity scope are front-loaded, making the tool immediately understandable.

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?

The input schema is thoroughly documented, an output schema exists, and annotations cover safety. The main gap is the lack of explicit guidance for choosing this tool over sibling retrieval tools, but for a read-only search tool the definition is otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, with every parameter including nested searchData fields already documented. The description adds no parameter-level meaning, so the baseline of 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 states a specific action ('Performs full-text search'), identifies the resource ('across Freelo'), and enumerates the searched entity types. This clearly distinguishes it from sibling tools that fetch specific objects by ID or filter.

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

Usage Guidelines3/5

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

The description implies this is the tool for cross-entity full-text search, but it does not explicitly state when to prefer it over sibling getters like freelo_get_tasks_by_filter_uuid or individual retrieval tools. No exclusions or alternative conditions are given.

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

freelo_start_time_trackingFreelo Start Time TrackingA

Starts real-time time tracking for a task. Creates an active timer that runs until stopped with freelo_stop_time_tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNoOptional task ID to track time for. If not provided, tracks general work time.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesWork report ID
taskNoTask object (minimal)
userNoUser object
minutesYesMinutes worked
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
descriptionNoWork description
date_reportedYesDate of work (YYYY-MM-DD)

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations, the description reveals that the tool creates a persistent active timer that runs until explicitly stopped. It also implies non-idempotency by describing an ongoing state. It does not mention what happens if a timer is already running, which is a minor gap, but the core behavioral trait is well disclosed.

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 compact sentences with no filler. The first sentence states the primary action and the second describes the lifecycle and names the stopping tool. Every sentence 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 tool with one optional parameter, an output schema, and clear annotations, the description is nearly complete. It could mention behavior when a timer is already active, but the combination of description, schema, output schema, and sibling context is sufficient for correct 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?

The input schema already fully documents the only parameter, taskId, including its optionality and fallback behavior. The description does not add parameter-level detail, so the baseline of 3 applies since schema coverage is 100%.

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 ('Starts real-time time tracking'), the resource (a task), and the resulting behavior (an active timer). It also explicitly names the sibling tool freelo_stop_time_tracking, which distinguishes this tool from its counterpart and clarifies its scope.

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: use this for real-time tracking and stop it with freelo_stop_time_tracking. It does not explicitly mention alternatives like manual work reports or edge cases, but the sibling pairing and real-time framing provide sufficient guidance for when to use it.

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

freelo_stop_time_trackingFreelo Stop Time TrackingA

Stops the currently active time tracking session. Calculates elapsed time and automatically creates a work report.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesWork report ID
taskNoTask object (minimal)
userNoUser object
minutesYesMinutes worked
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
descriptionNoWork description
date_reportedYesDate of work (YYYY-MM-DD)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds meaningful behavioral context by disclosing that stopping also calculates elapsed time and automatically creates a work report, which is a non-obvious side effect not captured by annotations.

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 short sentences with no filler. It front-loads the primary action and then adds only the essential automatic side effect, making it easy to scan and quickly act on.

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

Completeness5/5

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

For a zero-parameter tool with an output schema and annotations, this description is complete. It states what the tool does, what condition must hold ('currently active'), and what additional result occurs (work report creation), leaving no critical gap for an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, and the schema properties object is empty, so there is no parameter meaning to clarify. The baseline of 4 applies here because the description does not need to compensate for any missing parameter documentation.

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 names a specific verb ('Stops'), a clear resource ('currently active time tracking session'), and an important side effect (automatically creates a work report). This distinguishes it from siblings like freelo_start_time_tracking and freelo_create_work_report without needing to open schemas.

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 'currently active time tracking session' gives clear context: use this when a session exists and needs to be ended. It does not explicitly name alternatives or exclusions, but the usage condition is evident and distinguishes it from start_time_tracking.

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

freelo_update_noteFreelo Update NoteA
Idempotent

Updates an existing note's title or content. All fields are optional - only provide what needs to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteIdYesNote ID (e.g., "12345"). Get from freelo_get_note.
noteDataYesUpdated note data - only include fields to change

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesNote name
uuidYesUUID identifier
authorNoUser object
contentNoNote content
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already convey the key behavioral hints: non-read-only, idempotent, and non-destructive. The description's partial-update semantics are useful but are largely restated in the schema's noteData description; it adds no new detail about auth, side effects, errors, or what happens to unspecified fields.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. 'All fields are optional - only provide what needs to change' is concise and directly instructs the agent how to construct the call.

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

Completeness5/5

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

For a simple two-parameter update tool, the description plus schema and annotations is complete. The agent knows what to update, that the update is partial, and the schema supplies the required noteId and noteData structure; an output schema exists, so return-value documentation is unnecessary.

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%, so the schema already documents noteId and noteData thoroughly. The description's 'title or content' maps to the schema's 'name' and 'content' fields but does not add meaning 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 uses a specific verb ('Updates'), a clear resource ('existing note'), and the exact mutable fields ('title or content'). This distinguishes it from related tools like freelo_create_note and freelo_get_note without needing to open the schema.

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

Usage Guidelines4/5

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

The phrase 'existing note' clearly frames this as an update operation rather than creation, and 'only provide what needs to change' explains partial-update usage. However, it does not explicitly name alternatives such as freelo_create_note for new notes, so it stops short of full sibling routing.

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

freelo_update_task_descriptionFreelo Update Task DescriptionA
Idempotent

Updates only the description of a task. Supports plain text or markdown. Previous description is replaced completely.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID. Get from freelo_get_all_tasks.
descriptionYesNew description content (markdown supported). Use empty string to clear.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTask ID
nameYesTask name
authorNoTask author
labelsNo
workerNoUser object
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
due_dateNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
state_idNoState ID: 1=active, 2=finished
subtasksNoSubtasks
project_idNoProject ID
descriptionNoTask description
tasklist_idNoTasklist ID
due_date_endNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
priority_enumNoPriority: h=high, m=medium, l=low
time_estimateNo
date_edited_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
tracking_usersNo
date_finished_atNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses that the previous description is replaced completely, which is important behavioral context beyond what the annotations state. It also notes markdown support. This adds useful transparency without contradicting the idempotentHint.

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 with no filler. The core action is front-loaded and the replacement behavior is stated directly, making the definition easy to parse.

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

Completeness5/5

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

For a simple two-parameter update with an output schema and supporting annotations, the description covers the essential behavior: scope, format support, and replacement semantics. Nothing critical is missing.

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%, so the schema already documents both parameters well. The description adds supporting context about markdown and full replacement, but does not need to do significant compensating work.

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?

States a specific verb and resource: updates only the description of a task. The word 'only' differentiates it from broad task update tools like freelo_edit_task, and the scope is immediately clear.

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 clearly indicates this is for description-only updates, which tells an agent when to prefer it over freelo_edit_task. It does not explicitly name alternatives or exclusion conditions, but the scope language is strong enough to guide selection.

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

freelo_update_work_reportFreelo Update Work ReportA
Idempotent

Updates an existing work report. Use to correct time entries or add descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportDataYesUpdated data - only include fields to change
workReportIdYesWork report ID. Get from freelo_get_work_reports.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesWork report ID
taskNoTask object (minimal)
userNoUser object
minutesYesMinutes worked
date_addNoISO 8601 date-time format (e.g., "2021-10-04T09:32:00+02:00")
project_idNoProject ID
descriptionNoWork description
date_reportedYesDate of work (YYYY-MM-DD)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey readOnly=false, idempotent=true, and destructive=false. The description adds semantic behavior beyond the flags: this is a corrective, non-destructive partial update to time and description fields. It does not contradict the annotations.

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 with the action front-loaded and no filler or redundancy. Every word earns its place, and the purpose clause adds practical value.

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

Completeness5/5

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

For a two-parameter partial update with full schema coverage, an output schema, and rich annotations, nothing operationally necessary is missing. The schema covers where workReportId comes from and which fields are updatable; the description covers when and why to call the tool.

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%, so the baseline applies: workReportId, reportData, and nested fields are fully documented in the schema. The description only loosely maps to parameters via 'correct time entries or add descriptions' and adds no new parameter-level detail.

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 opens with 'Updates an existing work report', a specific verb plus target resource, and the second sentence narrows the intent to correcting time entries or adding descriptions. This clearly distinguishes the tool from sibling freelo_create_work_report, which would be used for new reports, and from read-only report tools.

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 usage context: use it to correct time entries or add descriptions to an existing report. It does not explicitly name alternatives like freelo_create_work_report or state when not to use it, so it falls just short of full exclusion 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. 33 tool updatesv0.5.0
    • First observedfreelo_activate_task
    • First observedfreelo_create_note
    • First observedfreelo_create_subtask
    • First observedfreelo_create_task
    • First observedfreelo_create_task_from_template
    • First observedfreelo_create_work_report
    • First observedfreelo_edit_task
    • First observedfreelo_finish_task
    • First observedfreelo_get_all_comments
    • First observedfreelo_get_all_projects
    • First observedfreelo_get_all_states
    • First observedfreelo_get_all_tasks
    • First observedfreelo_get_assignable_workers
    • First observedfreelo_get_finished_tasks
    • First observedfreelo_get_note
    • First observedfreelo_get_project_details
    • First observedfreelo_get_project_tasklists
    • First observedfreelo_get_project_workers
    • First observedfreelo_get_projects
    • First observedfreelo_get_public_link
    • First observedfreelo_get_subtasks
    • First observedfreelo_get_task_description
    • First observedfreelo_get_task_details
    • First observedfreelo_get_tasklist_details
    • First observedfreelo_get_tasks_by_filter_uuid
    • First observedfreelo_get_users
    • First observedfreelo_get_work_reports
    • First observedfreelo_search_elasticsearch
    • First observedfreelo_start_time_tracking
    • First observedfreelo_stop_time_tracking
    • First observedfreelo_update_note
    • First observedfreelo_update_task_description
    • First observedfreelo_update_work_report

TDQS

A3.5/5.0

Scored across 33 tools

Disambiguation3/5

Several tools have overlapping scopes: freelo_get_projects vs freelo_get_all_projects, freelo_get_task_details vs freelo_get_task_description, and freelo_get_finished_tasks vs filtered freelo_get_all_tasks. The descriptions help clarify boundaries, but the similarity is enough to cause misselection. Most tools target distinct entities, but the overlaps prevent a higher score.

Naming Consistency4/5

The freelo_ prefix and verb_noun structure are used consistently across most tools, making the surface predictable. Minor deviations exist: freelo_edit_task uses 'edit' while related tools use 'update', and freelo_search_elasticsearch uses a product name rather than a noun. These are small enough not to break the overall pattern.

Tool Count2/5

33 tools is well beyond the 25+ threshold and includes several near-duplicate getters such as freelo_get_projects/freelo_get_all_projects, freelo_get_task_details/freelo_get_task_description, and freelo_get_finished_tasks plus filtered freelo_get_all_tasks. While Freelo is a broad PM platform, the toolset could be consolidated significantly without losing capability.

Completeness2/5

The surface covers a broad read/create/update landscape, but has clear dead ends: comments can only be listed, subtasks can only be created and read, notes cannot be listed, and there is no delete task or project creation. Common PM operations like adding a comment or removing a task would fail, so the set is not sufficiently complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A comprehensive MCP server that provides 159 tools for interacting with the Freshservice ITSM platform, covering modules such as tickets, assets, and project management. It enables users to manage service desk operations and configuration through the Model Context Protocol.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An unofficial MCP server that integrates Freelo project management with AI assistants (e.g., Cline, Claude) via the Freelo API, enabling task, project, and comment management through natural language.
    36 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the bexio API, enabling interaction with contacts, sales, accounting, projects, and more through 35 tools. Supports both PAT and OAuth authentication with read-only mode and tool group filtering.
    35
    4 npm
    4
    MIT