Letta MCP Server
Leverages Letta agents within Codeium's AI-powered coding tools for enhanced contextual assistance.
Enables code-aware agent assistance via GitHub Copilot in VS Code, integrating Letta agents into the development workflow.
Connects Letta agents to OpenAI ChatGPT for conversational AI workflows, leveraging stateful memory and tool orchestration.
Integrates Letta agents into Replit's cloud development environment for AI-powered tool orchestration and workflow automation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Letta MCP ServerMessage my sales agent: 'What's Q4 inventory?'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ Letta MCP Server
Universal MCP server connecting any AI client to Letta.ai's powerful stateful agents.
๐ Why This Matters
The Problem: AI ecosystems are fragmented. Your favorite AI clients can't easily access Letta's powerful stateful agents. Manual API integration is complex and time-consuming.
The Solution: Letta MCP Server provides universal connectivity to Letta.ai through the Model Context Protocol standard, enabling:
๐ฌ Direct agent conversations from any MCP-compatible client
๐ง Persistent memory management across platforms
๐ ๏ธ Tool orchestration and workflow automation
๐ Unified agent analytics and monitoring
Who It's For: Developers building AI applications who want to leverage Letta's stateful agents from Claude Desktop, GitHub Copilot, Cursor, Replit, Sourcegraph Cody, OpenAI ChatGPT, or any MCP-compatible client.
Related MCP server: agentforge
โก Quick Start (60 seconds)
1. Install
pip install letta-mcp-server2. Configure Your MCP Client
Claude Desktop
letta-mcp configureManual Configuration (Universal)
Add to your MCP client configuration:
{
"mcpServers": {
"letta": {
"command": "letta-mcp",
"args": ["run"],
"env": {
"LETTA_API_KEY": "your-api-key"
}
}
}
}GitHub Copilot (VS Code)
Enable MCP support via chat.mcp.enabled setting, then configure the server above.
Other Clients
Cursor: Add server to MCP configuration
Replit: Use MCP template integration
Sourcegraph Cody: Configure through OpenCtx
OpenAI ChatGPT: Use MCP-compatible endpoint
3. Use From Any Client
๐ Use MCP tool: letta_chat_with_agent
Message: "What's the status of our project?"๐ฏ Features
Core Capabilities
Feature | Direct API | MCP Server | Benefit |
Agent Chat | โ Multiple API calls | โ One tool call | 5x faster |
Memory Updates | โ Complex SDK usage | โ Simple commands | No code needed |
Tool Management | โ Manual integration | โ Automatic | Zero config |
Streaming | โ WebSocket handling | โ Built-in | Works out of box |
Error Handling | โ DIY | โ Automatic | Production ready |
Available Tools
๐ค Agent Management
letta_list_agents- List all agents with optional filteringletta_create_agent- Create new agents with memory blocksletta_get_agent- Get detailed agent informationletta_update_agent- Update agent configurationletta_delete_agent- Safely delete agents
๐ฌ Conversations
letta_send_message- Send messages to any agentletta_stream_message- Stream responses in real-timeletta_get_history- Retrieve conversation historyletta_export_chat- Export conversations
๐ง Memory Management
letta_get_memory- View agent memory blocksletta_update_memory- Update memory blocksletta_search_memory- Search through agent memoriesletta_create_memory_block- Add custom memory blocks
๐ ๏ธ Tools & Workflows
letta_list_tools- List available toolsletta_attach_tool- Add tools to agentsletta_create_tool- Create custom toolsletta_set_tool_rules- Configure workflow constraints
๐ Documentation & Client Examples
Universal Usage Pattern
All MCP-compatible clients follow the same pattern for using Letta tools:
๐ง letta_list_agents # List your agents
๐ง letta_send_message # Chat with agents
๐ง letta_update_memory # Manage agent memory
๐ง letta_attach_tool # Add tools to agentsClient-Specific Examples
Claude Desktop
# Natural language interface
"Use letta_send_message to ask my sales agent about Q4 inventory"
# Direct tool usage
๐ง letta_send_message
agent_id: "agent-123"
message: "What's our F-150 inventory status?"GitHub Copilot (VS Code)
// In VS Code chat
@workspace Use letta_send_message to get project status from my agent
// Agent provides code-aware responses based on your repository contextCursor
// CMD+K interface with agent context
// Agent understands your current codebase for intelligent assistance
// Use in Cursor Chat
Use letta_create_agent to set up a development assistant for this projectReplit
# In Replit workspace
# Configure MCP server, then use agent tools directly in your development environment
# Example: Create coding assistant
letta_create_agent(
name="replit-dev-assistant",
persona="Expert in the current project's tech stack"
)Sourcegraph Cody
// Enterprise code intelligence with Letta agents
// Agents provide contextual assistance based on your organization's codebase
// Example: Code review with agent memory
"Use letta_send_message to review this PR against our coding standards"Examples
See our examples directory for working code samples:
Quickstart guide - Complete setup and basic usage
Basic usage - Simple configuration and testing
Setup testing - Verify your installation works
๐ง Configuration
Environment Variables
# Required for Letta Cloud
LETTA_API_KEY=sk-let-...
# Optional configurations
LETTA_BASE_URL=https://api.letta.com # For self-hosted: http://localhost:8283
LETTA_DEFAULT_MODEL=openai/gpt-4o-mini
LETTA_DEFAULT_EMBEDDING=openai/text-embedding-3-small
LETTA_TIMEOUT=60
LETTA_MAX_RETRIES=3Configuration File
Create ~/.letta-mcp/config.yaml:
letta:
api_key: ${LETTA_API_KEY}
base_url: https://api.letta.com
defaults:
model: openai/gpt-4o-mini
embedding: openai/text-embedding-3-small
performance:
connection_pool_size: 10
timeout: 60
max_retries: 3
features:
streaming: true
auto_retry: true
request_logging: false๐๏ธ Universal MCP Architecture
The Letta MCP Server provides a standards-compliant bridge between any MCP client and Letta's powerful agent platform:
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ MCP Clients โ โ Letta MCP โ โ Letta.ai โ
โ โ โ Server โ โ Platform โ
โ โข Claude Desktop โโโโโบโ โโโโโบโ โ
โ โข GitHub Copilot โ โ โข JSON-RPC 2.0 โ โ โข Stateful โ
โ โข Cursor โ โ โข Connection โ โ Agents โ
โ โข Replit โ โ Pooling โ โ โข Memory โ
โ โข Sourcegraph Cody โ โ โข Error Handling โ โ Management โ
โ โข OpenAI ChatGPT โ โ โข Stream Support โ โ โข Tool โ
โ โข Any MCP Client โ โ โข 30+ Tools โ โ Orchestration โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโKey Components:
MCP Protocol Compliance: Standard JSON-RPC 2.0 implementation works with any client
Connection Pooling: Maintains 10 persistent connections for optimal performance
Error Handling: Automatic retry with exponential backoff for reliability
Streaming Support: Real-time response streaming for better user experience
Tool Management: Seamless orchestration of 30+ agent tools
๐ Performance
Benchmarked on typical developer workflows:
Operation | Direct API | MCP Server | Improvement |
Agent List | 1.2s | 0.3s | 4x faster |
Send Message | 2.1s | 1.8s | 15% faster |
Memory Update | 1.5s | 0.4s | 3.7x faster |
Tool Attach | 3.2s | 0.6s | 5.3x faster |
Improvements due to connection pooling, optimized serialization, and intelligent caching.
๐ MCP Ecosystem Compatibility
The Letta MCP Server is built on the Model Context Protocol (MCP) standard, ensuring broad compatibility across the AI ecosystem:
โ Verified Compatible Clients
Client | Status | Integration Method | Use Case |
Claude Desktop | โ Native | Built-in MCP support | Interactive agent conversations |
GitHub Copilot | โ Native | VS Code MCP integration | Code-aware agent assistance |
Cursor | โ Native | MCP configuration | AI-powered code editing |
Replit | โ Native | MCP template system | Cloud development environments |
Sourcegraph Cody | โ Via OpenCtx | OpenCtx MCP bridge | Enterprise code intelligence |
OpenAI ChatGPT | โ Supported | MCP-compatible endpoints | Conversational AI workflows |
VS Code | โ Preview | MCP extension support | Development environment integration |
๐ Future-Ready Architecture
Standards Compliant: Follows MCP JSON-RPC 2.0 specification exactly
Client Agnostic: Works with any current or future MCP-compatible client
Enterprise Ready: Scales across development teams and platforms
Open Source: Transparent implementation, community-driven improvements
๐ Growing MCP Ecosystem
The Model Context Protocol ecosystem has exploded since launch:
1000+ community MCP servers available on GitHub
Major AI companies adopting MCP: OpenAI (March 2025), Google DeepMind, Anthropic
Development platforms integrating: VS Code, Zed, Codeium, and more
Enterprise adoption: Block, Apollo, Atlassian using MCP in production
By choosing Letta MCP Server, you're building on the emerging standard for AI tool connectivity.
๐ก๏ธ Security
API Key Protection: Keys are never exposed in logs or errors
Request Validation: All inputs are validated before API calls
Rate Limiting: Built-in protection against API abuse
Secure Transport: All communications use HTTPS/TLS
๐ค Contributing
We love contributions! See CONTRIBUTING.md for guidelines.
Quick contribution ideas:
๐ Report bugs
๐ก Suggest features
๐ Improve documentation
๐งช Add tests
๐จ Create examples
๐ Resources
๐ License
MIT License - see LICENSE for details.
๐ Acknowledgments
Built with โค๏ธ by the community, for the AI ecosystem.
Special thanks to:
Letta.ai team for the revolutionary stateful agent platform
Anthropic for creating and open-sourcing the MCP specification
OpenAI, GitHub, Cursor, Replit, Sourcegraph for MCP ecosystem leadership
1000+ MCP community developers building the future of AI connectivity
All our contributors and users making this project possible
๐ Join the MCP Revolution
The Model Context Protocol represents the future of AI interoperability. By using Letta MCP Server, you're:
Building on standards instead of proprietary integrations
Future-proofing your AI applications for ecosystem growth
Contributing to the open-source AI community
Democratizing access to advanced agent capabilities
Available Tools
18 toolsletta_attach_toolB
Attach a tool to an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| tool_name | Yes | Name of the tool to attach |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose behavioral traits like side effects (e.g., does it replace existing tools?), requirements (e.g., agent state), or error conditions. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler, directly stating the action. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and the nature of a mutation tool, the description does not provide enough context about return values, error handling, or behavioral details. Although an output schema exists, the description itself is incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters ('ID of the agent', 'Name of the tool to attach'). The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Attach' and explicitly mentions the objects ('tool' and 'agent'). It clearly distinguishes from sibling tools like 'letta_detach_tool', making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., when an agent already has tools attached). There are no prerequisites or context about when attaching is appropriate, such as whether the agent must exist or the tool must be available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_create_agentB
Create a new Letta agent with memory blocks and tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new agent | |
| description | No | Description of the agent's purpose | |
| human_memory | No | Information about the human user | |
| persona_memory | No | Agent's persona and behavior | |
| custom_blocks | No | Additional memory blocks with label, value, description | |
| model | No | LLM model to use (default: from config) | |
| tools | No | List of tool names to attach |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states what the tool does, not side effects (e.g., overwriting existing agents?), permissions needed, or error conditions. This is insufficient for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence. It is concise without being overly terse, though it could benefit from additional details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and the presence of an output schema, the description is minimally complete. It omits details about return values, error handling, and parameter relationships. Some behavioral transparency is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'Letta agent', and specifies that it includes memory blocks and tools. This distinguishes it from sibling tools like update, delete, or attach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool compared to alternatives like letta_update_agent or letta_attach_tool. No usage context, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_create_memory_blockB
Create a new custom memory block for an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| label | Yes | Label for the new block | |
| value | Yes | Initial value | |
| description | Yes | Description of what this block stores |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only says 'Create a new custom memory block' without mentioning permissions, side effects, idempotency, or any constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence front-loading the core action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool, the description is barely adequate. It lacks context about memory blocks (e.g., that they are custom, agent-specific) and does not mention the output schema which exists. The minimal description leaves the agent with many unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with clear descriptions. The tool description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Create) and the resource (custom memory block) and implies the agent association. It distinguishes from siblings like get_memory, search_memory, update_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to create a new block versus using existing blocks or when to use other memory operations. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_delete_agentA
Delete a Letta agent (requires confirmation).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent to delete | |
| confirm | No | Must be True to confirm deletion |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral details. It only mentions confirmation requirement but omits critical info like irreversibility, side effects, or prerequisites. The destructive nature is implied but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with the core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with an output schema, the description is mostly complete. It covers the essential action and confirmation, though missing details on post-deletion behavior or error states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any semantic value beyond the schema; it merely repeats the confirmation requirement already captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete a Letta agent' with a specific verb and resource, and adds the key constraint that confirmation is required. This distinguishes it well from sibling tools like letta_create_agent or letta_update_agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when deletion is intended, but lacks explicit guidance on when not to use (e.g., if agent is in use) or alternatives. The note about confirmation is behavioral, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_detach_toolB
Detach a tool from an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| tool_name | Yes | Name of the tool to detach |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It does not disclose side effects, permissions, or impact on agent behavior, leaving significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy, though it could be improved by adding a brief note on typical use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation and presence of output schema, the description is minimally adequate but lacks context about the consequences of detachment or relation to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no extra meaning beyond what the schema already provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Detach' and the resource 'tool from an agent', clearly indicating the action and distinguishing it from sibling 'letta_attach_tool'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or when not to use; usage is implied by the name and description but lacks context regarding preconditions or comparisons to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_export_conversationC
Export a conversation in various formats.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| format | No | Export format (markdown, json, text) | markdown |
| include_tools | No | Whether to include tool calls |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states 'Export' with no mention of side effects, permissions, or whether the tool is read-only. The agent cannot infer if this is safe or destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, it could be expanded with minimal extra words to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and an output schema, the description fails to mention what the export output is (e.g., a file download or string). The agent lacks context on the tool's result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond what is already in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a conversation in various formats, which aligns with the name. However, it does not differentiate from the sibling tool 'letta_get_conversation_history', which might retrieve conversation data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use export versus other tools like get_conversation_history. The description neither explains trade-offs nor mentions prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_get_agentB
Get detailed information about a specific Letta agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention that the tool is read-only, what happens if the agent ID doesn't exist, or any authorization requirements. For a simple get operation, more context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the key action. It could include more detail without becoming verbose, but it is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema, the description does not need to elaborate on return values, but it lacks guidance on usage and behavioral details. For a simple tool with many siblings, it should provide more context to help the agent select correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no explanation for the agent_id parameter. While the parameter name is self-explanatory, the description should add value beyond the schema, which it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a specific Letta agent'. It distinguishes from siblings like letta_list_agents (which lists multiple agents) and letta_create_agent (which creates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like letta_list_agents or letta_get_agent_tools. Usage is implied by the name and description but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_get_agent_toolsC
Get the tools attached to a specific agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation but does not disclose behavior such as error handling for invalid agent IDs, rate limits, or any side effects. The description is too minimal for a tool without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is so brief that it sacrifices informativeness. It earns its place but could easily include more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity (one parameter), the description lacks completeness. It does not indicate the return format (though an output schema exists) or confirm that the tools are returned as a list. More context would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not add meaning to the 'agent_id' parameter beyond what the schema provides. It does not explain the format, source, or expected values of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('tools attached to a specific agent'). It differentiates from siblings like 'letta_get_agent' and 'letta_list_tools', though it does not specify the exact format of the returned tools (e.g., IDs vs objects).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'letta_list_tools' for all available tools, 'letta_get_agent' for agent details). No when-not or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_get_conversation_historyB
Get recent conversation history for a Letta agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| limit | No | Number of messages to retrieve (default: 10 to stay within token limits) | |
| before | No | Get messages before this timestamp |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose behavioral traits beyond the implicit read operation (e.g., no mention of auth, rate limits, error conditions). Input schema parameter descriptions add some context (token limits), but description itself lacks transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence that captures the essence. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and tool is simple, description is adequate but lacks usage guidance and behavioral details. Could be more complete with when-to-use context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no additional meaning to parameters beyond what is already in the schema. The parameter descriptions in schema are informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states action (get), resource (conversation history), and scope (recent). It distinguishes from sibling tools like letta_send_message (write) and letta_list_agents (list agents).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description is minimal and does not mention when to use or when not to use. Sibling names imply different purposes, but no explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_get_memoryC
Get all memory blocks for a Letta agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states a read operation without disclosing any potential side effects, prerequisites, or return structure. For example, it does not mention that the agent must exist or whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) and front-loaded. However, it sacrifices detail to the point of being minimalistic, which slightly reduces the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and an output schema, the description is incomplete. It does not mention the return format, possible errors, or any dependencies, leaving the agent without necessary operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'agent_id' is not explained in the description. With 0% schema coverage, the agent receives no context on how to obtain this value or its format, making it difficult to use correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'memory blocks' for a specific agent, distinguishing it from siblings like 'search_memory' and 'create_memory_block'. However, it could explicitly mention 'retrieve all' to reinforce the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'letta_search_memory' for filtered queries or 'letta_create_memory_block' for creation. The agent is left without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_get_usage_statsC
Get usage statistics for agents.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Specific agent ID or None for all agents | |
| period | No | Time period (day, week, month) | day |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as side effects, permissions, or rate limits. For a read-only operation, it fails to explicitly state that it is non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. It has no waste, but it could benefit from slightly more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity and the presence of an output schema, the description is minimally adequate. However, it lacks context about what 'usage statistics' entails or how the period parameter affects the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described in the schema. The description does not add any additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('usage statistics for agents'). It is specific, but it does not distinguish this tool from siblings like 'letta_get_agent' or 'letta_get_agent_tools'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_health_checkA
Check the health of the Letta API connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, and description only states 'check health' without detailing what health means, response format, or side effects. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, perfectly scoped for a health check tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool but description does not explain output schema or what a healthy/unhealthy response looks like, given it has an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, schema coverage 100%, description adds no param info but none needed. Baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks API health, a distinct purpose from sibling tools like agent creation or memory search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for verifying connection status; no explicit alternatives needed as it's a unique health check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_list_agentsA
List all available Letta agents with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional text to filter agent names | |
| limit | No | Number of agents to return (max 100) | |
| offset | No | Offset for pagination |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses pagination support (offset/limit) which is a key behavioral trait. It does not mention ordering, performance, or authentication, but for a read-only list tool, the core behavior is adequately covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core purpose and includes the key feature. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with pagination and an existing output schema, the description covers all essential aspects. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema; 'pagination support' is evident from the limit/offset parameters. No additional context about parameter usage or semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'available Letta agents', and the feature 'pagination support'. It distinguishes from sibling tools like 'letta_get_agent' (single) and 'letta_create_agent'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing agents but does not provide explicit guidance on when to use this tool versus alternatives like 'letta_get_agent' or filtering via search. No exclusions or comparison with siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_list_toolsA
List all available tools in the Letta system.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Text filter for tool names/descriptions | |
| tags | No | Filter by tool tags |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'List all available tools,' which implies a read-only operation, but does not disclose any behavioral traits such as authentication requirements, rate limits, or potential side effects. For a simple listing, this is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core functionality without unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two optional parameters and an output schema, the description is reasonably complete. It could mention that results can be filtered by text or tags, but those details are already in the schema. The description is sufficient for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('filter' and 'tags') described in the input schema. The tool description does not add any additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available tools in the Letta system,' using a specific verb and resource. It distinguishes from sibling tools like letta_list_agents by focusing on tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when wanting to list tools, but provides no explicit guidance on when to use this tool versus alternatives (e.g., letta_get_agent_tools) or when not to use it. No exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_search_memoryC
Search through agent's conversation memory.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| query | Yes | Search query | |
| limit | No | Maximum results to return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavioral traits like idempotency, side effects, or read-only nature. It only states 'search through memory' without any behavioral context, such as whether it modifies memory or requires special permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is too brief and lacks necessary detail. It is front-loaded with the verb but does not earn its place by providing additional value beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with few parameters and an existing output schema, the description is minimally adequate. However, it omits details like result format, pagination, or memory structure that could aid the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with basic parameter descriptions. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and resource 'conversation memory', distinguishing it from siblings like 'letta_get_memory' which implies direct retrieval without query semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as 'letta_get_memory' or 'letta_create_memory_block'. The description does not provide usage context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_send_messageB
Send a message to a Letta agent and get the response.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent to message | |
| message | Yes | Message content to send | |
| stream | No | Whether to stream the response |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states basic functionality and does not disclose behavioral traits like state mutation, permission requirements, error behavior, or that the message gets appended to conversation history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and existence of an output schema, the description covers the basic action. However, it could mention that it appends to conversation history or that streaming is optional for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send a message') and the resource ('a Letta agent and get the response'). It distinguishes from sibling tools like 'letta_get_conversation_history' which is for reading, and 'letta_update_agent' which modifies agent settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives such as 'letta_get_conversation_history' for reading or 'letta_update_agent' for modifications. No prerequisites or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_update_agentC
Update an existing agent's configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| name | No | ||
| description | No | ||
| model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. 'Update' implies mutation, but no details are given about side effects, idempotency, auth requirements, or rate limits. The description is too brief to be transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, making it concise. However, it sacrifices necessary detail and would benefit from a front-loaded structure listing key aspects like parameters and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of parameter descriptions and no mention of return values (despite an output schema existing), the description is incomplete. It does not sufficiently equip the agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning no parameter descriptions in the schema. The description adds zero meaning about parameters (agent_id, name, etc.). It fails to explain that name is the new agent name, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and resource (existing agent's configuration). It distinguishes from sibling tools like letta_create_agent and letta_delete_agent. However, 'configuration' is vague and does not hint at which fields (e.g., name, model) can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives (e.g., create if not exist, get before update). The description offers no context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
letta_update_memoryC
Update a memory block for a Letta agent.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ID of the agent | |
| block_label | Yes | Label of the memory block (e.g., 'human', 'persona') | |
| value | Yes | New value for the memory block |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'Update a memory block' without revealing any side effects, required permissions, or limitations. For a mutation tool, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief (one sentence) but not wasteful. However, it lacks any structured information (e.g., bullet points) that could improve readability. It is minimally concise but could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required parameters) and the presence of an output schema in the context, the description does not need to elaborate on return values. However, with no annotations, more behavioral context would improve completeness. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with descriptions (100% coverage). The description does not add any extra meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'a memory block for a Letta agent', making the purpose unambiguous. However, it does not differentiate from sibling tools like 'letta_create_memory_block' or 'letta_update_agent', which is a minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'letta_create_memory_block' for creating a new block or 'letta_update_agent' for updating agent-level settings. It lacks any context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
All 18 tools have distinct purposes, covering agent lifecycle, memory, tools, and conversation management. No overlap or ambiguity.
All tools follow the 'letta_verb_noun' pattern, with clear verbs (create, delete, get, list, update, attach, detach, send, export, search) and nouns (agent, memory, tool, conversation).
18 tools is slightly above the ideal range (3-15) but well-justified by the breadth of functionality (agents, memory, tools, conversations, health, usage stats). The count is appropriate for a full agent server.
The tool set covers core operations: CRUD for agents, memory management, tool attachment, conversation interaction, health check, and usage stats. Minor gaps like deleting memory blocks or archiving agents exist but do not hinder typical workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Talk to your public-facing AI from any MCP client โ Claude, ChatGPT, Cursor, Cline, Windsurf.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Persistent memory for AI agents with OAuth-backed hosted MCP access.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server implementation that enables interaction with the Letta API for managing agents, memory blocks, and tools in the Letta system.3611378MIT
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.53
- AlicenseNot gradedqualityCmaintenanceMCP server for cross-platform agent onboarding. Registers external agents, translates intents from LangChain, CrewAI, AutoGen, and A2A formats, and proxies cross-ecosystem transactions.MIT
- AlicenseNot gradedqualityAmaintenanceConnects MCP clients (Claude Desktop, Cursor, Cline, Zed) to llmsproxy.ai, exposing chat, coding, and retrieval capabilities as MCP tools, resources, and prompts.16Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SNYCFIRE-CORE/letta-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server