Skip to main content
Glama
Praket7
by Praket7

Freebuff MCP

Freebuff MCP connects an MCP app to Freebuff on your computer

Watch the short video to see the path from request to finished work.

Freebuff MCP lets Codex, Claude Code, plus other MCP apps work with Freebuff Desktop plus its command line app on your computer. It can find projects, read threads, send a request, show progress, read ordinary project files, plus stop work when the app asks.

MCP is a shared way AI apps connect to tools on your computer.

Your computer runs the bridge. Your Freebuff installation controls access to your projects. The bridge does not read process memory. It does not remove Freebuff approval steps. Text returned to an MCP app has common secret patterns masked. Pattern checks can miss unusual secrets. Do not treat them as a complete security boundary.

Start here

Node.js 20 is the minimum. Install Freebuff Desktop. The command line app works too. Sign in before connecting an MCP app.

npm install --global freebuff-mcp
freebuff-mcp doctor

The doctor report shows whether Desktop is found, whether it allows changes, whether the command line app is available, plus whether its terminal component works. A found app can still be signed out. A missing terminal component can block command line sessions. Check the report before setting up an MCP app.

Related MCP server: Qwen MCP Filesystem Server

Connect an MCP app

Codex setup prints its settings entry.

freebuff-mcp install codex

Claude Code setup prints its instructions.

freebuff-mcp install claude

The automatic write option adds the entry to your app settings. It preserves other settings. It refuses to replace a different Freebuff entry.

What you can ask it to do

The bridge can find projects plus threads, read thread messages, start a request, continue earlier work, show live progress, stop a turn, resume a paused thread, change model settings, inspect changed files, read project files, plus list attachments.

run_turn stays open while Freebuff works. It reports progress while the turn runs. When the MCP app cancels the request, the bridge asks the owning Freebuff backend to stop. A local cancel alone does not prove the work stopped.

Freebuff can ask you to approve a step. The turn stays marked as waiting. Resume checks the same thread. The bridge marks the turn complete only after Desktop confirms a finish. Use stop_turn to stop a waiting turn. Command line resume may not prove that the original work finished. The bridge keeps that turn open when its result is uncertain.

Progress arrives in pages. Each returned cursor points to the last event in that page. Use it to read the next page without skipping events. Page size is limited to keep replies manageable.

Local connection plus remote connection

The default connection uses standard input plus output. This works well when your MCP app runs on the same computer.

An optional remote web connection is available through Streamable HTTP.

freebuff-mcp serve-http

It listens on 127.0.0.1 port 8788. Requests need the token in FREEBUFF_MCP_TOKEN. Remote binding also needs FREEBUFF_MCP_ALLOW_REMOTE=1. Remote use needs trusted HTTPS. A private network also works. Keep the access token private. The remote server still needs access to Freebuff on the computer where the bridge runs.

ACP is another tool connection format. This project's ACP support is experimental. Use MCP to do normal work.

When a connection fails

Run the doctor first. Desktop can be visible while change access remains unavailable. Restart Freebuff Desktop, reopen the project, then run the doctor again if its permission is missing. Check that the command line app is installed plus signed in if Desktop cannot accept changes. Managed command line sessions need the terminal component.

Security plus privacy

File reads stay inside the selected project. Credential files are denied. Binary content is denied. Reads stop at one megabyte. Common passwords, access tokens, authorization headers, URLs, plus private key text are masked before they reach the AI app. Fields named password, token, secret, API key are masked too. No text pattern can find every possible secret. Review sensitive project data before sharing it with a model.

Read the security notes plus the privacy notes before using the bridge with private work.

Project health

Automated project checks

The figures above come from the local suite run on this source revision. They describe automated checks. They do not prove live compatibility with every Freebuff version. The Desktop plus command line acceptance steps are in the acceptance checklist.

Build from source

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build

The automated suite uses fake Desktop plus command line services. It checks protocol behavior, event paging, cancellation, redaction, setup, plus error handling. It cannot prove that a signed in installation works on your computer. Use the acceptance checklist to record that separately.

Learn more

Read the changelog to see release history. Read the license before you share changes to this project.

Available Tools

14 tools
freebuff_statusB
Read-only

Detect Freebuff and bridge capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, and the description's 'Detect' is consistent with that, so there is no contradiction. However, the description adds no behavioral context beyond the annotation, such as what a successful or failed detection looks like or what the returned status actually contains.

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, repetition, or unnecessary detail. For a zero-parameter capability check, this is an appropriately sized and well-structured description.

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 no-parameter, read-only status tool the description is nearly sufficient, but there is no output schema and no explanation of how the returned capabilities are represented or what 'Freebuff' and 'bridge' actually refer to. It tells an agent what the tool is for, but not enough about the result to be fully self-contained.

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?

This tool has zero parameters and the schema fully documents that, so no parameter explanation is needed. The description does not need to compensate for any schema gap.

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 ('Detect') and names a clear resource ('Freebuff and bridge capabilities'), which distinguishes it from sibling tools that operate on projects, threads, and messages. However, 'Freebuff' and 'bridge capabilities' are undefined domain terms, so the purpose is clear in outline but not fully precise.

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 call this tool, when not to call it, or how it relates to alternatives. The only implied context is 'when you need capability status,' but that is not stated explicitly.

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

get_active_workC
Read-only

Read visible active work.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdNo

TDQS

C2.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'Read' matches that. The description adds a vague scope qualifier ('visible', 'active') but does not clarify what 'visible' or 'active' mean operationally, nor does it disclose filtering, permissions, or output behavior beyond 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.

Conciseness3/5

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

The description is very short and front-loaded, with no filler words. However, the brevity crosses into under-specification because key concepts like 'active work' and 'visible' are not explained, making the definition terse rather than sufficiently informative.

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

Completeness2/5

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

For a read-only tool with one optional parameter and no output schema, some ambiguity might be tolerable, but the description does not explain what 'active work' is, what the response contains, or how this relates to threadId. An agent lacks enough context to confidently invoke the tool or interpret its result.

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

Parameters2/5

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

The schema has one parameter, threadId, with no description and 0% schema description coverage. The description does not mention threadId or explain its effect, so the parameter's meaning is left to its name and type alone. The description fails to compensate for the absent schema documentation.

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

Purpose3/5

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

The description uses a specific verb ('Read') and names a resource ('visible active work'), so it is not a tautology. However, 'active work' is ambiguous and the description does not differentiate this tool from sibling read tools such as get_thread or list_threads. An agent would still have to infer what 'active work' means.

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 when-to-use guidance or alternatives are provided. The description does not explain when to choose get_active_work over sibling tools like get_thread, get_thread_messages, or list_projects. This leaves the agent to guess the tool's specific role.

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

get_threadB
Read-only

Read thread metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

B3.3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, so the safe, read-only nature is covered. The description adds a mild scoping detail by saying 'metadata' rather than full thread messages, but it does not disclose response shape, possible errors, or any other behavioral context.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It conveys the core operation efficiently, though it is so terse that it carries little beyond the tool name itself.

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

Completeness3/5

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

This is a low-complexity, read-only, single-parameter tool, so the minimal description is partially adequate. However, with no output schema and no mention of what metadata is returned, the agent still lacks some context needed to interpret the result.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no meaning to the threadId parameter beyond what the property name/type already imply. While a single string threadId is fairly self-explanatory, the description fails to compensate for the complete lack of 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 states a specific verb ('Read') and a specific resource ('thread metadata'), and it is clearly distinguishable from sibling tools: get_thread_messages would read messages, and list_threads would list threads. Even without an explicit comparison, an agent can infer the tool's narrow scope.

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 about when to use this tool versus alternatives such as get_thread_messages or list_threads. No contexts, exclusions, or prerequisite conditions are mentioned, so the agent must rely on naming conventions alone.

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

get_thread_messagesA
Read-only

Read visible messages for a thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

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 openWorldHint=false, so the read-only nature is expected. The description adds the qualifier 'visible', suggesting some filtering of messages, but it does not clarify what visible means or whether responses include message content, ordering, or metadata. With annotations covering the safety profile, the added behavioral context is modest.

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 or redundancy. Every word contributes to identifying the operation and its object, and the core action is clear at the start.

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

Completeness3/5

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

For a simple read-only tool with one parameter and no output schema, the description covers the basic operation but leaves ambiguous what 'visible' means and what the response contains (text, metadata, ordering). Since no output schema exists, the description would need additional context about the return shape to be fully complete.

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

Parameters3/5

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

The input schema has 0% description coverage and only declares threadId as a string with no explanation. The phrase 'for a thread' weakly maps the parameter to a thread identifier, but it does not specify the expected format or how to obtain valid IDs. For a single, obvious identifier parameter this is adequate, though not rich.

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 clear verb (Read) and a specific resource (visible messages for a thread), which separates it from the sibling get_thread that would target thread metadata. It could be stronger by explicitly naming the sibling it is not, but the resource identification is sufficiently clear.

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 used when a thread ID is available and visible messages are needed, but it provides no explicit guidance for when to choose this over get_thread or list_threads. No prerequisites, exclusions, or alternatives are mentioned, leaving the usage context implicit.

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

list_modelsA
Read-only

List models exposed by the installed bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the description does not contradict it. It adds the scoping detail that models come from the installed bridge, but it does not disclose return format or any other behavioral traits.

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

Conciseness5/5

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

A single sentence that front-loads the action and stays free of redundancy. 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?

The tool is a simple read-only list operation with no parameters and no output schema, so the description is nearly sufficient. It could be slightly stronger by noting that the listed model identifiers are what set_model consumes, but this is a minor gap.

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 has zero parameters and 100% schema coverage, so there is nothing for the description to clarify. Per the 0-parameter baseline, this is adequate.

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

Purpose5/5

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

The description uses a specific verb and resource ('List models') and scopes the source ('exposed by the installed bridge'), clearly distinguishing it from sibling tools like set_model, list_projects, and list_threads.

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 intended use—discover available models before selecting one with set_model—is implied by the tool's name and sibling set, but not explicitly stated. No when-to-use conditions or exclusions are given.

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

list_project_filesC
Read-only

List safe project files.

ParametersJSON Schema
NameRequiredDescriptionDefault
relativeNo
projectIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, which is consistent with the description. However, the description adds only the vague qualifier 'safe' without explaining what makes a file safe (e.g., filters, size limits, binary exclusion), nor does it disclose return format or edge-case behavior.

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

Conciseness2/5

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

The description is extremely short and front-loaded, but it is under-specified rather than concisely complete. The single sentence omits essential context that the tool requires, so brevity is achieved at the expense of usefulness.

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

Completeness2/5

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

For a tool with 0% schema coverage, no output schema, and a meaningful qualifier like 'safe', the description is incomplete. It does not explain the filtering semantics, the purpose of the 'relative' parameter, or how the result list behaves, leaving critical gaps for the agent.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention either parameter. The 'relative' parameter is especially opaque, and with no schema descriptions or parameter explanations, the agent cannot determine what values are valid or what behavior they control.

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 the verb 'List' and the resource 'project files' clearly, so an agent can tell this is a listing operation. The qualifier 'safe' is ambiguous, but the core purpose is understandable and distinct from sibling tools like read_project_file.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention read_project_file, list_projects, or any condition for choosing this tool, so the agent is left to infer usage from the name and sibling list.

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

list_projectsA
Read-only

List discovered Freebuff projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, so the description doesn't need to restate its read-only nature. It adds the 'discovered' scope, indicating only discovered projects are returned, but it does not disclose pagination, ordering, or return structure. This is acceptable given the simple listing operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states exactly what the tool does in minimal words, which is ideal for a trivial no-argument listing operation.

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 zero-parameter, read-only list tool, the description is nearly sufficient. The only minor gap is the unexplained meaning of 'discovered' and the lack of an output schema, but the operation is simple enough that an agent can infer the expected behavior from the tool name and siblings.

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 coverage is 100%, so there is nothing for the description to add about parameters. Per the baseline for zero-parameter tools, a score of 4 is appropriate; no parameter documentation is needed.

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

Purpose5/5

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

The description states a specific verb ('List') and a specific resource ('discovered Freebuff projects'), making its function immediately clear. The qualifier 'discovered' adds scope beyond the tool name, and the resource is distinct from siblings like list_threads and list_project_files.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as list_threads or list_project_files. The description does not mention conditions, exclusions, or contexts that would help an agent choose between sibling tools.

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

list_threadsC
Read-only

List Freebuff Desktop threads.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNo

TDQS

C2.7/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the read-only nature is transparent. However, the description itself adds no behavioral details (e.g., no mention of sorting, pagination, or what a 'thread' entails). Since the annotation covers the key safety aspect, a baseline score of 3 is appropriate.

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

Conciseness5/5

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

The description is a single, concise sentence with no wasted words or extraneous information. It follows a clear 'verb + resource' structure, making it easy to parse quickly.

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

Completeness2/5

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

The tool is simple, but the description omits critical context: parameter semantics, usage scenarios, output format (since there is no output schema), and any edge cases. This leaves significant gaps for an 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.

Parameters1/5

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

The only parameter, projectId, has no description in the schema, and the tool description does not explain its meaning or optionality. With 0% schema description coverage and no textual clarification, the agent has no semantic understanding of this parameter.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('Freebuff Desktop threads'), making the primary purpose unambiguous. However, it lacks any context about what 'Freebuff Desktop' refers to or whether threads are scoped to a project, which prevents a perfect score.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives like get_thread or get_thread_messages. No prerequisites, expected input conditions, or typical scenarios are mentioned, leaving the agent without direction for tool selection.

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

read_project_fileC
Read-only

Read one safe project file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered by structured data. The description adds no concrete behavioral details such as what 'safe' means, whether path traversal is blocked, what the return payload is, or how errors are reported.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise, though the ambiguous 'safe' term could be replaced with more informative content without making the description longer.

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

Completeness2/5

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

For a tool with no output schema and no parameter descriptions, the description is too thin. It does not explain what 'safe project file' means, how the path should be specified, or how this tool complements list_project_files, leaving too much for the agent to infer.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the parameters. While 'projectId' and 'path' are self-descriptive names, the description does not clarify path semantics, format, or constraints, so it fails to compensate for the missing schema descriptions.

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 clear action verb, 'Read,' and identifies the resource, 'project file.' The qualifier 'one' helps distinguish it from list_project_files (list vs read a single file). However, 'safe' is ambiguous and not elaborated, slightly weakening clarity.

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?

There is no guidance on when to use this tool over list_project_files, get_thread, or other siblings, and no mention of prerequisites like a valid projectId or path format. Use cases must be inferred from the tool name rather than stated.

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

resume_threadC

Resume a paused Freebuff thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already indicate this is a mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds nothing beyond the verb 'resume' – it does not disclose side effects, required permissions, or what happens to the thread's state. With annotations present, the bar is lower, but the description still fails to add meaningful behavioral context.

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

Conciseness5/5

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

A single sentence with no redundancy. It is appropriately concise for the tool's simplicity, and the verb is front-loaded. No waste.

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

Completeness2/5

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

For a simple mutation with one parameter, the description is minimal but incomplete. It lacks information about expected outcomes, error conditions, or any prerequisites. Given no output schema and no usage guidance, an agent cannot fully understand what will happen when the tool is called.

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

Parameters1/5

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

The schema has zero description coverage for the single parameter threadId. The description does not explain what threadId refers to (e.g., a valid thread ID, format, or how to obtain it). Since the description is the only source of parameter meaning, this is a significant gap.

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 clear verb ('Resume') and resource ('a paused Freebuff thread'), which identifies the operation unambiguously. It is distinct from siblings like stop_thread or get_thread, though it doesn't explicitly name the alternative. The phrasing is specific enough to convey the action.

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?

There is no guidance on when to use this tool versus alternatives, no prerequisites mentioned (e.g., thread must be paused), and no exclusions or context about typical use cases. The description implies use when a thread is paused, but it is left to the agent to infer.

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

send_messageA

Send a text prompt to an existing Freebuff thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
threadIdYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false), so the bar for additional disclosure is lower. The description adds the 'existing thread' precondition, implying failure for unknown thread IDs, but it does not disclose side effects such as appending to conversation history or error behavior.

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

Conciseness5/5

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

A single 10-word sentence with zero filler, front-loaded with the action verb. Nothing is redundant or extraneous.

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 two-parameter tool with no output schema, the description is close to adequate and implicitly identifies both inputs. However, it never states what the tool returns (e.g., the model's reply) or error conditions, which matters more given that no output schema exists to carry that burden.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, but it only loosely maps 'text prompt' to text and 'existing' to threadId. The schema property names are already self-explanatory, and the description adds no format, length, or usage details beyond them.

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 ('send') with a specific resource and scope ('text prompt to an existing Freebuff thread'), making the operation unmistakable. It is clearly distinct from the sibling read-only tools (freebuff_status, list_projects, list_threads).

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is provided, and no alternative tools are named. The intended context is implied by contrast with the list/status siblings, but the description never states prerequisites like 'obtain threadId via list_threads first' or excludes other send/update tools.

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

set_modelC

Set the model for an existing thread when supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
threadIdYes
harnessIdNo

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already indicate this is a mutating operation (readOnlyHint=false) but not destructive (destructiveHint=false), and the description adds little beyond that. It does mention 'existing thread' and 'when supported,' but it does not disclose what happens to the thread's conversation, whether the change persists, or whether unsupported models cause errors. No contradiction with annotations exists, but the behavioral context is thin.

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

Conciseness4/5

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

The description is a single, direct sentence with no filler or redundant information. It front-loads the core action and resource. It is concise, though the vague 'when supported' could be replaced with more concrete conditions without hurting readability.

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

Completeness2/5

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

For a tool with three parameters and no output schema, the description is too thin to fully support correct invocation. It does not explain how to identify a supported thread, what model naming convention to use, or what harnessId means, and it offers no guidance relative to sibling tools. The flat schema and simple operation lower the bar, but 'when supported' still leaves critical context missing.

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

Parameters1/5

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

Schema description coverage is 0%, and none of the three parameters (threadId, model, harnessId) are described in the schema. The description only mentions 'model' and 'existing thread' generically, giving no semantics for valid model values, the role of threadId, or the optional harnessId. With zero schema coverage, the description needed to compensate and does not.

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 ('Set') and a clear resource ('the model for an existing thread'), so an agent can understand the core action. It does not explicitly differentiate from siblings, but none of the siblings perform the same model-setting operation, so the ambiguity is mild. The phrase 'when supported' introduces some uncertainty but does not obscure the main purpose.

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 only a vague condition ('when supported') and no concrete guidance about when to call this tool versus alternatives, what makes a thread 'support' model changes, or what prerequisites must hold. It also does not explain when this tool should not be used or how it relates to siblings like list_models or send_message. This leaves usage decisions largely to inference.

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

set_reasoningC

Set the reasoning effort for an existing thread when supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
effortYes
threadIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already indicate a mutating operation (readOnlyHint: false) with no destructive flag. The description adds only the vague qualifier 'when supported,' which doesn't disclose concrete behavior such as whether the change takes effect immediately, whether it requires specific permissions, or whether it can be reversed. With annotations present, some credit is given, but the description adds minimal behavioral context.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the primary action. It avoids fluff and is appropriately sized for a simple operation. The brevity is a positive trait, though it sacrifices necessary detail.

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

Completeness1/5

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

For a tool with two required parameters and no output schema, the description is woefully incomplete. It omits what reasoning effort means, how to select appropriate values, when the operation succeeds or fails, and how it relates to sibling tools like set_model. An agent would have to infer most of the necessary context from parameter names alone.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for the lack of parameter meaning. It does not explain what 'effort' values are valid, what 'threadId' refers to beyond being a thread identifier, or the relationship between the two. The schema only provides types (string|null for effort), leaving the agent to guess allowed values or formats. The description fails to add any semantic value.

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 clear action: 'Set the reasoning effort' on a thread. It identifies the resource (thread) and the specific attribute (reasoning effort), which distinguishes it from sibling tools like set_model or send_message. However, it doesn't explicitly differentiate from alternatives, so it's clear but not fully distinguishing.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The phrase 'when supported' hints at conditional applicability, but it doesn't explain which threads or models support it, nor does it mention when to prefer set_reasoning over set_model or other thread-management tools. An agent has to infer context.

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

stop_threadB

Stop a running Freebuff turn.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

B3/5.0
Behavior2/5

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

The annotations indicate this is neither read-only nor destructive, but the description adds no detail about what stopping a turn actually does, such as whether work is lost or whether the turn can be resumed. No contradiction with annotations is present, but the description alone does not disclose behavioral consequences.

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

Conciseness4/5

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

The description is a single short sentence with no filler, and the action is front-loaded. It loses a point for using the unexplained term 'Freebuff turn,' but overall it is efficiently sized.

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 tool with one required parameter, the description provides a minimally viable statement of the operation, but it leaves out behavioral effects, when to use it, and how the threadId relates to the action. With no output schema and sparse annotations, slightly more context would make it complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention threadId or explain that it identifies the thread whose turn should be stopped. The parameter name is fairly self-explanatory, but the description does nothing to compensate for the missing schema documentation.

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, 'Stop', and the resource, 'a running Freebuff turn', so the core operation is clear. It does not explicitly name sibling tools, so differentiation from resume_thread is only implicit.

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 word 'running' implies the tool is for stopping an in-progress turn, but the description gives no explicit guidance about when not to use it or that resume_thread is the counterpart for resuming afterward. Usage context is inferred rather than directly stated.

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. 14 tool updatesv0.1.0
    • First observedfreebuff_status
    • First observedget_active_work
    • First observedget_thread
    • First observedget_thread_messages
    • First observedlist_models
    • First observedlist_project_files
    • First observedlist_projects
    • First observedlist_threads
    • First observedread_project_file
    • First observedresume_thread
    • First observedsend_message
    • First observedset_model
    • First observedset_reasoning
    • First observedstop_thread

TDQS

B3.3/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource/action: status, projects, threads, messages, active work, files, models, and thread controls are clearly separated. get_thread vs get_thread_messages and send_message vs resume_thread are differentiated by metadata/content and new-prompt vs resume semantics.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern (list_*, get_*, send_message, set_model), which is predictable. The main outlier is freebuff_status, which lacks a verb, and read_project_file introduces a minor verb variation versus get_*.

Tool Count5/5

At 14 tools, the surface is well-scoped for a Freebuff bridge: discovery/status, project/thread inspection, file access, model listing, messaging, and turn control each have a place. No tool feels redundant or bloated.

Completeness4/5

The set covers the main inspect-and-interact workflow: list/read threads and files, send messages, stop/resume turns, and configure model/reasoning. Obvious gaps are thread/project creation/deletion and explicit per-thread model/reasoning read-back, though these may be intentionally outside the bridge's scope.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers