EpicMe MCP
The EpicMe MCP server is an experimental personal journaling application and MCP tool demonstration platform that provides:
Journaling Features: Create, manage, and organize journal entries with tags, moods, and privacy settings. Get AI-powered tag suggestions and summaries.
User Management: Authenticate users via email with TOTP validation, manage authentication sessions, and access user information.
Tag Management: Create, update, delete, and associate tags with journal entries.
MCP Demonstrations: Echo messages, add numbers, simulate long-running operations with progress updates, demonstrate message annotations (error, success, debug), provide resource references (ID 1-100), and showcase user elicitation for gathering information like favorite color, number, and pets.
Utilities: Print environment variables for debugging, sample text from LLMs, fetch tiny image references, return multiple resource links, and provide structured content like weather data with schema validation.
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., "@EpicMe MCPCreate a journal entry about my productive morning with coffee and coding"
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.
EpicMe MCP
This is an example of an application that's exclusively accessible via Model Context Protocol (MCP).
Everything from user registration and authentication to interacting with user data is handled via MCP tools.
The goal is to demonstrate a possible future of applications where users interact with our apps via natural language with LLMs and the MCP protocol. This will also be the basis upon which I will teach how to build MCP tools on EpicAI.pro.
How to Use
⚠️ Important Disclaimer: This is an experimental playground, not a production service. There are no SLAs, guarantees of data privacy, or data retention policies. Use at your own risk and don't store anything important or sensitive.
Server URL
The EpicMe MCP server is deployed at:
https://epic-me-mcp.kentcdodds.workers.dev/mcpWhat You Can Do
EpicMe is a personal journaling application that allows you to:
Create and manage journal entries with titles, content, mood, location, weather, and privacy settings
Organize entries with tags for better categorization and filtering
Get AI-powered tag suggestions for your entries
Summarize your journal entries with optional filtering by tags or date range
Mark entries as favorites and set privacy levels
Getting Started
Connect to the MCP server using your preferred MCP client (like Claude Desktop)
Authenticate by providing your email address - you'll receive a validation code
Start journaling using natural language commands
Authentication Flow
The authentication is unique because it works with users who don't exist yet:
Use the
authenticatetool with your email addressCheck your email for a TOTP validation code
Use the
validate_tokentool with the code to complete authenticationYou're now logged in and can access all authenticated features
Available Tools
Authentication Tools (Unauthenticated)
authenticate- Start authentication process with your emailvalidate_token- Complete authentication with emailed validation code
User Management Tools (Authenticated)
whoami- Get information about the current userlogout- Remove authentication
Journal Entry Tools (Authenticated)
create_entry- Create a new journal entry with optional tags, mood, location, weatherget_entry- Retrieve a specific journal entry by IDlist_entries- List all entries, optionally filtered by tagsupdate_entry- Update any field of an existing entrydelete_entry- Delete a journal entry
Tag Management Tools (Authenticated)
create_tag- Create a new tag for organizing entriesget_tag- Get details of a specific taglist_tags- List all your tagsupdate_tag- Update tag propertiesdelete_tag- Delete a tagadd_tag_to_entry- Associate a tag with an entry
Available Prompts
suggest_tags- Get AI-powered tag suggestions for a specific journal entrysummarize_journal_entries- Get a summary of your journal entries, with optional filtering by tags or date range
Available Resources
epicme://credits- Credits informationepicme://users/current- Current user informationepicme://entries/{id}- Specific journal entry dataepicme://entries- List of all journal entriesepicme://tags/{id}- Specific tag dataepicme://tags- List of all tags
Example Usage
Here are some example natural language commands you can use:
"Authenticate me with my email address"
"Create a new journal entry about my day at the beach"
"List all my journal entries"
"Show me entries tagged with 'work'"
"Suggest tags for my latest entry"
"Summarize my journal entries from last week"
"Update my entry to mark it as a favorite"
"Create a new tag called 'personal goals'"
Related MCP server: Anytype MCP Server
Authentication
The authentication flow is unique because we need to be able to go through OAuth for users who don't exist yet (users need to register first). So we generate a grant automatically without the user having to go through the OAuth flow themselves. Then we allow the user to claim the grant via a TOTP code which is emailed to them.
This works well enough.
Known Issues
During development, if you delete the .wrangler directory, you're deleting the
dynamically registered clients. Those clients don't know that their entries have
been deleted so they won't attempt to re-register. In the MCP Inspector, you can
go in the browser dev tools and clear the session storage and it will
re-register. In other clients I do not know how to make them re-register.
Available Tools
11 toolsaddC
Adds two numbers
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First number | |
| b | Yes | Second 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 states the basic action but doesn't cover important aspects like error handling (e.g., overflow), performance, or output format, which are critical for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with a single, clear sentence that directly states the tool's function. There is no wasted verbiage, making it efficient and easy to parse.
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 lack of annotations or output schema, the description is incomplete. It doesn't explain the return value (e.g., sum as a number) or potential behavioral traits, leaving gaps that could hinder correct invocation by 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?
The schema description coverage is 100%, with both parameters clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, so it meets the baseline score for high schema coverage without compensating with extra insights.
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's purpose with a specific verb ('Adds') and resource ('two numbers'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'echo' or 'sampleLLM' that might also perform mathematical operations, so it doesn't reach the highest 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 any prerequisites, constraints, or suggest other tools for related tasks, leaving the agent with no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotatedMessageC
Demonstrates how annotations can be used to provide metadata about content
| Name | Required | Description | Default |
|---|---|---|---|
| messageType | Yes | Type of message to demonstrate different annotation patterns | |
| includeImage | No | Whether to include an example image |
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 mentions demonstrating annotation patterns but doesn't disclose behavioral traits such as whether it's read-only, if it modifies state, what the output looks like, or any side effects. This is inadequate for a tool with no 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 that gets straight to the point without waste. It's appropriately sized for a simple tool, though it could be more front-loaded with operational details.
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 no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, how annotations are demonstrated, or the complexity involved. For a tool with 2 parameters and full schema coverage, more context on behavior and output 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 already documents both parameters fully. The description adds no meaning beyond the schema, such as explaining why to choose specific message types or image inclusion. Baseline 3 is appropriate when 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 states the tool demonstrates annotation usage for content metadata, which is a clear purpose, but it's vague about what the tool actually does operationally. It doesn't specify a concrete action like 'generate' or 'display' annotated messages, nor does it distinguish from siblings like 'structuredContent' or 'echo' that might handle similar content.
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?
There is no guidance on when to use this tool versus alternatives. Given siblings like 'structuredContent' and 'echo' that might handle content, the description lacks explicit when/when-not instructions or prerequisites, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
echoC
Echoes back the input
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to echo |
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. 'Echoes back the input' implies a read-only, non-destructive operation, but it lacks details on output format, error handling, or any constraints like rate limits. This is a significant gap for a 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 extremely concise with just three words, front-loaded and zero waste. Every word earns its place by directly conveying the core function without unnecessary elaboration, making it highly 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 tool's simplicity (1 parameter, no output schema), the description is incomplete. It doesn't explain the return value (e.g., what 'echoes back' means in practice) or provide context for use among siblings. Without annotations or output schema, more detail is needed to fully inform 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?
The input schema has 100% description coverage, with the 'message' parameter fully documented. The description adds no additional meaning beyond what the schema provides, such as examples or usage context. According to the rules, with high schema coverage (>80%), the baseline is 3 even without param info in the description.
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 'Echoes back the input' clearly states the tool's function with a specific verb ('echoes') and resource ('input'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'printEnv' or 'sampleLLM' that might also output data, so it doesn't reach the highest 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. With siblings like 'printEnv' (prints environment variables) and 'sampleLLM' (likely generates text), there's no indication of when 'echo' is appropriate, such as for testing or simple output, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getResourceLinksC
Returns multiple resource links that reference different types of resources
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of resource links to return (1-10) |
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 returns resource links but doesn't describe what these links contain, how they're formatted, whether the operation is idempotent, or any performance characteristics like rate limits. The description is minimal and fails to provide essential behavioral context for a tool with no 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 that directly states the tool's function. It's appropriately sized for a simple tool and front-loaded with the core action. However, it could be slightly more informative without losing conciseness, such as by hinting at the link types or usage context.
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 moderate complexity (returns multiple links of different types), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the resource links are, their format, or what 'different types of resources' means. For a tool that presumably returns structured data, this leaves significant gaps in understanding how to interpret 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?
The description adds no parameter semantics beyond what the input schema provides. With 100% schema description coverage and only one parameter ('count') fully documented in the schema, the baseline score is 3. The description doesn't explain why 'count' matters or how it affects the returned links, so it doesn't compensate but doesn't detract either.
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 states the tool 'returns multiple resource links that reference different types of resources', which provides a vague purpose. It specifies the verb 'returns' and resource 'resource links', but doesn't clarify what these links are used for or how they differ from similar tools like 'getResourceReference' or 'getTinyImage'. The purpose is understandable but lacks specificity and sibling differentiation.
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 any context for usage, prerequisites, or exclusions. Given sibling tools like 'getResourceReference' and 'getTinyImage' that might handle related resources, the lack of comparative guidance leaves the agent without clear direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getResourceReferenceC
Returns a resource reference that can be used by MCP clients
| Name | Required | Description | Default |
|---|---|---|---|
| resourceId | Yes | ID of the resource to reference (1-100) |
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 returns something but doesn't describe what a 'resource reference' is, any side effects, error conditions, or performance aspects. This leaves significant gaps in understanding the tool's behavior beyond the basic action.
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, straightforward sentence with no wasted words. It's appropriately sized for a simple tool, but it could be more front-loaded with key details. However, it's efficient and clear in its brevity.
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 read operation with one parameter) and lack of annotations or output schema, the description is incomplete. It doesn't explain what a 'resource reference' is, how it's used, or what the return value looks like. This leaves the agent with insufficient context to use the tool effectively beyond the basic 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?
Schema description coverage is 100%, with the parameter 'resourceId' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as examples or context for the resource ID. Since the schema does the heavy lifting, 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 states the tool 'returns a resource reference that can be used by MCP clients,' which provides a basic purpose but lacks specificity about what type of resource or what 'resource reference' entails. It distinguishes from some siblings like 'echo' or 'printEnv' but not clearly from 'getResourceLinks' which might be related. The purpose is vague rather than 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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions. For example, it doesn't clarify if this is for internal MCP client use only or how it differs from 'getResourceLinks.' The description offers no usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTinyImageC
Returns the MCP_TINY_IMAGE
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 but offers minimal information. It states the tool 'returns' something, implying a read-only operation, but doesn't specify whether it's a simple fetch, has side effects, requires authentication, involves rate limits, or what format the return value takes. The description lacks details on what 'MCP_TINY_IMAGE' represents or how it behaves, leaving significant gaps in understanding.
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, straightforward sentence: 'Returns the MCP_TINY_IMAGE'. It's front-loaded and wastes no words, making it easy to parse quickly. Every word earns its place by conveying the core action, though it lacks depth.
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 (0 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'MCP_TINY_IMAGE' is, what 'returns' entails (e.g., data format, potential errors), or how it fits into broader workflows. While minimal context might suffice for a trivial tool, this leaves too many unanswered questions about usage and output.
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 tool has zero parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics since there are none to explain. This meets the baseline of 4 for tools with no parameters, as there's no gap to compensate for.
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 'Returns the MCP_TINY_IMAGE' is a tautology that essentially restates the tool name 'getTinyImage' with slightly different wording. It doesn't specify what the MCP_TINY_IMAGE actually is (e.g., an image resource, metadata, URL) or what 'returns' means in practical terms. While it indicates a retrieval action, the purpose remains vague and indistinguishable from other retrieval tools like 'getResourceLinks' or 'getResourceReference'.
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 any specific context, prerequisites, or exclusions, nor does it differentiate it from sibling tools like 'getResourceLinks' or 'getResourceReference' that might also retrieve resources. There's no indication of when this tool is appropriate or what problems it solves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
longRunningOperationC
Demonstrates a long running operation with progress updates
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | Duration of the operation in seconds | |
| steps | No | Number of steps in the operation |
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 mentions 'long running operation with progress updates', which implies asynchronous behavior and potential delays, but doesn't specify timeout handling, cancellation options, or what 'progress updates' entail. For a tool with no 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 directly states the tool's function. It's appropriately sized and front-loaded with no wasted words, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (long-running operation with progress updates), no annotations, and no output schema, the description is insufficient. It doesn't explain what the operation demonstrates, what progress updates look like, or what the expected outcome is. For a tool with behavioral implications, 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 already fully documents both parameters (duration and steps). The description adds no additional meaning about parameters beyond what the schema provides. According to guidelines, baseline is 3 when schema coverage is high (>80%) and no param info is in description.
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 states the tool 'demonstrates a long running operation with progress updates', which provides a vague purpose. It specifies the verb 'demonstrates' and resource 'operation', but lacks specificity about what the operation actually does or its domain context. It doesn't distinguish from sibling tools like 'add', 'echo', or 'sampleLLM' which have different functions.
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 any specific scenarios, prerequisites, or exclusions. Given the sibling tools include various utilities, there's no indication whether this is for testing, simulation, or actual processing, leaving the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printEnvA
Prints all environment variables, helpful for debugging MCP server configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 the tool 'prints' (implying read-only output) and mentions its debugging purpose, which is helpful context. However, it doesn't describe the output format, whether sensitive data might be exposed, or any rate limits - leaving some behavioral aspects unclear.
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 perfectly concise - a single sentence that front-loads the core functionality ('Prints all environment variables') followed by the specific use case. Every word earns its place with no redundancy or 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?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description provides adequate but minimal information. It explains what the tool does and its primary use case, but doesn't describe the output format or any behavioral constraints. For such a simple tool, this is acceptable but not comprehensive.
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 tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. A baseline of 4 is appropriate for zero-parameter tools when the description doesn't attempt to discuss non-existent parameters.
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 specific action ('Prints all environment variables') and the resource being acted upon ('environment variables'). It also distinguishes this tool's purpose from sibling tools by specifying its debugging use case for MCP server configuration, which is unique among the listed siblings.
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 explicitly states when to use this tool ('helpful for debugging MCP server configuration'), providing clear context for its application. However, it doesn't specify when NOT to use it or name alternative tools for similar purposes, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sampleLLMC
Samples from an LLM using MCP's sampling feature
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The prompt to send to the LLM | |
| maxTokens | No | Maximum number of tokens to generate |
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 mentions 'sampling' but does not disclose behavioral traits such as whether this is a read-only or mutative operation, potential rate limits, authentication needs, or what the output format looks like. The description is minimal and lacks critical 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 a single, efficient sentence with no wasted words. It is appropriately sized for the tool's complexity, though it could be more front-loaded with key details to improve clarity.
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 output schema, the description is incomplete. It does not explain what 'sampling' returns, how results are formatted, or any error conditions, leaving significant gaps for an LLM interaction tool with two parameters.
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 two parameters ('prompt' and 'maxTokens'). The description adds no additional meaning beyond what the schema provides, such as examples or constraints, 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 states the action ('Samples from an LLM') but is vague about the specific mechanism ('using MCP's sampling feature') without explaining what sampling entails. It distinguishes from siblings like 'echo' or 'printEnv' by involving LLM interaction, but lacks specificity about the resource or output 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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context, or exclusions, leaving the agent to infer usage based on the tool name alone among siblings like 'annotatedMessage' or 'structuredContent'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
structuredContentC
Returns structured content along with an output schema for client data validation
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | City name or zip code |
Output Schema
| Name | Required | Description |
|---|---|---|
| humidity | Yes | Humidity percentage |
| conditions | Yes | Weather conditions description |
| temperature | Yes | Temperature in celsius |
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 the tool returns content but doesn't describe any behavioral traits such as rate limits, authentication requirements, error conditions, or what happens when invalid input is provided. The mention of 'output schema for client data validation' suggests some validation behavior, but this is not elaborated.
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. It's appropriately sized for a simple tool with one parameter. However, it could be slightly more front-loaded by specifying what type of structured content is returned earlier in the description.
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 an output schema (which handles return value documentation), a simple input schema with 100% coverage, and no complex annotations, the description is reasonably complete. It covers the basic purpose and hints at validation use. The main gap is lack of specificity about what structured content is actually returned.
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%, with the single parameter 'location' clearly documented as 'City name or zip code.' The description adds no additional meaning beyond what the schema provides - it doesn't explain how the location parameter affects the returned content or provide examples. Baseline score of 3 is appropriate since 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 states the tool 'Returns structured content' which indicates a read operation, but it's vague about what specific content is returned. It mentions 'client data validation' but doesn't specify what kind of structured content (e.g., weather data, business listings, etc.). The purpose is clear enough to understand it's a retrieval tool but lacks specificity about the resource being accessed.
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 any sibling tools or specific contexts where this tool is preferred. The phrase 'for client data validation' hints at validation use cases, but this is too general to serve as practical guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zipB
Compresses the provided resource files (mapping of name to URI, which can be a data URI) to a zip file, which it returns as a data URI resource link.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Mapping of file names to URLs to include in the zip |
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 mentions the tool compresses files and returns a data URI, but lacks details on behavioral traits such as error handling (e.g., invalid URIs), performance (e.g., size limits), or side effects (e.g., network requests for URIs). This is inadequate for a tool that processes external resources.
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, well-structured sentence that efficiently conveys the tool's purpose, input, and output without unnecessary details. It is front-loaded with the core action and avoids redundancy, 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?
Given the complexity (processing multiple external files) and lack of annotations or output schema, the description is insufficient. It doesn't explain return values (e.g., structure of the data URI), error conditions, or limitations, leaving gaps for safe and effective tool invocation by an AI 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 fully documents the 'files' parameter as a mapping of file names to URLs. The description adds marginal value by specifying that URIs can be data URIs and clarifying the mapping purpose, but doesn't provide additional syntax or format details beyond what the schema already covers.
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 specific action ('compresses'), the resource ('provided resource files'), and the output ('to a zip file, which it returns as a data URI resource link'). It distinguishes itself from sibling tools like 'getResourceLinks' or 'getTinyImage' by focusing on compression rather than retrieval or image processing.
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., file availability), exclusions (e.g., unsupported file types), or compare it to sibling tools like 'add' or 'structuredContent' for handling multiple files. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- Removed
startElicitation - Added
zip
11 tool updates
- First observed
add - First observed
annotatedMessage - First observed
echo - First observed
getResourceLinks - First observed
getResourceReference - First observed
getTinyImage - First observed
longRunningOperation - First observed
printEnv - First observed
sampleLLM - First observed
startElicitation - First observed
structuredContent
TDQS
Multiple tools have overlapping or unclear purposes. For example, 'annotatedMessage', 'structuredContent', and 'getResourceLinks' all seem to demonstrate metadata or structured data features, making it difficult for an agent to choose between them. Similarly, 'echo' and 'printEnv' both serve debugging purposes, while 'add' and 'zip' are isolated utilities with no clear connection to the others.
The naming conventions are inconsistent and chaotic. There is a mix of styles: some tools use camelCase (e.g., 'annotatedMessage', 'getResourceLinks'), others use snake_case (e.g., 'longRunningOperation', 'printEnv'), and some are single words (e.g., 'add', 'echo', 'zip'). There is no discernible pattern, which makes the set harder to navigate and predict.
With 11 tools, the count is reasonable for a server, but it feels borderline due to the lack of a clear domain. The tools appear to be a miscellaneous collection of demonstrations and utilities rather than a cohesive set for a specific purpose, making the number seem slightly high for the apparent scope.
The server lacks a clear domain, making it difficult to assess completeness. However, based on the tool descriptions, it seems to be a demonstration server for MCP features. There are significant gaps: for example, if it's meant to showcase MCP capabilities, it might miss tools for other core features like streaming or error handling. The tools are fragmented and don't form a complete workflow or coverage of a specific area.
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
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA simple application demonstrating Model Context Protocol (MCP) integration with FastAPI and Streamlit, allowing users to interact with LLMs through a clean interface.3-
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server implementation that enables AI assistants to interact with Anytype's API through natural language, allowing users to manage their knowledge base through conversation.862514MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language interaction with FastAPI applications through Google's Gemini AI using MCP tools. Provides CRUD operations for user management and application health monitoring through conversational prompts.-
- AlicenseNot gradedqualityCmaintenanceComplete Model Context Protocol (MCP) server designed to facilitate seamless interaction between Large Language Models (LLMs) and end-users. It provides a robust set of tools for notifications, confirmations, selections, and text inputs, supporting multiple rendering modes including Console, GUI, and Telegram Bot.2MIT
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/epicweb-dev/epic-me-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server