TeamRetro MCP Server
The TeamRetro MCP Server acts as a bridge between AI clients and TeamRetro's API, enabling seamless integration with the TeamRetro platform via the Model Context Protocol. With this server, you can:
Manage teams: List, create, update, delete teams with optional tags
Manage users: List, add, update, delete, or retrieve user details by email
Handle team members: List, add, update, or remove members from teams
Manage retrospectives: List, get, delete retrospective sessions
Manage actions and agreements: Create, list, update, and delete action items and team agreements
Handle health checks and models: List, get, and delete health checks; list and get health models
The server features pagination and filtering capabilities for efficient data handling, secure API authentication, and standardized MCP interfaces for simplified AI client integration.
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., "@TeamRetro MCP Serverlist my team's recent retrospectives"
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.
TeamRetro MCP Server
A Model Context Protocol (MCP) server that provides AI-powered integration with TeamRetro's platform. This server acts as a bridge between AI clients and TeamRetro's official API, enabling seamless interaction with team management, retrospectives, health checks, and other TeamRetro features through standardized MCP tools.
Key features:
Complete TeamRetro API coverage with 20+ tools for managing teams, users, actions, and more
Simplified AI client integration through standardized MCP interfaces
Built-in pagination and filtering support for efficient data handling
Secure API authentication handling and environment configuration
Comprehensive documentation and easy setup options
Whether you're building AI-powered team analytics, automated retrospective management, or integrating TeamRetro into your AI workflow, this MCP server provides the foundation you need.
Important Notes
Unofficial MCP Server
This MCP server is an unofficial community-developed interface to TeamRetro's services. While not developed or endorsed by TeamRetro, it provides standardized access to their platform.
Official API Integration
The server connects directly to TeamRetro's official public API:
Uses documented endpoints from TeamRetro's API specifications
Maintains full API compliance and version tracking
Implements all required authentication methods
Preserves original API responses without modification
API Documentation Source
All API endpoints and functionality are based on TeamRetro's official documentation:
API Help Article: https://help.teamretro.com/article/320-teamretro-api
API Specifications: https://groupmap.stoplight.io/docs/teamretro/
Implementation strictly follows the public API specifications
Any changes to the TeamRetro API may affect this MCP server's functionality
Related MCP server: MCP Server with Authentication
How to Use
NPX (Recommended, Easy Setup)
{
"mcpServers": {
"teamretro-mcp-server": {
"command": "npx",
"args": ["-y", "teamretro-mcp-server"],
"env": {
"TEAMRETRO_AUTH_TYPE": "apiKey",
"TEAMRETRO_API_KEY": "your-api-key"
}
}
}
}Installing via Smithery
To install TeamRetro MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @adepanges/teamretro-mcp-server --client claudeFrom Source Code
Clone the repository, install dependencies, and build the project:
git clone https://github.com/adepanges/teamretro-mcp-server.git
cd teamretro-mcp-server
pnpm install
pnpm run buildRunning in AI Client
Configure the AI client with the following settings:
{
"mcpServers": {
"teamretro-mcp-server": {
"command": "node",
"args": ["/path/to/teamretro-mcp-server/dist/index.js"],
"env": {
"TEAMRETRO_AUTH_TYPE": "apiKey",
"TEAMRETRO_API_KEY": "your-api-key"
}
}
}
}Running with Inspector
Configure the environment variables by copying
.env.exampleto.envand modifying it according to your needs.Run the server with inspector:
pnpm run inspectorEnvironment Variables Examples
Base URL
The base URL for the TeamRetro API can be set using the TEAMRETRO_BASE_URL environment variable. By default, it is set to https://api.teamretro.com.
{
"env": {
"TEAMRETRO_BASE_URL": "https://api.teamretro.com"
}
}API Key Authentication
{
"env": {
"TEAMRETRO_AUTH_TYPE": "apiKey",
"TEAMRETRO_API_KEY": "your-api-key"
}
}Available Tools
The server provides the following tools:
Users
list_users: List users with pagination using offset and limit parameters to control the number of results returnedadd_user: Add a new user or update an existing user's information by their email address, specifying optional name and emailAddressupdate_user: Update an existing user's details, such as their name and emailAddress, by providing their current emaildelete_user: Delete a user by their email addressget_user: Retrieve detailed information about a single user by their email address
Teams
list_teams: List teams from TeamRetro with filtering by tags and IDs, and pagination using offset and limit parametersdetail_team: Retrieve detailed information about a single team by its unique IDupdate_team: Update an existing team's details, such as its name and associated tags, by providing the team's IDcreate_team: Create a new team with a required name, and optional tags and membersdelete_team: Delete an existing team by its ID
Team Members
list_team_members: Retrieve a list of team members for a specified team ID with pagination controls for offset and limitget_team_member: Fetch a team member by their email address within a specified teamupdate_team_member: Update a team member's details, such as their name or team admin status, by their email address within a specified teamremove_team_member: Remove a team member from a team by their email addressadd_team_member: Add a new team member to a team by their email address, with optional specification of team admin status
Actions
list_actions: Retrieve a list of actions from TeamRetro with optional filtering by team tags and team IDs, and pagination controls for offset and limitcreate_action: Create a new action in TeamRetro with required details such as team ID, title, due date, completion status, and assigned userget_action: Fetch a single action by its unique ID from TeamRetroupdate_action: Update an existing action in TeamRetro with new details such as title, due date, completion status, priority, and assigned userdelete_action: Delete an existing action from TeamRetro by its action ID
Agreements
list_agreements: List agreements from TeamRetro with optional filtering by team tags and team IDs, as well as pagination controlscreate_agreement: Create a new agreement in TeamRetro by specifying the team it belongs to and its titleget_agreement: Retrieve a single agreement by its unique identifierupdate_agreement: Update an existing agreement's details such as its title or associated teamdelete_agreement: Delete an existing agreement by specifying its unique identifier
Health Checks
list_health_checks: List health checks from TeamRetro with optional filtering by health model IDs, team tags, and team IDs, as well as pagination controlsget_health_check: Retrieve a single health check by its unique identifier with optional attributes to includedelete_health_check: Delete an existing health check by specifying its unique identifier
Health Models
list_health_models: List health models from TeamRetro with pagination controlsget_health_model: Retrieve a single health model by its unique identifier
Retrospectives
list_retrospectives: List retrospectives from TeamRetro with filtering by team tags and IDs, and pagination using offset and limit parametersget_retrospective: Retrieve detailed information about a single retrospective by its unique IDdelete_retrospective: Delete an existing retrospective by its ID
Reports
team_activity_report: Generate a team activity report from TeamRetro with filtering by team tags and team IDsteam_actions_activity_report: Generate a team actions activity report from TeamRetro with filtering by team tags and team IDs. Returns CSV data with action statistics including open, completed, and overdue action counts grouped by age rangesretrospective_activity_report: Generate a retrospective activity report from TeamRetro with filtering by date range, team tags and team IDs. Returns CSV data with retrospective statistics including participation rate, idea count, comment count, action count, and agreement counthealth_check_activity_report: Generate a health check activity report from TeamRetro with filtering by date range, team tags and team IDs. Returns CSV data with health check statistics including participation rate, comment count, action count, and agreement countteam_health_latest_report: Generate a team health (latest) report from TeamRetro for a specific health model with filtering by date range, team tags and team IDs. Returns CSV data with latest team health scores including health dimensionsteam_health_historical_report: Generate a team health (historical) report from TeamRetro for a specific health model with filtering by date range, team tags and team IDs. Returns CSV data with historical team health scores including health dimensionsusers_report: Generate a users report from TeamRetro with filtering by team tags and team IDs. Returns CSV data with user information including account roles, team memberships, and activity statistics
Changelog
For a detailed list of changes and updates, see CHANGELOG.md.
Available Tools
11 toolsadd_userC
Add or update a user by email
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether this requires admin permissions, if it's idempotent, what happens on conflicts, or the response format. For a mutation tool with zero annotation coverage, this is inadequate.
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, efficient sentence with no wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
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 mutation tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error cases, return values, and differentiation from siblings, making it insufficient for reliable agent use.
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%, so the description must compensate but adds minimal parameter context. It mentions 'by email' which hints at the 'email' parameter but doesn't explain the 'name' parameter or their semantics (e.g., is name optional for updates?). This leaves significant gaps in parameter understanding.
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 ('Add or update') and target resource ('a user by email'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'create_user' (which doesn't exist) or 'update_user' (which does exist), missing explicit sibling distinction.
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 versus alternatives like 'update_user' or 'delete_user'. The description implies it can handle both addition and update, but doesn't specify scenarios or prerequisites for choosing it over other user management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_teamC
Create a new team with optional members and tags
| Name | Required | Description | Default |
|---|---|---|---|
| members | No | { email: string, name?: string, teamAdmin?: boolean }[] | |
| name | Yes | string | |
| tags | No | string[] |
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 the tool creates a team but doesn't disclose behavioral traits like required permissions, whether it's idempotent, what happens on duplicate team names, rate limits, or what the return value contains. For a creation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 purpose ('Create a new team') and adds only necessary qualifiers ('with optional members and tags'). 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?
Given the complexity (a creation tool with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, idempotency, or error handling, and doesn't explain what the tool returns. For a tool that creates resources, this leaves critical gaps for an 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%, so the schema already documents all parameters (name, members, tags) with their types, constraints, and descriptions. The description adds minimal value by noting that members and tags are optional, but this is already implied by the schema (only 'name' is required). Baseline 3 is appropriate when the schema does the heavy lifting.
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 resource ('a new team'), and mentions optional features ('with optional members and tags'). It doesn't explicitly differentiate from siblings like 'add_user' or 'update_team', but the verb 'Create' is specific enough to indicate this is for initial team creation rather than modification.
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 versus alternatives. With siblings like 'add_user' (for adding members to existing teams), 'update_team' (for modifying teams), and 'list_teams' (for viewing), the description doesn't help an agent choose between these tools or indicate prerequisites (e.g., whether you need admin permissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_teamC
Delete an existing team
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'delete' but doesn't disclose if this is permanent, reversible, requires admin permissions, affects associated data (e.g., members, projects), or has side effects. For a destructive tool with zero annotation coverage, this is a significant gap in behavioral disclosure.
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 with zero waste. It is appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.
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 destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical context such as irreversible consequences, permission requirements, error conditions, or return values. Given the complexity and risk of deletion, more behavioral and usage details are needed.
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 the parameter 'teamId' documented in the schema (including pattern and type). The description adds no parameter-specific information beyond implying a team identifier is needed. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 'Delete an existing team' clearly states the action (delete) and target resource (team). It distinguishes from siblings like 'create_team' or 'update_team' by specifying deletion. However, it lacks specificity about what 'delete' entails (e.g., permanent removal vs archiving).
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 versus alternatives. It doesn't mention prerequisites (e.g., team must be empty), exclusions (e.g., cannot delete default teams), or related tools like 'detail_team' for verification. The description alone offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_userC
Delete a user by email
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | string |
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 of behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this action is reversible, what permissions are needed, or what happens to associated data. This leaves significant gaps in understanding the tool's behavior.
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 with no wasted words, making it highly concise and front-loaded. Every word contributes to understanding the tool's basic function efficiently.
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 that this is a destructive tool with no annotations and no output schema, the description is insufficiently complete. It lacks critical details like confirmation requirements, error handling, or return values, leaving the agent with incomplete context for safe and effective use.
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 has 100% description coverage, with the 'email' parameter fully documented in the schema itself. The description adds no additional semantic information beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema 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 action ('Delete') and the resource ('a user by email'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'delete_team' or 'update_user' beyond the obvious resource difference, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'update_user' or 'get_user', nor does it mention prerequisites such as user existence or permissions required. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detail_teamB
Get a single team by ID
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | string |
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 of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read operation, but doesn't mention whether it requires authentication, has rate limits, returns error conditions, or what the output format looks like. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence that states the core purpose without any fluff. It's front-loaded with the essential information ('Get a single team by ID'), making it immediately clear. Every word earns its place, with no wasted verbiage.
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 simple single-parameter input schema with full coverage and no output schema, the description is minimally adequate. It covers the basic purpose but lacks behavioral details like authentication needs, error handling, or output format. For a read operation with no annotations, it should ideally provide more context about what 'Get' entails beyond just the action.
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 the single parameter 'teamId' fully documented in the schema including its type, pattern, and requirement. The description adds no additional parameter information beyond what's in the schema, such as explaining what a team ID represents or where to find it. Baseline 3 is appropriate when the schema does all the work.
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 ('a single team by ID'), making the purpose immediately understandable. It distinguishes this from list_teams by specifying retrieval of a single team rather than multiple teams. However, it doesn't explicitly contrast with other sibling tools like get_user or list_team_members, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 when to use detail_team versus list_teams, get_user, or list_team_members, nor does it specify prerequisites like needing a team ID. Without any usage context, the agent must infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userC
Get a single user by email
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: whether it's a read-only operation, what happens if the user doesn't exist (error handling), response format, or any rate limits. The description is minimal and lacks operational context.
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 with a single sentence that directly states the tool's purpose. Every word serves a functional purpose with zero redundancy or unnecessary elaboration, making it perfectly front-loaded 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?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what information is returned about the user, how errors are handled, or any operational constraints. Given the lack of structured metadata, the description should provide more context about the tool's behavior and expected outcomes.
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 description mentions the single parameter ('by email') which aligns with the schema's 100% coverage. However, it doesn't add meaningful semantic context beyond what the schema already provides through the email format validation. No additional guidance is given about email format requirements or edge cases.
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 ('a single user') with the specific lookup method ('by email'), which distinguishes it from sibling tools like 'list_users' or 'detail_team'. However, it doesn't explicitly differentiate from similar tools like 'update_user' or 'delete_user' that also operate on users.
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. It doesn't mention when to prefer 'get_user' over 'list_users' for retrieving user information, nor does it specify prerequisites like authentication requirements or access permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_membersC
List team members with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | number | |
| offset | No | number | |
| teamId | Yes | string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions pagination, which is useful context, but fails to describe other critical behaviors such as whether this is a read-only operation (implied by 'List' but not stated), what permissions are required, rate limits, or the format of returned data. For a tool with no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—'List team members with pagination'—front-loading the core action and key feature. Every word earns its place, making it highly concise and well-structured for quick comprehension.
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 complexity (3 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral traits, output format, error handling, and usage context relative to siblings. While concise, it doesn't provide enough information for an agent to fully understand how to invoke and interpret results, especially with no output schema to compensate.
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 three parameters (teamId, limit, offset) with descriptions like 'number' and 'string'. The description adds no additional meaning beyond implying pagination through 'limit' and 'offset', but doesn't clarify parameter interactions or usage details. Baseline 3 is appropriate as the schema does the heavy lifting.
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') and resource ('team members'), making the purpose immediately understandable. It distinguishes from siblings like 'list_users' by specifying team members rather than all users, though it doesn't explicitly contrast with 'detail_team' which might provide team details rather than member listings.
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 like 'list_users' or 'detail_team'. It mentions pagination, which hints at usage for large datasets, but lacks explicit when/when-not instructions or named alternatives, leaving the agent to infer context from sibling tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsB
List teams from TeamRetro with filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | number | |
| offset | No | number | |
| teamIds | No | string,string,... | |
| teamTags | No | string,string,... |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'filtering and pagination' which hints at capabilities, but fails to describe critical behaviors: whether this is a read-only operation, what authentication is required, rate limits, error conditions, or the structure of returned data. For a tool with 4 parameters and no output schema, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List teams from TeamRetro') followed by key capabilities ('with filtering and pagination'). Every word serves a purpose with zero redundancy or unnecessary elaboration, making it optimally concise for its informational content.
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 4 parameters, no annotations, and no output schema, the description is insufficiently complete. While concise, it fails to address critical context: what authentication is needed, whether this is a safe read operation, what the return format looks like, or how filtering parameters interact. For a list tool with filtering capabilities, users need more guidance on expected behavior and 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 description coverage is 100%, so the schema already documents all parameters (limit, offset, teamIds, teamTags) with their types, constraints, and defaults. The description adds marginal value by mentioning 'filtering and pagination' which aligns with teamIds/teamTags and limit/offset parameters respectively, but provides no additional semantic context beyond what the schema already specifies.
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') and resource ('teams from TeamRetro'), making the purpose immediately understandable. It distinguishes from siblings like 'detail_team' (which shows details of a specific team) and 'create_team' (which creates new teams). However, it doesn't explicitly differentiate from 'list_team_members' (which lists members within teams), leaving some ambiguity.
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 context by mentioning 'filtering and pagination', suggesting this tool is for retrieving multiple teams with optional constraints. However, it provides no explicit guidance on when to use this versus alternatives like 'detail_team' for single teams or 'list_team_members' for team composition. The context is implied but not clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersC
List users with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | number | |
| offset | No | number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'pagination' which hints at a read-only, list operation, but doesn't specify whether this requires authentication, rate limits, or what the output format looks like (e.g., array of user objects). For a tool with zero annotation coverage, 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, efficient sentence with zero waste. It's front-loaded with the core purpose ('List users') and adds only essential context ('with pagination'). 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a list operation with pagination), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., user objects, total count), authentication needs, or error conditions. For a tool with no structured behavioral data, more context is needed.
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 fully documents the 'limit' and 'offset' parameters with defaults and constraints. The description adds no additional meaning beyond implying pagination, which is already clear from the parameter names. Baseline 3 is appropriate when the schema does the heavy lifting.
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') and resource ('users'), making the purpose immediately understandable. It distinguishes from siblings like 'get_user' (singular) and 'add_user' (creation). However, it doesn't specify what kind of listing this is (e.g., all users, filtered users) beyond pagination.
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 like 'get_user' (for single user details) or 'list_team_members' (for users within a team). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_teamC
Update an existing team
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | string | |
| tags | No | string[] | |
| teamId | Yes | string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, error conditions, or response format. This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
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 mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., side effects, auth needs), response format, and usage context, leaving significant gaps for an agent to operate safely and 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 description coverage is 100%, so the schema fully documents the three parameters (teamId, name, tags) with descriptions and constraints. The description adds no parameter-specific information beyond what's in 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 'Update an existing team' clearly states the verb (update) and resource (team), distinguishing it from siblings like create_team or delete_team. However, it doesn't specify what aspects of the team can be updated (e.g., name, tags), which would make it more specific.
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 like create_team or update_user. It doesn't mention prerequisites (e.g., needing an existing teamId) 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.
update_userC
Update an existing user's information
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | string | ||
| emailAddress | Yes | string | |
| name | Yes | string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation (implying mutation), but doesn't disclose any behavioral traits such as required permissions, whether changes are reversible, error conditions, or what happens to unspecified fields. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward update operation and is perfectly front-loaded with the essential information.
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 mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens during the update (e.g., partial updates, validation), what the response contains, or potential side effects. The 100% schema coverage helps with parameters but doesn't compensate for the lack of behavioral 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 schema description coverage is 100%, so the schema already documents all three parameters (email, emailAddress, name) with their types and formats. The description adds no additional meaning about what these parameters represent beyond the generic 'user's information' reference, meeting the baseline for high schema 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 action ('Update') and resource ('an existing user's information'), making the purpose immediately understandable. It distinguishes from sibling tools like 'add_user' (creation) and 'delete_user' (deletion), though it doesn't explicitly differentiate from 'update_team' which updates a different resource type.
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. It doesn't mention prerequisites (e.g., user must exist), when not to use it, or how it differs from similar tools like 'update_team' or 'add_user' beyond the obvious resource difference.
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.
11 tool updates
v1.0.0- First observed
add_user - First observed
create_team - First observed
delete_team - First observed
delete_user - First observed
detail_team - First observed
get_user - First observed
list_team_members - First observed
list_teams - First observed
list_users - First observed
update_team - First observed
update_user
TDQS
Every tool has a clearly distinct purpose targeting specific resources and actions, with no ambiguity. For example, add_user vs. update_user are differentiated by create/update semantics, and list_team_members is distinct from list_teams in scope. The descriptions reinforce these distinctions, making misselection unlikely.
All tools follow a consistent verb_noun pattern using snake_case, such as create_team, update_user, and list_teams. This predictability aids agent understanding and tool selection, with no deviations in naming conventions across the set.
With 11 tools, the count is well-scoped for managing teams and users in a TeamRetro domain. Each tool earns its place by covering essential operations like CRUD for both resources, plus specific actions like listing members, without being excessive or sparse.
The tool set provides complete CRUD and lifecycle coverage for teams and users, including create, read, update, delete, and list operations. There are no obvious gaps, such as missing pagination or filtering, and agents can handle typical workflows without dead ends.
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
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
An MCP server that provides access to Testiny projects, test cases and test runs
A basic MCP server to operate on the Postman API.
Related MCP Servers
- AlicenseCqualityBmaintenanceMCP server for integrating with Bitbucket Cloud and Server APIs, enabling AI assistants to interact with repositories, pull requests, pipelines, and more.59373MIT
- AlicenseCqualityDmaintenanceImplements a secure MCP server with API Key and JWT authentication, providing tools like echo, login, secure_action, and admin_action. Includes MCP Inspector integration for testing and debugging.13MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive, production-ready MCP server for seamless Jira Cloud integration, enabling AI agents and custom applications to manage boards, issues, users, projects, and workflows via natural language commands.7214MIT
- FlicenseNot gradedqualityCmaintenanceA local MCP server that wraps the Jira REST API v3, enabling issue management, searching, commenting, and transitions for openmrs.atlassian.net via Basic Auth.1-
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/adepanges/teamretro-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server