strands-hub-mcp
Click on "Deploy 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., "@strands-hub-mcplist all agents"
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.
strands-hub-mcp
MCP server that exposes strands-hub data from S3:
Registry - list/update agents
Prompts - get/create prompt versions
Sessions - browse session data (read-only)
Metrics - query run metrics (read-only)
Prerequisites
Python 3.10+
AWS credentials configured (
~/.aws/credentialsor env vars)S3 bucket with strands-hub data
Related MCP server: s3-mcp
Claude Code Integration
claude mcp add strands-hub-mcp --scope user \
-e USE_S3=true \
-e AGENT_HUB_BUCKET=your-bucket-name \
-e AGENT_HUB_REGION=us-east-1 \
-- uv --directory /path/to/strands-hub-mcp run strands-hub-mcpVerify:
claude mcp listAvailable Tools
Tool | Description |
| Show current hub configuration |
| List all registered agents |
| Get agent details |
| Update agent metadata |
| Get current prompt for an agent |
| Get specific prompt version |
| List all prompt versions |
| Create new prompt version (append-only) |
| List metrics by date/agent |
| Get specific metrics record |
| List all sessions |
| Get session metadata |
| List agents in a session |
| Get agent data from session |
| List messages in a session |
| Get specific message |
Environment Variables
Variable | Required | Description |
| Yes | Must be |
| Yes | S3 bucket name |
| Yes | AWS region |
Author
Built by Du'An Lightfoot (@labeveryday)
Available Tools
17 toolshub_statusA
Return the effective hub configuration (sanitized) used by this server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does add meaningful qualifiers: the configuration returned is 'effective' (resolved) and 'sanitized' (redacted), which is useful. However, it does not explicitly state read-only behavior, failure modes, or what sanitization removes, so the disclosure is only moderately complete.
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, front-loaded sentence with no filler. It states the action and the key qualifiers ('effective', 'sanitized', 'used by this server') 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?
For a zero-parameter status tool with no output schema, the description is reasonably complete: it names what is returned, that it is sanitized, and that it is server-specific. It could say more about the response shape or what 'sanitized' entails, but the simple scope keeps the gap small.
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?
This tool has zero parameters and 100% schema coverage, so there is nothing for the description to explain about inputs. The baseline of 4 applies because parameter semantics are not relevant here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and a specific resource ('effective hub configuration (sanitized) used by this server'). It clearly distinguishes this from the sibling registry, prompts, metrics, and sessions tools, so an agent can tell what it does immediately.
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 about when to use this tool versus alternatives, nor any conditions or prerequisites. The sibling tools are unrelated enough that confusion is unlikely, but the description itself does nothing to establish usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metrics_getA
Fetch a metrics JSON object by S3 key.
| Name | Required | Description | Default |
|---|---|---|---|
| s3_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. 'Fetch' implies a read-only operation and 'JSON object' indicates the return type, but there is no mention of error behavior, authentication, or side effects. This is adequate for a simple getter but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler. The core action and resource are front-loaded, and every word contributes meaning.
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 one-parameter fetch tool, the description covers the essential action and return type, but with no output schema and no annotations, it lacks guidance on error cases, key sourcing, and alternatives. The presence of metrics_list as a sibling highlights the missing usage differentiation.
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. It does add meaning by clarifying that s3_key is used to fetch a metrics JSON object. However, it does not explain key format, required structure, or how the key relates to the metrics source beyond the name.
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 a specific action ('Fetch'), a specific resource ('metrics JSON object'), and the lookup mechanism ('by S3 key'). It clearly differentiates this from sibling tools like metrics_list, which presumably list metrics rather than fetch a single object.
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: use this tool when you have an S3 key and need the corresponding metrics JSON object. However, it does not explicitly contrast with metrics_list or other siblings, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metrics_listC
List metrics objects in S3.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| agent_id | No | ||
| date_prefix | No | ||
| continuation_token | No |
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 only reveals the storage backend (S3) and the list semantics, but says nothing about pagination behavior, default limit of 100, filtering effects, ordering, or return format.
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 single sentence is well-formed and front-loaded, but it is under-specified rather than efficiently concise. For a tool with four parameters including pagination and filters, the description is too thin to justify 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 four parameters, no annotations, and no output schema, the description should cover pagination, filter semantics, and return value shape. It covers none of these, leaving an agent without enough information to call the tool correctly on the first attempt.
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 effectively 0% (properties have only titles, no descriptions), so the description must compensate for the four parameters. It does not explain limit, agent_id, date_prefix, or continuation_token beyond what their names already hint at, and the S3 pagination semantics of continuation_token remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List metrics objects in S3') that clearly states the core operation. It does not explicitly differentiate from the sibling metrics_get, though 'list' versus 'get' is implied by the wording and tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus metrics_get, how pagination should be handled with continuation_token, or when filters like agent_id and date_prefix are appropriate. The usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompts_create_versionA
Create a new prompt version (append-only). Does NOT modify current.txt.
Fails if the version already exists.
Updates versions.json without changing its current pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| content | Yes | ||
| version | Yes | ||
| agent_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does substantial work: it discloses append-only semantics, non-modification of current.txt, failure on duplicate versions, and that versions.json is updated without changing its current pointer. It omits success return behavior and auth requirements, so a 5 is not warranted.
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 compact and front-loaded: the main action and scope appear in the first sentence, followed by two crisp bullet points that capture the key constraints. Every sentence earns its place with no filler or redundancy.
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?
Core behavior and the duplicate-version failure mode are well covered, but with no output schema and no parameter descriptions, an agent still lacks information about what a successful call returns and exactly how to supply the four arguments. The 0% schema coverage leaves necessary invocation details unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not compensate. None of agent_id, version, content, or note are explained in terms of format, purpose, or constraints; the only implicit hint is that 'version' refers to the prompt version being created, while agent_id and content are left entirely to inference.
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 opens with a specific verb and resource: 'Create a new prompt version (append-only)'. It also distinguishes the tool from read/update siblings by explicitly stating it does not modify current.txt and keeps versions.json's current pointer unchanged, so an agent can tell it apart from prompt-reading tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It is clear this tool is for the append-only creation of a version, and the 'Does NOT modify current.txt' statement is an explicit when-not condition. It does not name alternative sibling tools for updating or reading the current version, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompts_get_currentC
Get the current system prompt content for an agent (cached locally by strands-hub).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| force_refresh | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does disclose that the content is 'cached locally by strands-hub', which is a meaningful behavioral trait. However, it leaves force_refresh behavior, cache staleness, and remote-fetch-on-miss semantics unexplained.
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 front-loaded sentence with no wasted words. It is efficient, though the brevity comes at the cost of omitting important parameter and usage 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?
While the output schema removes the need to describe return values, the description remains incomplete for a tool with no annotations. It lacks usage guidance, force_refresh semantics, and cache behavior details. The description is minimal rather than sufficient.
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. It implicitly references agent_id via 'for an agent', but the force_refresh parameter is entirely undocumented in both the schema and description. This is a significant gap for a parameter that controls tool behavior.
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 a specific verb ('Get') and a clear resource ('current system prompt content for an agent'). The parenthetical about local caching adds useful specificity. It does not explicitly distinguish from sibling prompts_get_version, but 'current' vs 'version' provides an implicit 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 prompts_get_version or prompts_list_versions. There is no mention of freshness requirements, caching trade-offs, or when force_refresh should be used. An agent has no basis to select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompts_get_versionC
Get a specific system prompt version content for an agent.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | ||
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. The verb 'Get' implies a read-only operation, but nothing is said about error behavior, permissions, rate limits, or what happens when the requested version does not exist. The output schema covers return shape, but not behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the verb and resource with no filler. It is appropriately concise, though it achieves brevity at the expense of useful 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?
For a simple two-parameter getter with an output schema, the description is minimal but incomplete: it lacks parameter semantics, usage guidance to distinguish from sibling tools, and behavioral context. The output schema mitigates the return-value gap but not the other omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the tool description adds no parameter details. The parameter names 'agent_id' and 'version' are somewhat self-explanatory, but the format of 'version' (e.g., semver, ID, label) and the meaning/scope of 'agent_id' are left undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource: 'Get a specific system prompt version content for an agent.' The word 'specific' distinguishes it from prompts_get_current (current version) and prompts_list_versions (listing versions), though it does so implicitly rather than by naming alternatives.
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 its siblings. The distinction from prompts_get_current and prompts_list_versions is implied by the name and description but never stated, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompts_list_versionsB
List prompt versions for an agent from S3 (versions.json if present).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that data comes from S3 and that it relies on 'versions.json if present', which signals a potential absence condition. However, it does not say what happens when versions.json is missing, whether the operation is read-only, or what the response contains.
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, front-loaded sentence with no filler. Every word contributes: 'list' states the action, 'prompt versions for an agent' states the resource, and 'from S3 (versions.json if present)' adds relevant source 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?
The tool has only one parameter and is relatively simple, but with no annotations and no output schema, the description should clarify expected output and behavior in edge cases. It omits what occurs when versions.json is absent, what the return structure looks like, and how this tool relates to the sibling version/get/current tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented agent_id parameter. It only says 'for an agent', which adds little beyond the schema property name 'Agent Id'. It does not explain the expected format, how to find the agent_id, or any constraints.
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 the resource 'prompt versions for an agent', and adds the source 'from S3 (versions.json if present)'. It does not explicitly differentiate from sibling tools like prompts_get_version or prompts_get_current, but the plural 'versions' and 'list' make the core action clear.
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: use this tool when you need the list of prompt versions for an agent. However, it provides no explicit guidance about when to choose this over prompts_get_version, prompts_get_current, or prompts_create_version, and names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_get_agentB
Get a single agent registry entry.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Get' clearly signals a non-destructive read returning one entry, but the description does not address edge behavior such as what happens when the agent_id does not exist or whether the full entry is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single six-word sentence with no filler; the verb and object are front-loaded and 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?
The tool is simple (one required parameter, output schema present), so the description is nearly sufficient for correct invocation. It lacks any mention of when to prefer this over registry_list_agents and any error/edge-case behavior, which is a clear gap for an operation with zero annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not compensate: it never explains agent_id format, provenance, or how it is used. The only implicit meaning is that agent_id identifies the registry entry, which is already evident from the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('a single agent registry entry'), clearly identifying the operation. The word 'single' implicitly distinguishes it from the sibling registry_list_agents, though it does not explicitly name the alternative.
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 explicit when-to-use or alternative guidance. The phrase 'a single... entry' implies it is for fetching one specific registry entry by ID rather than listing all, but no condition or alternative tool is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_list_agentsA
List registered agents (optionally filtered by tag).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly indicates a read-only list operation with optional filtering, but does not disclose details like tag matching semantics, pagination, ordering, or behavior when no tag is provided.
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, front-loaded sentence with no filler. Every word contributes meaning, and the optional filter is cleanly integrated as a parenthetical.
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?
This is a simple listing tool with one optional parameter and an output schema available, so the description covers most operational needs. It would benefit from explicit guidance on tag matching or alternatives, but the lack is minor given the low complexity and existing 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?
The schema only defines the tag parameter as a nullable string with a default of null. The description adds meaning by stating the tag is used for filtering, which is essential functional context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List') and resource ('registered agents'), and notes the optional tag filter. This clearly distinguishes it from sibling tools like registry_get_agent (single fetch) and sessions_list_agents (session-scoped agents).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it: when you need to enumerate registered agents or filter them by tag. However, it does not explicitly mention alternatives or when not to use this tool, so guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_update_metadataB
Update allowlisted metadata fields for an existing agent.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| owner | No | ||
| agent_id | Yes | ||
| model_id | No | ||
| repo_url | No | ||
| description | No | ||
| environment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It communicates that this is an update operation and mentions 'allowlisted' as a restriction, but it does not say whether updates merge or replace fields, what happens to unmentioned metadata, what permissions are needed, or whether the operation is reversible.
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, focused sentence with no filler. The action verb is front-loaded, and every word contributes to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool has seven parameters, none described in the schema, and no annotations. The description is too sparse to fully inform an agent about field semantics, the meaning of 'allowlisted', or update behavior, leaving significant gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only vaguely refers to 'allowlisted metadata fields' and 'existing agent'. It does not explain the meaning or allowed values of tags, owner, model_id, repo_url, description, or environment, though it does at least signal that agent_id identifies an existing agent.
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 a specific action (update) on a specific resource (allowlisted metadata fields for an existing agent). It is distinguishable from the sibling tools, which are mostly read/status/session/prompt/metric operations.
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 gives no guidance on when to use this tool versus alternatives such as registry_get_agent or registry_list_agents. It implies an existing agent must be targeted but does not explain prerequisites, sequencing, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_get_agent_jsonB
Fetch and parse sessions/<session_id>/agents/<agent_id>/agent.json.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | agent_default | |
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility for behavioral disclosure. It only states 'Fetch and parse', implying a read operation, but does not mention error behavior, authentication needs, whether the file must exist, or what the parsed output looks like. Significant behavioral aspects are left undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and the exact resource path. No filler or redundant content, so it is optimally concise for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool with only two parameters, the description is minimally adequate. However, the absence of annotations, output schema, and any explanation of return value or failure modes leaves gaps that a more complete description could fill.
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%, but the path template in the description clarifies that session_id and agent_id are path segments. This adds some meaning beyond the bare schema, though it does not explain their semantics, formats, or constraints beyond that usage.
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 a specific verb (Fetch and parse) and a specific resource (sessions/<session_id>/agents/<agent_id>/agent.json). The file path makes the tool's operation unambiguous and distinguishes it from siblings like sessions_get_session_json and sessions_get_raw.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as registry_get_agent or sessions_list_agents. The purpose is stated, but the description does not mention context, prerequisites, or when another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_get_message_jsonC
Fetch and parse a message JSON object.
message_key may be either a basename like message_0.json or a full S3 key.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | agent_default | |
| session_id | Yes | ||
| message_key | Yes |
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 fetching and parsing, but does not disclose return shape, error behavior, permissions, or side effects. This is a notable gap for a tool with zero annotation support.
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 compact and front-loaded: the core action appears first, followed by a single useful parameter clarification. Every sentence earns its place with no redundancy.
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 absence of annotations and output schema, the description leaves important context undeclared: expected return value, failure modes, and how this tool relates to sibling getters. It is adequate for a simple call but not complete enough for reliable autonomous selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable meaning for message_key by clarifying it can be a basename or full S3 key. However, session_id and agent_id remain explained only by their names, and with 0% schema description coverage, the description does not compensate enough for the missing parameter details.
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 a clear verb ('Fetch and parse') and a specific resource ('message JSON object'), which identifies what the tool operates on. It doesn't explicitly contrast with sibling tools, but the resource type is specific enough to distinguish it from sessions_get_session_json or sessions_get_agent_json.
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 like sessions_get_raw or sessions_list_messages. The only usage-related hint is the message_key format, which is parameter guidance rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_get_rawA
Fetch a session object by S3 key and return parsed JSON when possible.
This is intentionally "raw" because session format is owned by strands-agents.
| Name | Required | Description | Default |
|---|---|---|---|
| s3_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It does usefully disclose that the result is parsed JSON 'when possible' and intentionally raw, but it does not explain fallback behavior, error cases, authentication needs, or what happens when parsing is not possible.
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 two sentences with no redundant wording. The core action is front-loaded, and the second sentence adds relevant context about why the tool is intentionally raw.
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 single-parameter read tool, the description covers the basic call pattern, but lacks guidance on fallback behavior when parsing fails and does not clarify the output shape. Given no annotations or output schema, a bit more detail would make it fully complete.
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. It adds some meaning by clarifying that s3_key identifies a session object, but it does not describe the expected key format, how to obtain it, or any constraints.
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 a specific action ('Fetch a session object by S3 key') and a resource. The 'raw' qualifier and the explanation that the format is owned by 'strands-agents' help set it apart from potential processed/session variants, though no sibling is explicitly named.
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 this tool is for callers who want the unprocessed session object, but it does not explicitly state when to use it versus alternative tools or when not to use it. No alternatives are named, so usage guidance is left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_get_session_jsonA
Fetch and parse sessions/<session_id>/session.json.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. 'Fetch and parse' reveals it is a read operation that returns parsed JSON content, but it doesn't mention failure behavior or edge cases. For a simple read-only fetch tool this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that fully states the operation and resource in compact form. Every word earns its place, with the core action front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter fetch-and-parse tool, the description covers the essential behavior and parameter usage. It lacks sibling differentiation, but nothing critical is missing for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description shows how `session_id` is used by embedding it in the resource path. This adds meaning beyond the schema's bare 'Session Id' label, effectively documenting the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Fetch and parse') and a precise resource path (`sessions/<session_id>/session.json`), making the tool's purpose clear. It doesn't explicitly differentiate from the sibling `sessions_get_agent_json`, but the resource path leaves little 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?
No guidance is given on when to use this tool versus alternatives such as `sessions_get_agent_json`. The agent must infer usage from the name and path alone, which is minimal support for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_listC
List session IDs (prefixes) under sessions/.
Uses S3 CommonPrefixes (Delimiter="/") so it matches aws s3 ls s3://.../sessions/.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| continuation_token | No |
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 usefully reveals that the tool uses S3 CommonPrefixes with Delimiter='/', which means it only lists immediate prefixes and matches the behavior of 'aws s3 ls'. However, it does not disclose pagination behavior, output format, or whether any filtering is applied beyond the prefix.
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?
Two sentences with no filler. The primary purpose is front-loaded, and the second sentence adds a valuable implementation clarifier. 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?
The description covers the core behavior sufficiently for a simple listing operation: it states the target path and the type of items returned. However, with no annotations and no output schema, it omits details about pagination and response structure. The tool is simple, but the same could be said of analogous list tools that still explain continuation tokens.
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% for parameters, so the description is expected to compensate. It does not mention 'limit' or 'continuation_token' at all, nor does it explain their meaning or interaction. The parameter names and defaults are self-evident, but no semantic enrichment is provided.
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 a clear verb-resource pair: 'List session IDs (prefixes) under sessions/.' It clarifies the tool returns prefixes, not full objects or other entity types. However, it does not explicitly contrast itself with sibling tools such as sessions_list_messages or sessions_list_agents, so it falls just short of perfect 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?
There is no guidance on when to use this tool versus alternatives. The description provides an implementation analogy to 'aws s3 ls' but never says when this tool is preferred or when another sibling should be chosen. Usage context is only barely implied by the action word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_list_agentsB
List agent IDs under sessions/<session_id>/agents/.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| session_id | Yes | ||
| continuation_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, yet it only says 'List', which implies a read operation. It does not disclose pagination behavior (continuation_token), default limits, or what happens when a session doesn't exist, leaving important behavioral traits unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a code-formatted path; efficient and front-loaded with the resource scope. It is appropriately sized, though it could add pagination context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It omits pagination semantics, error behavior, and how this relates to sibling agent-retrieval tools, leaving an agent to guess at invocation details beyond session_id.
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. It ties session_id to the URL path but says nothing about limit or continuation_token, leaving two of three parameters semantically unexplained. The description only partially covers what the schema lacks.
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 a specific verb ('List'), a precise resource ('agent IDs'), and an explicit scoped path (`sessions/<session_id>/agents/`). This clearly distinguishes it from siblings like registry_list_agents (registry-scoped) and sessions_list (session list), so an agent can disambiguate without opening schemas.
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?
Usage context is implied by the path structure: use this when you need agent IDs inside a specific session. However, there is no explicit when-to-use, when-not-to-use, or mention of alternatives such as sessions_get_agent_json for full agent objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_list_messagesB
List message keys under sessions/<session_id>/agents/<agent_id>/messages/.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| agent_id | No | agent_default | |
| session_id | Yes | ||
| continuation_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that the result is message keys rather than full message content, and scopes the operation under a session/agent path. However, it omits pagination, ordering, and the role of continuation_token.
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 compact sentence with no filler. It front-loads the operation and the exact resource location, 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?
For a tool with no output schema and no annotations, the description is too sparse. It does not explain how to page through results, what limit controls, or when to use this over sibling getter tools, so the agent only understands the basic first call.
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. It explains session_id and agent_id through the path template, but says nothing about limit or continuation_token, leaving significant pagination semantics to be guessed from parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('message keys') and gives an explicit path template. This clearly distinguishes it from siblings like sessions_get_message_json or sessions_get_raw, even without naming them.
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 sibling tools, nor any mention of use cases, exclusions, or preferred alternatives. The path and verb imply usage indirectly, but nothing is 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.
17 tool updates
v0.1.0- First observed
hub_status - First observed
metrics_get - First observed
metrics_list - First observed
prompts_create_version - First observed
prompts_get_current - First observed
prompts_get_version - First observed
prompts_list_versions - First observed
registry_get_agent - First observed
registry_list_agents - First observed
registry_update_metadata - First observed
sessions_get_agent_json - First observed
sessions_get_message_json - First observed
sessions_get_raw - First observed
sessions_get_session_json - First observed
sessions_list - First observed
sessions_list_agents - First observed
sessions_list_messages
TDQS
Scored across 17 tools
Most tools map to distinct resources and actions, with clear domain prefixes (registry, prompts, metrics, sessions). However, sessions_get_session_json and sessions_get_raw both fetch session data and could be confused, as could registry_get_agent vs sessions_get_agent_json despite their different contexts.
Naming follows a consistent <domain>_<verb>_<object> pattern for nearly all tools, such as registry_list_agents and sessions_get_message_json. The main deviation is hub_status, which lacks a verb unlike the rest, and sessions_get_raw uses an adjective instead of a specific object.
17 tools is slightly above the typical well-scoped range, but the count is justified by the five distinct domains and the deep session hierarchy. Each tool serves a specific retrieval task, making the count reasonable rather than bloated.
The read-focused surface is fairly complete for inspection: sessions are traversable from ID down to message content, prompts have version listing/creation, and metrics are accessible. Minor gaps include no delete/create in the registry and no write operations for sessions, but these may be intentionally outside the server's scope.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceMCP server that exposes Sceptre CloudFormation management operations as tools for AI agents.Apache 2.0- AlicenseNot gradedqualityDmaintenanceMCP server for AWS S3 and compatible object stores, enabling LLM clients to browse buckets and fetch objects.MIT No Attribution

AgentMark MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceMCP server for AgentMark. Exposes the full AgentMark API to AI editors: list traces and spans, manage datasets, write scores, run experiments, manage apps, deployments, environments, and annotation queues.352AGPL 3.0- AlicenseAqualityAmaintenanceMCP server that exposes a pool of Claude SDK agents as tools, enabling deterministic agent creation, retrieval, and resumption from a capability corpus.101MIT