Skip to main content
Glama
  • :rocket: Serena is a powerful coding agent toolkit capable of turning an LLM into a fully-featured agent that works directly on your codebase. Unlike most other tools, it is not tied to an LLM, framework or an interface, making it easy to use it in a variety of ways.

  • :wrench: Serena provides essential semantic code retrieval and editing tools that are akin to an IDE's capabilities, extracting code entities at the symbol level and exploiting relational structure. When combined with an existing coding agent, these tools greatly enhance (token) efficiency.

  • :free: Serena is free & open-source, enhancing the capabilities of LLMs you already have access to free of charge.

You can think of Serena as providing IDE-like tools to your LLM/coding agent. With it, the agent no longer needs to read entire files, perform grep-like searches or basic string replacements to find the right parts of the code and to edit code. Instead, it can use code-centric tools like find_symbol, find_referencing_symbols and insert_after_symbol.

TIP

TheSerena JetBrains plugin has been released!

LLM Integration

Serena provides the necessary tools for coding workflows, but an LLM is required to do the actual work, orchestrating tool use.

In general, Serena can be integrated with an LLM in several ways:

  • by using the model context protocol (MCP). Serena provides an MCP server which integrates with

    • Claude Code and Claude Desktop,

    • terminal-based clients like Codex, Gemini-CLI, Qwen3-Coder, rovodev, OpenHands CLI and others,

    • IDEs like VSCode, Cursor or IntelliJ,

    • Extensions like Cline or Roo Code

    • Local clients like OpenWebUI, Jan, Agno and others

  • by using mcpo to connect it to ChatGPT or other clients that don't support MCP but do support tool calling via OpenAPI.

  • by incorporating Serena's tools into an agent framework of your choice, as illustrated here. Serena's tool implementation is decoupled from the framework-specific code and can thus easily be adapted to any agent framework.

Related MCP server: MCP Files

Serena in Action

Demonstration 1: Efficient Operation in Claude Code

A demonstration of Serena efficiently retrieving and editing code within Claude Code, thereby saving tokens and time. Efficient operations are not only useful for saving costs, but also for generally improving the generated code's quality. This effect may be less pronounced in very small projects, but often becomes of crucial importance in larger ones.

https://github.com/user-attachments/assets/ab78ebe0-f77d-43cc-879a-cc399efefd87

Demonstration 2: Serena in Claude Desktop

A demonstration of Serena implementing a small feature for itself (a better log GUI) with Claude Desktop. Note how Serena's tools enable Claude to find and edit the right symbols.

https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753

Programming Language Support & Semantic Analysis Capabilities

Serena provides a set of versatile code querying and editing functionalities based on symbolic understanding of the code. Equipped with these capabilities, Serena discovers and edits code just like a seasoned developer making use of an IDE's capabilities would. Serena can efficiently find the right context and do the right thing even in very large and complex projects!

There are two alternative technologies powering these capabilities:

  • Language servers implementing the language server Protocol (LSP) — the free/open-source alternative.

  • The Serena JetBrains Plugin, which leverages the powerful code analysis and editing capabilities of your JetBrains IDE.

You can choose either of these backends depending on your preferences and requirements.

Language Servers

Serena incorporates a powerful abstraction layer for the integration of language servers that implement the language server protocol (LSP). The underlying language servers are typically open-source projects (like Serena) or at least freely available for use.

With Serena's LSP library, we provide support for over 30 programming languages, including AL, Bash, C#, C/C++, Clojure, Dart, Elixir, Elm, Erlang, Fortran, Go, Groovy (partial support), Haskell, Java, Javascript, Julia, Kotlin, Lua, Markdown, Nix, Perl, PHP, PowerShell, Python, R, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML, and Zig.

IMPORTANT

Some language servers require additional dependencies to be installed; see theLanguage Support page for details.

The Serena JetBrains Plugin

As an alternative to language servers, the Serena JetBrains Plugin leverages the powerful code analysis capabilities of your JetBrains IDE. The plugin naturally supports all programming languages and frameworks that are supported by JetBrains IDEs, including IntelliJ IDEA, PyCharm, Android Studio, WebStorm, PhpStorm, RubyMine, GoLand, CLion, and others. Only Rider is not supported.

The plugin offers the most robust and most powerful Serena experience.
See our documentation page for further details and instructions.

Quick Start

Prerequisites. Serena is managed by uv. If you don’t already have it, you need to install uv before proceeding.

Starting the MCP Server. The easiest way to start the Serena MCP server is by running the latest version from GitHub using uvx. Issue this command to see available options:

uvx --from git+https://github.com/oraios/serena serena start-mcp-server --help

Configuring Your Client. To connect Serena to your preferred MCP client, you typically need to configure a launch command in your client. Follow the link for specific instructions on how to set up Serena for Claude Code, Codex, Claude Desktop, MCP-enabled IDEs and other clients (such as local and web-based GUIs).

TIP

While getting started quickly is easy, Serena is a powerful toolkit with many configuration options. We highly recommend reading through theuser guide to get the most out of Serena.

Specifically, we recommend to read about ...

User Guide

Please refer to the user guide for detailed instructions on how to use Serena effectively.

Community Feedback

Most users report that Serena has strong positive effects on the results of their coding agents, even when used within very capable agents like Claude Code. Serena is often described to be a game changer, providing an enormous productivity boost.

Serena excels at navigating and manipulating complex codebases, providing tools that support precise code retrieval and editing in the presence of large, strongly structured codebases. However, when dealing with tasks that involve only very few/small files, you may not benefit from including Serena on top of your existing coding agent. In particular, when writing code from scratch, Serena will not provide much value initially, as the more complex structures that Serena handles more gracefully than simplistic, file-based approaches are yet to be created.

Several videos and blog posts have talked about Serena:

Acknowledgements

Sponsors

We are very grateful to our sponsors who help us drive Serena's development. The core team (the founders of Oraios AI) put in a lot of work in order to turn Serena into a useful open source project. So far, there is no business model behind this project, and sponsors are our only source of income from it.

Sponsors help us dedicating more time to the project, managing contributions, and working on larger features (like better tooling based on more advanced LSP features, VSCode integration, debugging via the DAP, and several others). If you find this project useful to your work, or would like to accelerate the development of Serena, consider becoming a sponsor.

We are proud to announce that the Visual Studio Code team, together with Microsoft’s Open Source Programs Office and GitHub Open Source have decided to sponsor Serena with a one-time contribution!

Community Contributions

A significant part of Serena, especially support for various languages, was contributed by the open source community. We are very grateful for the many contributors who made this possible and who played an important role in making Serena what it is today.

Technologies

We built Serena on top of multiple existing open-source technologies, the most important ones being:

  1. multilspy. A library which wraps language server implementations and adapts them for interaction via Python. It provided the basis for our library Solid-LSP (src/solidlsp). Solid-LSP provides pure synchronous LSP calls and extends the original library with the symbolic logic that Serena required.

  2. Python MCP SDK

  3. All the language servers that we use through Solid-LSP.

Without these projects, Serena would not have been possible (or would have been significantly more difficult to build).

Customizing and Extending Serena

It is straightforward to extend Serena's AI functionality with your own ideas. Simply implement a new tool by subclassing serena.agent.Tool and implement the apply method with a signature that matches the tool's requirements. Once implemented, SerenaAgent will automatically have access to the new tool.

It is also relatively straightforward to add support for a new programming language.

We look forward to seeing what the community will come up with! For details on contributing, see contributing guidelines.

Available Tools

19 tools
activate_projectC
Read-only

Activate project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, suggesting a safe read operation, but the description 'Activate project.' implies a state-changing action, which could be contradictory. However, without explicit behavioral details in the description (e.g., what activation does, side effects, or permissions), it adds minimal value beyond annotations. The description does not clarify if this is a toggle, initialization, or other behavior, so it partially compensates but remains vague.

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 extremely concise with just two words, making it front-loaded and waste-free. Every word earns its place, though this brevity contributes to underspecification rather than clarity. It is appropriately sized for the minimal information conveyed.

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

Completeness2/5

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

Given the tool's complexity (implied state change), lack of annotations beyond readOnlyHint, and an output schema that might cover return values, the description is incomplete. It does not explain what 'activate' means, how it interacts with other tools, or what the output entails. For a tool with potential behavioral nuances, this minimal description leaves significant gaps in understanding.

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 one parameter ('project') with 0% description coverage, meaning the schema provides no semantic details. The tool description does not mention parameters at all, failing to compensate for the low coverage. With only one parameter, the baseline is slightly higher, but the description adds no value beyond what the schema minimally provides (just the parameter name).

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

Purpose2/5

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

The description 'Activate project.' is a tautology that restates the tool name without adding meaningful context. It specifies a verb ('Activate') and resource ('project'), but lacks details on what activation entails or how it differs from sibling tools like 'switch_modes' or 'onboarding'. This minimal statement provides only basic purpose without 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 provided on when to use this tool versus alternatives. The description does not mention prerequisites, appropriate contexts, or exclusions. Given sibling tools like 'onboarding' and 'switch_modes' that might relate to project states, the absence of usage guidelines leaves the agent without direction on tool selection.

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

check_onboarding_performedA
Read-only

Check onboarding status. Call before starting work.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, indicating this is a safe read operation. The description adds valuable behavioral context by specifying this should be called 'before starting work', suggesting it's a prerequisite check that might affect subsequent operations. This goes beyond what annotations provide by explaining the tool's role in workflow sequencing without contradicting the read-only nature.

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 extremely concise with just two short sentences that each serve distinct purposes: the first states what the tool does, the second provides usage guidance. There's zero wasted language, and the information is front-loaded with the core purpose immediately clear. This is an excellent example of efficient communication.

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 this is a simple status-check tool with no parameters, read-only annotations, and an output schema (which handles return values), the description provides sufficient context. It explains the purpose and when to use it, which covers the essential information needed. The only minor gap is lack of differentiation from the 'onboarding' sibling tool, but overall completeness is good for this complexity level.

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 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps. It appropriately focuses on the tool's purpose and usage rather than parameter details, which is correct for a parameterless tool.

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 states the tool's purpose as 'Check onboarding status', which is a clear verb+resource combination. However, it doesn't differentiate from the sibling 'onboarding' tool, leaving ambiguity about whether this checks if onboarding was performed versus performing onboarding itself. The purpose is understandable but could be more specific about what 'onboarding' refers to in this context.

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

Usage Guidelines4/5

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

The description provides clear usage guidance with 'Call before starting work', which explicitly states when to use this tool. It doesn't mention when not to use it or alternatives, but the context is sufficiently clear for a tool with no parameters. The guidance is practical and directly applicable to workflow sequencing.

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

delete_memoryC
Read-only

Delete memory. Only on explicit user request.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_file_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior1/5

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

The description contradicts the annotations. Annotations indicate readOnlyHint=true (suggesting a read-only operation), but the description claims 'Delete memory' (a destructive write operation). This is a serious inconsistency that undermines behavioral 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?

The description is extremely concise with two short sentences that are front-loaded and waste no words. Every sentence serves a clear purpose: stating the action and providing usage context.

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

Completeness2/5

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

Given the contradiction between annotations and description, the presence of an output schema (which might help), and the lack of parameter semantics, the description is incomplete. It fails to provide reliable information about the tool's behavior and parameters, making it inadequate for proper use.

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

Parameters2/5

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

The schema description coverage is 0%, and the description provides no information about the 'memory_file_name' parameter beyond what the schema title indicates. It doesn't explain what this parameter represents or how to use it, failing to compensate for the low schema coverage.

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

Purpose3/5

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

The description states the action ('Delete memory') which is a specific verb+resource, but it doesn't differentiate from sibling tools like 'edit_memory' or 'write_memory' beyond the basic action name. The purpose is clear but lacks sibling differentiation.

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 explicit context for when to use this tool: 'Only on explicit user request.' This gives clear guidance on usage conditions, though it doesn't specify alternatives or when not to use it beyond this constraint.

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

edit_memoryC
Read-only

Replace content in memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_file_nameYes
needleYes
replYes
modeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/5

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

The description claims a write operation ('Replace content') while annotations declare readOnlyHint=true, creating a direct contradiction. This inconsistency misleads the agent about the tool's behavior, as annotations suggest it's read-only but the description implies mutation.

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 extremely concise with a single sentence, 'Replace content in memory.', which is front-loaded and wastes no words. However, this brevity contributes to underspecification rather than effective communication.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, 0% schema coverage, contradictory annotations) and the presence of an output schema, the description is incomplete. It doesn't clarify the contradiction, explain parameters, or provide enough context for safe and correct use, despite the output schema handling return values.

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?

With 0% schema description coverage, the description adds no meaning beyond the input schema. It doesn't explain what 'memory_file_name', 'needle', 'repl', or 'mode' represent, their formats, or how they interact, failing to compensate for the lack of 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 'Replace content in memory' states a clear verb ('Replace') and resource ('content in memory'), but it's vague about what 'memory' refers to and doesn't distinguish it from sibling tools like 'replace_content' or 'write_memory'. It provides a basic purpose but lacks specificity about the scope or mechanism.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives such as 'replace_content', 'write_memory', or 'delete_memory'. There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

find_referencing_symbolsB
Read-only

Find references to symbol. Returns locations with snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_pathYes
relative_pathYes
include_kindsNo
exclude_kindsNo
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, which the description doesn't contradict. The description adds value by specifying that it 'Returns locations with snippets,' giving context about output format beyond annotations. However, it doesn't disclose behavioral traits like rate limits, performance implications, or what 'symbol' means in this context.

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

Conciseness5/5

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

The description is extremely concise with two sentences that directly state the tool's function and output. It is front-loaded with the core purpose and wastes no words, making it efficient for quick comprehension by an agent.

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?

Given the tool has an output schema, the description doesn't need to detail return values. However, with 5 parameters at 0% schema coverage and no annotations beyond readOnlyHint, the description is incomplete—it lacks parameter explanations and usage context. It's minimally adequate but leaves gaps in understanding how to invoke the tool effectively.

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%, so the description must compensate but fails to do so. It mentions no parameters, leaving all 5 inputs (e.g., 'name_path', 'relative_path', 'include_kinds') undocumented. The description adds no meaning beyond the schema, resulting in significant gaps for parameter understanding.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Find references to symbol' specifies the verb and resource. It distinguishes from sibling 'find_symbol' by focusing on references rather than definitions, though the distinction could be more explicit. The description is not tautological and provides meaningful context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'find_symbol' or other search-related tools. It lacks context about prerequisites, typical use cases, or exclusions, leaving the agent to infer usage from the name and parameters alone.

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

find_symbolC
Read-only

Search symbols by pattern. Returns locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_path_patternYes
depthNo
relative_pathNo
include_bodyNo
include_kindsNo
exclude_kindsNo
substring_matchingNo
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, which the description doesn't contradict. The description adds minimal behavioral context beyond annotations: it mentions searching by pattern and returning locations, but doesn't disclose rate limits, authentication needs, pagination behavior, or what 'locations' specifically means. With annotations covering safety, the description adds some value but lacks rich behavioral details.

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 extremely concise with two short sentences that are front-loaded and waste no words. Every sentence earns its place by stating the core action and result, making it efficient despite its simplicity.

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?

Given the tool's complexity (8 parameters, 0% schema coverage) and the presence of an output schema, the description is incomplete. It doesn't explain parameter semantics or usage context, though the output schema may cover return values. For a search tool with many parameters, more guidance is needed, but the existence of an output schema prevents the lowest score.

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?

With 0% schema description coverage for 8 parameters, the description must compensate but fails to do so. It mentions 'pattern' which loosely relates to 'name_path_pattern', but doesn't explain any other parameters like 'depth', 'include_kinds', or 'max_answer_chars'. The description adds minimal meaning beyond the schema, leaving most parameters undocumented.

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 'Search symbols by pattern. Returns locations.' states the basic action (search) and resource (symbols), but is vague about what 'symbols' are in this context and doesn't differentiate from sibling tools like 'find_referencing_symbols' or 'get_symbols_overview'. It provides a minimal viable purpose statement without specific details about the search scope or what constitutes a symbol.

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 like 'find_referencing_symbols' or 'get_symbols_overview'. The description doesn't mention prerequisites, appropriate contexts, or exclusions. The agent must infer usage from the tool name and parameters alone.

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

get_symbols_overviewB
Read-only

Get symbols overview for a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
relative_pathYes
depthNo
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

The annotations provide readOnlyHint=true, indicating this is a safe read operation. The description does not contradict this, as 'Get' aligns with read-only behavior. However, it adds minimal behavioral context beyond annotations—it does not disclose details like what 'symbols overview' entails, potential rate limits, or authentication needs. With annotations covering safety, the description meets a baseline but lacks rich behavioral insights.

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 extremely concise with a single sentence: 'Get symbols overview for a file.' It is front-loaded and wastes no words, making it easy to parse. Every part of the sentence directly contributes to understanding the tool's purpose, earning its place without unnecessary elaboration.

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?

Given the tool has an output schema, the description does not need to explain return values. However, with 3 parameters (one required) and 0% schema coverage, the description is incomplete—it does not clarify parameter usage or behavioral nuances. The annotations cover read-only safety, but overall, the description is adequate only as a minimal starting point, lacking depth for effective tool 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 description coverage is 0%, meaning parameters are undocumented in the schema. The description does not add any parameter semantics—it does not explain what 'relative_path', 'depth', or 'max_answer_chars' mean or how they affect the output. Since the schema lacks descriptions, the description fails to compensate, but it does not mislead, so it scores at the baseline for minimal value.

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 'Get symbols overview for a file' clearly states the verb ('Get') and resource ('symbols overview for a file'), making the purpose understandable. However, it does not differentiate this tool from sibling tools like 'find_symbol' or 'find_referencing_symbols', which might have overlapping functionality, leaving the scope vague. It avoids tautology by not merely restating the name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions, such as when to prefer 'find_symbol' for specific symbols or 'list_dir' for file listings. This lack of usage context makes it challenging for an agent to select the correct tool among siblings.

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

initial_instructionsB
Read-only

Get essential Serena usage instructions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds value by specifying 'essential Serena usage instructions,' which implies it returns instructional content, but it doesn't disclose behavioral traits like response format, potential rate limits, or authentication needs. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core purpose, making it easy for an agent to parse and understand quickly.

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 tool's simplicity (0 parameters, read-only annotation, and an output schema), the description is reasonably complete. It clarifies the tool returns instructions, but could benefit from more context on what 'essential' means or how it differs from siblings, though the output schema likely handles return value details.

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?

With 0 parameters and 100% schema description coverage, the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it appropriately focuses on the tool's purpose without redundancy, earning a baseline score for zero-parameter tools.

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 states the tool's purpose as 'Get essential Serena usage instructions,' which is a clear verb+resource combination. However, it's somewhat vague about what 'essential usage instructions' specifically entails, and it doesn't differentiate from siblings like 'onboarding' or 'check_onboarding_performed,' which might overlap in functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, such as whether it's for new users, troubleshooting, or general reference, leaving the agent to infer usage from the tool name alone.

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

list_dirB
Read-only

List files and directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
relative_pathYes
recursiveYes
skip_ignored_filesNo
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

The description adds minimal behavioral context beyond what annotations provide. The annotation 'readOnlyHint: true' already indicates this is a safe read operation. The description doesn't disclose any additional behavioral traits like what types of files/directories are listed, whether hidden files are included, or how results are formatted. However, it doesn't contradict the annotations either.

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 extremely concise at just 4 words, with zero wasted language. It's front-loaded with the core purpose and contains no unnecessary elaboration. This is an example of appropriate brevity for a simple operation.

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?

Given that there's an output schema (which presumably describes the return format), the description doesn't need to explain return values. However, for a tool with 4 parameters (2 required) and 0% schema description coverage, the description is too minimal. It doesn't provide enough context about how the tool behaves or what the parameters mean, making it only adequate for basic understanding.

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?

With 0% schema description coverage for 4 parameters, the description carries the full burden of explaining parameter meaning but fails to do so. 'List files and directories' gives no insight into what parameters like 'relative_path', 'recursive', 'skip_ignored_files', or 'max_answer_chars' mean or how they affect the listing operation.

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 'List files and directories' clearly states the verb ('List') and resource ('files and directories'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'list_memories' or 'get_symbols_overview' that might also list different types of resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when this tool is appropriate, or when other tools like 'find_symbol' or 'list_memories' might be better choices for different types of listing operations.

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

list_memoriesB
Read-only

List all memories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds no behavioral context beyond what annotations provide (no mention of pagination, sorting, filtering, or response format). With annotations covering the safety profile, a baseline 3 is appropriate as the description adds no value but doesn't contradict 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, efficient sentence with zero waste. It's appropriately sized for a simple tool with no parameters, though it could be more informative.

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?

Given the tool's simplicity (0 parameters, read-only, with output schema), the description is minimally adequate but lacks context about what 'memories' are, how they're structured, or how this differs from sibling tools. The output schema exists, so return values needn't be explained, but more operational guidance would be helpful.

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 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps, making a baseline 4 appropriate since no parameter information is required.

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 'List all memories' clearly states the verb ('List') and resource ('memories'), but it's vague about scope and doesn't differentiate from sibling tools like 'read_memory' or 'find_symbol'. It doesn't specify what constitutes a 'memory' or how this differs from other retrieval operations.

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 like 'read_memory' (for specific memory retrieval) or 'find_symbol' (for searching). The description doesn't mention any prerequisites, context for usage, or exclusions.

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

onboardingB
Read-only

Call if onboarding not yet performed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, indicating a safe read operation. The description adds no behavioral context beyond this—it doesn't explain what 'onboarding' entails (e.g., setup steps, permissions, or side effects). Since annotations cover safety, the description adds minimal value, meeting the baseline for tools 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, efficient sentence with no wasted words. It's front-loaded and directly addresses usage, making it highly concise and well-structured for its purpose.

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?

Given the tool has 0 parameters, annotations (readOnlyHint), and an output schema, the description is minimally adequate. However, it lacks details on what 'onboarding' involves (e.g., process steps or outcomes), leaving gaps in understanding despite structured data. This meets the minimum viable threshold.

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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate. A baseline of 4 is applied for zero-parameter tools, as there's nothing to compensate for.

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

Purpose2/5

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

The description 'Call if onboarding not yet performed' is tautological—it restates the tool name 'onboarding' without specifying what the tool actually does. It doesn't provide a clear verb+resource combination (e.g., 'initiate onboarding process' or 'check onboarding status'), leaving the agent uncertain about the tool's function beyond its name.

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 states when to use the tool: 'if onboarding not yet performed.' This provides clear context for invocation. However, it doesn't specify alternatives or exclusions (e.g., what to do if onboarding is already performed), which prevents a perfect score.

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

read_memoryC
Read-only

Read memory. Only if relevant to current task.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_file_nameYes
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

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

The annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds minimal behavioral context by implying the tool should be used judiciously ('Only if relevant'), but it doesn't disclose additional traits such as what 'memory' entails, potential performance impacts, or how the output is structured. With annotations covering the safety profile, the description adds some value but lacks rich behavioral details like error handling or data format.

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

Conciseness4/5

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

The description is very brief—two short sentences with no wasted words—making it efficient and front-loaded. However, it under-specifies the tool's purpose and parameters, which leans toward being too terse rather than optimally concise, but it still avoids redundancy and maintains a clear structure.

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?

Given the tool has annotations (readOnlyHint) and an output schema (which handles return values), the description doesn't need to cover safety or output details. However, with 0% schema coverage for parameters and no explanation of what 'memory' means in context of sibling tools, the description is incomplete. It provides basic usage guidance but lacks sufficient context for effective tool selection and parameter understanding.

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

Parameters2/5

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

The schema description coverage is 0%, meaning parameters are undocumented in the schema. The description provides no information about the two parameters ('memory_file_name' and 'max_answer_chars'), such as what a memory file is, valid formats, or how max_answer_chars affects the output. This fails to compensate for the schema's lack of descriptions, leaving parameters semantically unclear.

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

Purpose2/5

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

The description 'Read memory' is a tautology that merely restates the tool name without adding specificity. It doesn't clarify what type of memory is being read (e.g., files, data structures, or symbolic memory from sibling tools like 'list_memories'), nor does it distinguish this tool from siblings like 'list_memories' or 'find_symbol' that might also involve memory access. The phrase 'Only if relevant to current task' is a usage guideline, not a purpose statement.

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 includes 'Only if relevant to current task,' which provides implied context for when to use the tool—suggesting it should be invoked selectively based on task relevance. However, it lacks explicit guidance on when to choose this tool over alternatives like 'list_memories' (for browsing) or 'find_symbol' (for searching), and it doesn't mention prerequisites or exclusions, leaving gaps in usage clarity.

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

rename_symbolB

Rename symbol throughout codebase using LSP.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_pathYes
relative_pathYes
new_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, confirming this is a write operation, which aligns with 'Rename' implying mutation. The description adds context by specifying 'using LSP' (Language Server Protocol) and 'throughout codebase', suggesting it performs a global rename. However, it doesn't detail behavioral aspects like permissions needed, error handling, or side effects beyond what annotations imply.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It front-loads the core action ('Rename symbol') and includes essential details ('throughout codebase', 'using LSP') without redundancy. Every word earns its place, making it highly concise and well-structured.

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?

Given the tool has an output schema (which handles return values), annotations cover mutability, and complexity is moderate, the description is minimally adequate. However, it lacks parameter explanations and usage guidelines, leaving gaps in understanding how to invoke it correctly. It meets basic needs but could be more complete for a mutation tool with undocumented parameters.

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%, so the schema provides no parameter descriptions. The tool description mentions no parameters, leaving all three (name_path, relative_path, new_name) unexplained. This fails to compensate for the low coverage, as users must infer meanings from titles alone without semantic guidance.

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 ('Rename symbol') and mechanism ('using LSP'), with 'throughout codebase' specifying scope. It distinguishes from siblings like 'find_symbol' or 'replace_content' by focusing on symbol renaming rather than searching or general content replacement. However, it doesn't explicitly differentiate from all siblings, keeping it at 4 instead of 5.

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. Siblings like 'find_referencing_symbols' or 'replace_content' might be relevant for similar tasks, but the description offers no comparison or context for selection. It lacks explicit when/when-not statements or named alternatives.

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

replace_contentC

Replace pattern in file.

ParametersJSON Schema
NameRequiredDescriptionDefault
relative_pathYes
needleYes
replYes
modeYes
allow_multiple_occurrencesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations provide readOnlyHint=false, indicating this is a mutation tool. The description confirms this with 'Replace', which aligns with the annotation. However, the description adds minimal behavioral context beyond what annotations already provide—it doesn't mention what happens if the file doesn't exist, if replacements are destructive, if there are permission requirements, or what the output might contain. For a mutation tool with only basic annotations, more behavioral disclosure is needed.

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 extremely concise with a single sentence 'Replace pattern in file.' It's front-loaded and wastes no words, making it easy to parse quickly. Every word contributes directly to the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity (5 parameters, mutation operation, 0% schema coverage) and the presence of an output schema (which might help with return values), the description is incomplete. It doesn't provide enough context for safe and effective use—missing details on parameter meanings, behavioral implications, and differentiation from siblings. The output schema might cover return values, but the description itself lacks essential operational context.

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%, meaning none of the 5 parameters have descriptions in the schema. The description 'Replace pattern in file' only vaguely hints at parameters like 'needle' (pattern) and 'repl' (replacement), but it doesn't explain their semantics, the 'mode' enum options ('literal' vs. 'regex'), or the 'allow_multiple_occurrences' flag. The description fails to compensate for the lack of schema documentation, leaving parameters largely unexplained.

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 'Replace pattern in file' states a clear verb ('Replace') and resource ('pattern in file'), but it's somewhat vague about what exactly gets replaced. It doesn't distinguish this tool from potential siblings like 'edit_memory' or 'rename_symbol' that might also involve content modification. The purpose is understandable but lacks specificity about scope and 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 provides no guidance on when to use this tool versus alternatives. With siblings like 'edit_memory', 'write_memory', and 'rename_symbol' that might involve content changes, there's no indication of when 'replace_content' is appropriate (e.g., for pattern-based replacements in files vs. direct memory editing). No exclusions or prerequisites are mentioned.

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

switch_modesC
Read-only

Activate modes like ['editing', 'interactive'].

ParametersJSON Schema
NameRequiredDescriptionDefault
modesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, suggesting a non-destructive operation, which aligns with 'Activate' implying a state change but not data mutation. The description adds minimal context by specifying example modes ('editing', 'interactive'), but it doesn't detail effects, permissions, or rate limits, leaving behavioral traits under-specified.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and includes specific examples, making it appropriately sized and easy to parse quickly.

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?

Given 1 parameter with 0% schema coverage, annotations covering read-only status, and an output schema (which should handle return values), the description is minimally adequate. However, it lacks details on mode semantics and usage context, leaving gaps in understanding the tool's full role.

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%, so the schema provides no param details. The description mentions 'modes like ['editing', 'interactive']', adding some meaning by giving examples, but it doesn't explain what modes are, their allowed values, or how the array is processed, failing to compensate for the low coverage.

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 states the action ('Activate') and resource ('modes'), providing a basic purpose. However, it's vague about what 'modes' are and how they function, and it doesn't distinguish this tool from siblings like 'activate_project' or 'edit_memory', which might involve similar activation concepts.

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. The description lacks context about prerequisites, timing, or exclusions, such as whether it's for system states or user interactions, making it unclear how it fits with sibling tools like 'initial_instructions' or 'onboarding'.

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

think_about_collected_informationA
Read-only

Call after search sequences to assess completeness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The annotations declare readOnlyHint=true, indicating this is a safe read operation. The description adds context about its timing ('after search sequences') and purpose ('assess completeness'), which provides behavioral insight beyond the annotations. However, it doesn't disclose additional traits like what 'assess completeness' entails or any constraints on its use.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose and usage without any wasted words. It is front-loaded with the key action and context, making it easy for an agent to parse quickly.

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

Completeness4/5

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

Given the tool has 0 parameters, annotations covering safety (readOnlyHint=true), and an output schema exists, the description is reasonably complete. It explains when and why to use the tool. However, it could be more detailed about what 'assess completeness' means or how it differs from similar sibling tools, which would enhance completeness.

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 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately focuses on usage context. A baseline of 4 is applied for zero parameters.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Call') and context ('after search sequences'), and specifies the action ('to assess completeness'). However, it doesn't explicitly differentiate from sibling tools like 'think_about_task_adherence' or 'think_about_whether_you_are_done', which appear to be related meta-cognitive 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 provides clear usage context ('Call after search sequences'), which helps the agent understand when to invoke this tool. However, it doesn't specify when NOT to use it or mention alternatives among the sibling tools, such as when to choose this over other 'think_about_' tools.

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

think_about_task_adherenceA
Read-only

Call before code edits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, and the description doesn't contradict this, as 'Call before code edits' implies a preparatory step rather than a mutation. The description adds minimal behavioral context beyond the annotations, such as the timing aspect, but doesn't disclose other traits like what the tool evaluates, its output format, or any side effects. With annotations covering safety, a baseline 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 extremely concise with a single sentence ('Call before code edits'), which is front-loaded and wastes no words. Every part of the description serves a purpose in providing usage timing, making it efficient and well-structured.

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?

Given the tool has 0 parameters, annotations provide readOnlyHint, and an output schema exists, the description is minimally adequate. However, it lacks details on what the tool does (e.g., evaluates adherence to what task), its output, or how it integrates with the workflow. For a tool with a suggestive name and siblings like other 'think_about' tools, more context would improve completeness.

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 0 parameters, and the input schema has 100% description coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, and it doesn't introduce any confusion. A baseline score of 4 is given for tools with no parameters, as there's nothing to compensate for.

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 'Call before code edits' states a timing directive but doesn't specify what the tool actually does. It mentions a procedural step rather than the tool's function, making the purpose vague. The tool name 'think_about_task_adherence' suggests it involves reflection or evaluation, but this isn't clarified in the 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 provides clear context for when to use the tool ('before code edits'), which helps the agent time its invocation appropriately. However, it doesn't specify alternatives or exclusions, such as whether it should be used before all edits or only specific types, or how it differs from sibling tools like 'think_about_collected_information' or 'think_about_whether_you_are_done'.

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

think_about_whether_you_are_doneC
Read-only

Call when you think you're done.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, and the description doesn't contradict this (it doesn't imply mutation). However, the description adds no behavioral context beyond the annotations—it doesn't explain what 'done' means, what the tool evaluates, or any side effects like rate limits. With annotations covering safety, a baseline of 3 is appropriate as the description adds minimal value but doesn't contradict.

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 extremely concise with a single sentence 'Call when you think you're done', which is front-loaded and wastes no words. It's appropriately sized for a simple tool with no parameters, earning a 5 for efficiency and clarity in brevity.

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?

Given the tool has 0 parameters, annotations (readOnlyHint=true), and an output schema exists, the description is minimally complete. However, it lacks depth for a 'think' tool—it doesn't explain what 'done' entails or how the output might guide decisions, leaving gaps in contextual understanding. A 3 reflects adequacy but with clear room for improvement.

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 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The description doesn't mention parameters, which is acceptable here. A baseline of 4 is given because with no parameters, the description adequately focuses on tool purpose without unnecessary param info.

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

Purpose2/5

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

The description 'Call when you think you're done' is a tautology that merely restates the tool name 'think_about_whether_you_are_done' without specifying what the tool actually does. It doesn't distinguish this tool from its siblings (like 'think_about_collected_information' or 'think_about_task_adherence'), leaving the purpose vague. A 2 is given because it's not missing but fails to provide meaningful clarity beyond the name.

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

Usage Guidelines2/5

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

The description provides minimal guidance with 'Call when you think you're done', which implies usage context but doesn't specify when to use this tool versus alternatives (e.g., compared to 'think_about_collected_information' or other decision-making tools). There's no explicit mention of when-not-to-use or prerequisites, so it offers no real differentiation. This scores a 2 for lacking substantive guidance.

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

write_memoryC
Read-only

Write memory to project store.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_file_nameYes
contentYes
max_answer_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=true, but the description implies a write operation ('write memory'), creating a potential contradiction. No additional behavioral traits are disclosed, such as overwrite behavior, permissions needed, or effects on existing data, leaving gaps despite 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, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently states the core action without unnecessary elaboration, earning full marks for brevity and structure.

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

Completeness2/5

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

Given the tool has an output schema, the description doesn't need to explain return values, but it lacks crucial context: no clarification on the contradiction with annotations, no parameter details despite 0% schema coverage, and no differentiation from siblings. For a write-like operation with behavioral ambiguity, this is incomplete.

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%, so the description must compensate, but it provides no parameter information. It doesn't explain what 'memory_file_name', 'content', or 'max_answer_chars' mean, their formats, or how they interact, failing to add value beyond the bare schema.

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 states the action ('write memory') and target ('project store'), which clarifies the basic purpose. However, it doesn't specify what 'memory' means in this context or differentiate from siblings like 'edit_memory' or 'delete_memory', leaving ambiguity about scope and distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'edit_memory', 'delete_memory', or 'read_memory'. The description lacks context about prerequisites, such as whether the memory file must exist or if this creates new files, offering minimal usage direction.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv1.0.0
    • First observedactivate_project
    • First observedcheck_onboarding_performed
    • First observeddelete_memory
    • First observededit_memory
    • First observedfind_referencing_symbols
    • First observedfind_symbol
    • First observedget_symbols_overview
    • First observedinitial_instructions
    • First observedlist_dir
    • First observedlist_memories
    • First observedonboarding
    • First observedread_memory
    • First observedrename_symbol
    • First observedreplace_content
    • First observedswitch_modes
    • First observedthink_about_collected_information
    • First observedthink_about_task_adherence
    • First observedthink_about_whether_you_are_done
    • First observedwrite_memory

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some potential confusion between 'think_about_collected_information', 'think_about_task_adherence', and 'think_about_whether_you_are_done', as they all involve reflective 'think about' actions and could overlap in usage scenarios. The other tools are clearly differentiated by their specific functions.

Naming Consistency3/5

The naming is mixed with no clear pattern: some use verb_noun (e.g., 'activate_project', 'delete_memory'), others use noun_verb (e.g., 'initial_instructions'), and some are descriptive phrases (e.g., 'think_about_collected_information'). While readable, this inconsistency can make it harder for agents to predict tool names.

Tool Count4/5

With 19 tools, the count is on the higher side but reasonable for a comprehensive code and project management server like Serena. It covers a wide range of operations from file handling to memory management and reflective tasks, suggesting a well-scoped but extensive feature set.

Completeness5/5

The tool set provides complete coverage for the inferred domain of code editing, project management, and memory operations. It includes CRUD for memories (write, read, edit, delete, list), symbol handling (find, rename, overview), file operations (list, replace), project activation, onboarding, and reflective checks, leaving no obvious gaps for core workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A coding agent toolkit that transforms LLMs into coding assistants capable of working directly on your codebase with semantic code retrieval and editing tools, providing IDE-like capabilities without requiring API subscriptions.
    33
    1
    MIT
  • A
    license
    A
    quality
    Not graded
    maintenance
    Enables agents to quickly find and edit code in a codebase with surgical precision. Find symbols, edit them everywhere with tools for reading code blocks, searching/replacing text, and making precise line-based modifications.
    3
    11
    -
  • A
    license
    A
    quality
    D
    maintenance
    A coding agent toolkit that provides IDE-like semantic code retrieval and editing tools, enabling LLMs to efficiently navigate and modify codebases at the symbol level rather than working with entire files.
    29
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI coding agents to query a pre-built semantic knowledge graph of code, reducing token usage and tool calls. Supports 16 tools for code exploration, analysis, and context building.
    13
    7
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryota-murakami/serena'

If you have feedback or need assistance with the MCP directory API, please join our Discord server