readonly-mcp-akamai
Provides read-only access to Akamai CDN resources, including property configurations, DNS zones, EdgeWorkers, network lists, and error code translation.
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., "@readonly-mcp-akamaiFind the CDN property for api.example.com and show its caching rules"
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.
readonly-mcp-akamai
Read-only MCP server for Akamai CDN. Search properties, browse EdgeWorker code, query DNS zones, inspect network lists, and translate error codes.
Read-only by design. This server can only read data. It cannot create, modify, delete, activate, deactivate, or purge anything. See blog.wentland.io for the rationale.
Tools
Properties (CDN configurations)
Tool | Description |
| Fuzzy search CDN properties by name. Uses a preloaded in-memory index refreshed every 5 minutes. |
| Get property versions, hostnames, and activation status. |
| Get the rule tree for a property version — the full CDN configuration. |
| List deployment history for a property. |
DNS
Tool | Description |
| List all DNS zones, optionally filtered by name or type. |
| Search DNS records within a zone by name or record type. |
EdgeWorkers (serverless functions)
Tool | Description |
| List all EdgeWorker IDs with names and descriptions. |
| List versions for an EdgeWorker. |
| Download a version's code bundle and list all files. Cached in memory. |
| Read a specific file from a cached bundle with line-range support. |
| Regex search across all files in a cached bundle. |
Network Lists
Tool | Description |
| Search network lists (IP allowlists, blocklists, geo lists) by name. |
| Get the full contents of a network list. |
Utility
Tool | Description |
| List account groups in the Akamai hierarchy. |
| List CP codes (billing/reporting identifiers) for a contract and group. |
| Translate Akamai reference error codes to human-readable descriptions. |
Related MCP server: nautobot-mcp
Install
# With uv (recommended)
uv pip install readonly-mcp-akamai
# With pip
pip install readonly-mcp-akamaiDocker
docker run -e AKAMAI_HOST=... -e AKAMAI_CLIENT_TOKEN=... \
-e AKAMAI_CLIENT_SECRET=... -e AKAMAI_ACCESS_TOKEN=... \
ghcr.io/desty2k/readonly-mcp-akamaiConfiguration
All settings are via environment variables with the AKAMAI_ prefix.
Variable | Required | Default | Description |
| Yes | — | Akamai API hostname (e.g., |
| Yes | — | EdgeGrid client token |
| Yes | — | EdgeGrid client secret |
| Yes | — | EdgeGrid access token |
| No |
| Transport: |
| No |
| Port for HTTP/SSE transport |
| No |
| Log format: |
| No |
| Log level: |
| No |
| Property index refresh interval in seconds |
Get credentials from Akamai Control Center > Identity & Access Management > API Clients.
MCP client configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"akamai": {
"command": "readonly-mcp-akamai",
"env": {
"AKAMAI_HOST": "akab-xxxx.luna.akamaiapis.net",
"AKAMAI_CLIENT_TOKEN": "akab-xxxx",
"AKAMAI_CLIENT_SECRET": "xxxx",
"AKAMAI_ACCESS_TOKEN": "akab-xxxx"
}
}
}
}Claude Code
claude mcp add akamai -- readonly-mcp-akamaiSet the AKAMAI_* environment variables before starting Claude Code.
Example questions
An agent with this server can answer:
"Find the CDN property for api.example.com and show me its caching rules"
"What version is currently deployed to production for the main website?"
"Show me all DNS records for example.com"
"What EdgeWorkers are configured? Show me the code for the request router"
"Search for all uses of
setResponseHeaderin EdgeWorker 42""What IPs are in the blocklist network list?"
"Translate this Akamai error: 9.6f64d440.1318965461.2f2b078"
"List all CP codes for the main contract"
Development
# Clone
git clone https://github.com/desty2k/readonly-mcp-akamai.git
cd readonly-mcp-akamai
# Install with dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest --cov
# Lint
ruff check .
ruff format --check .License
MIT
Available Tools
16 toolsget_edgeworker_fileA
Read a file from an EdgeWorker code bundle. Returns numbered source lines.
Example questions:
"Show me main.js from EdgeWorker 42 v1.0"
"Read lines 50-100 of the request handler"
| Name | Required | Description | Default |
|---|---|---|---|
| edgeworker_id | Yes | EdgeWorker ID (numeric) | |
| version | Yes | Version identifier (e.g., '1.0') | |
| path | Yes | File path within the bundle (e.g., 'main.js') | |
| start_line | No | First line to read (1-based, inclusive) | |
| end_line | No | Last line to read (1-based, inclusive). Omit to read to end. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states 'Read' (idempotent read) and 'Returns numbered source lines', but lacks details on error handling, auth, or side effects. Adequate for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one sentence stating purpose, one sentence on output format, and two example questions. Front-loaded with key information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and tool is simple, description covers core behavior and example scenarios. Minor missing context about EdgeWorker concepts, but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description provides example usage but does not add semantic meaning beyond what the schema descriptions already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Read a file from an EdgeWorker code bundle' with specific verb and resource. Examples illustrate usage, distinguishing from sibling tools like get_edgeworker_files (lists files) and search_edgeworker_code (searches across files).
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?
Examples imply when to use (reading a specific file), but no explicit guidance on when not to use or alternatives. The context of siblings is present but description does not refer to them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_edgeworker_filesA
List files in an EdgeWorker version's code bundle. Returns file paths, sizes, and line counts.
Example questions:
"What files are in EdgeWorker 42 version 1.0?"
"Show me the file listing for this EdgeWorker"
| Name | Required | Description | Default |
|---|---|---|---|
| edgeworker_id | Yes | EdgeWorker ID (numeric) | |
| version | Yes | Version identifier (e.g., '1.0') |
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 partly compensates by listing return fields (paths, sizes, line counts) but omits format, pagination, authentication needs, or rate limits.
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 concise and front-loaded with the purpose, followed by return fields and examples. Every sentence adds value without 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 output schema exists and the tool is simple (2 required params), the description covers the main functionality. Lacks mention of prerequisites or comparison to 'get_edgeworker_file' but is otherwise 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 coverage is 100%; both parameters are described in the schema. The description adds no further parameter details beyond what's already in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists files in an EdgeWorker version's code bundle, specifying return fields (file paths, sizes, line counts). It is distinct from the sibling 'get_edgeworker_file' which retrieves a single file.
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?
Example questions give context such as 'What files are in EdgeWorker 42 version 1.0?', implying use for listing. However, no explicit guidance on when not to use or alternatives is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_listA
Get the full contents of a network list. Returns metadata and every IP, CIDR, or country code entry.
Example questions:
"What IPs are in the blocklist?"
"Show all entries in network list 12345_ALLOWLIST"
"Which countries are in the geo restriction list?"
| Name | Required | Description | Default |
|---|---|---|---|
| unique_id | Yes | Network list unique ID (e.g., 12345_BLOCKLIST) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It states the tool returns metadata and entries, but lacks details on pagination, size limits, or authorization requirements, which may affect agent use for large lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one clear sentence followed by relevant example questions. No unnecessary words, and the structure is well-suited for quick agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description is nearly complete. It explains what is returned (metadata and entries). A minor gap is the lack of mention that the output schema provides the structure, but overall 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?
The schema provides 100% coverage for the unique_id parameter with a description. The tool description adds context by explaining the parameter's role in identifying the network list and giving example formats (e.g., 12345_BLOCKLIST), enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full contents of a network list, including metadata and entries (IP, CIDR, country code), distinguishing it from sibling tool 'search_network_lists' which likely searches for lists.
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?
Example questions provide clear use cases (e.g., 'What IPs are in the blocklist?'), but there is no explicit guidance on when not to use this tool or mention of alternatives beyond implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_activationsA
Get activation history for a property. Returns which versions were deployed to staging and production, when, and by whom.
Example questions:
"When was the last production deployment for this property?"
"Who activated version 12?"
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes | Akamai property ID (e.g., prp_12345) | |
| contract_id | Yes | Contract ID (e.g., ctr_1-AB123) | |
| group_id | Yes | Group ID (e.g., grp_12345) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return data but omits behavioral details like read-only nature, error handling, or rate limits. Since no annotations are provided, the description carries the full burden; it implies a read operation but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences followed by two example questions. Every sentence adds value without 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 tool's simplicity (retrieving activation history), the description covers the purpose and output adequately. Output schema presence further reduces the need for detailing return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description adds no extra parameter meaning beyond the schema, which is adequate but not improved.
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?
Clearly states it gets activation history for a property, specifying the returned data (versions, staging/production, timestamps, who). Differentiates from sibling tools which cover different domains like edgeworkers or network lists.
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?
Provides example questions that illustrate when to use, such as checking last production deployment or activation version. Does not explicitly mention when not to use or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_detailsA
Get property versions, hostnames, and activation status for staging and production networks.
Example questions:
"What version is deployed to production for this property?"
"What hostnames does this property serve?"
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes | Akamai property ID (e.g., prp_12345) | |
| contract_id | Yes | Contract ID (e.g., ctr_1-AB123) | |
| group_id | Yes | Group ID (e.g., grp_12345) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies read-only behavior (get) and describes the data returned, but does not disclose side effects, authentication requirements, rate limits, or error scenarios. Adequate but not comprehensive.
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 concise: two sentences plus two example questions. Every word adds value, and it is front-loaded with the core purpose. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with three well-documented parameters and an output schema, the description covers the key outputs. It could be improved by noting any error conditions or permissions, but it is largely 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 coverage is 100% with descriptions for each parameter. The description does not add additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves property versions, hostnames, and activation status for staging and production networks. It uses a specific verb and resource, and the purpose distinguishes it from sibling tools like get_property_activations which focuses only on activations.
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?
Example questions illustrate use cases, but there is no explicit guidance on when to use this tool versus alternatives like get_property_rules or get_property_activations. The description does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_rulesA
Get the rule tree for a property version. Returns the CDN configuration as nested rules with match criteria and behaviors: caching, origin settings, headers, redirects, and edge logic.
Example questions:
"What caching rules are set for this property?"
"Show me the origin configuration"
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes | Akamai property ID (e.g., prp_12345) | |
| version | Yes | Property version number | |
| contract_id | Yes | Contract ID (e.g., ctr_1-AB123) | |
| group_id | Yes | Group ID (e.g., grp_12345) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It describes the return type (nested rules with specific behaviors) but does not disclose non-obvious behaviors like access permissions, rate limits, or data freshness. It implies a read operation, which is adequate.
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 plus example questions, all front-loaded and concise. Every sentence adds value, with no repetition or filler.
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 of returning a rule tree and the presence of an output schema (not shown), the description adequately covers the return types and provides example questions for context. It could mention preconditions or access requirements but is sufficient for most use cases.
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 clear examples in the schema. The description adds no further parameter information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Get' and resource 'rule tree for a property version', listing the types of returned behaviors (caching, origin settings, etc.), which distinguishes it from sibling tools like get_property_details and get_property_activations.
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 example questions that imply usage, but no explicit guidance on when to use this tool versus alternatives or any when-not conditions. Given the number of siblings, more explicit direction would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cp_codesA
List CP codes for a contract and group. CP codes are numeric identifiers used for billing, reporting, and content segmentation.
Example questions:
"What CP codes are available for this contract?"
"Find the CP code for the main website"
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes | Contract ID (e.g., ctr_1-AB123) | |
| group_id | Yes | Group ID (e.g., grp_12345) |
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 must disclose behavioral traits like read-only nature or authentication requirements. It only states it 'lists' CP codes, implying a read operation, but lacks further behavioral context such as rate limits or output details.
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 short (two sentences plus example questions) and front-loaded with the core purpose. Every part is useful, though the example questions could be considered slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required parameters (both documented in schema) and an output schema, the description is adequate. However, the lack of behavioral transparency (no annotations) reduces completeness for an agent needing to understand side effects or constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described in the schema. The description does not add additional meaning beyond the schema, such as format or examples, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the tool lists CP codes for a contract and group, defines CP codes as numeric identifiers, and differentiates from sibling tools which cover other domains like edgeworkers, DNS zones, etc.
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 includes example questions that illustrate when to use the tool (e.g., 'What CP codes are available for this contract?'), but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_zonesA
List DNS zones. Returns zone names, types, and activation state.
Example questions:
"What DNS zones are managed in Akamai?"
"Find the DNS zone for example.com"
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Filter zone names by substring | |
| zone_type | No | Filter by zone type |
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 must convey behavioral traits. It states the output fields but omits details on safety (e.g., read-only), pagination, or error handling. The minimal disclosure is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences plus examples, with no redundant information. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, output schema exists), the description is largely complete. It could mention that the response includes all zones if no filters, but the examples imply this. The presence of an output schema reduces the need for return value details.
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, so the baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions for 'search' and 'zone_type'.
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 lists DNS zones and specifies returned fields (names, types, activation state). The examples further clarify the purpose and distinguish from sibling tools like search_dns_records.
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 and examples implicitly indicate when to use this tool (listing zones). However, it does not explicitly mention when to avoid using it or provide alternatives, such as searching DNS records via search_dns_records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_edgeworkersA
List all EdgeWorkers with names and group associations.
Example questions:
"What EdgeWorkers are configured?"
"Find the EdgeWorker for request routing"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'list,' implying read-only behavior, and mentions the data included (names and group associations). However, with no annotations provided, it does not explicitly confirm safety or detail any side effects, though none are expected for a listing operation. The behavior is adequately conveyed.
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 concise—one sentence and two example questions. It is front-loaded with the core purpose, and the examples are helpful but not overly verbose. This strikes a good balance for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the existence of an output schema, the description covers the essential behavior: listing all EdgeWorkers with names and group associations. The sibling list shows other list tools, but this one is distinct enough. No additional context is needed for a simple, stateless operation.
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 schema coverage is 100% (vacuously). According to the rules, the baseline is 4, and the description adds no parameter information because none are needed. No improvement necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all EdgeWorkers with names and group associations,' specifying the verb (list) and resource (EdgeWorkers) along with included details. This distinguishes it from sibling tools like get_edgeworker_file or list_edgeworker_versions, which focus on different aspects.
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 example questions like 'What EdgeWorkers are configured?' and 'Find the EdgeWorker for request routing,' which effectively indicate when to use this tool. While it lacks explicit exclusion of other tools or scenarios, the examples are clear for a simple listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_edgeworker_versionsA
List versions for an EdgeWorker. Returns version identifiers, creation dates, and checksums.
Example questions:
"What versions exist for EdgeWorker 42?"
"When was the latest version created?"
| Name | Required | Description | Default |
|---|---|---|---|
| edgeworker_id | Yes | EdgeWorker ID (numeric) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description indicates a read-only operation (returns version info) with no side effects mentioned. Adequate for a simple list tool, but lacks details on permissions or pagination.
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?
Concise description: two sentences plus example questions, front-loaded with purpose. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description covers core functionality and return data. Minor omission of pagination or ordering is acceptable for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions; description adds minimal value beyond examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists versions for an EdgeWorker and specifies the returned data (identifiers, dates, checksums). It is distinct from sibling tools like list_edgeworkers which lists edgeworkers themselves.
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?
Example questions illustrate when to use (e.g., 'What versions exist for EdgeWorker 42?') but no explicit guidance on when not to use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsA
List account groups in the Akamai hierarchy. Returns group names, IDs, parent relationships, and associated contract IDs.
Example questions:
"What groups exist in the Akamai account?"
"Show me the account structure"
"Which contracts are associated with each group?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not mention behavioral aspects such as idempotency, side effects, rate limits, or authentication requirements. For a read-only list tool, some transparency about safety (e.g., 'this is a read-only operation') would be helpful.
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: two sentences plus example questions. Every part adds value without 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?
The description covers the essential output fields for a simple list tool. Since an output schema exists, the agent can infer exact structure. No filtering or pagination info is needed for a basic list-all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description does not need to explain them. Baseline for 0 parameters is 4. The description adds value by detailing what the response contains (group names, IDs, etc.).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List account groups in the Akamai hierarchy' and specifies returned fields (names, IDs, parent relationships, contract IDs). It is distinct from siblings which target different resources like edgeworkers or DNS zones.
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?
Example questions provide clear usage context ('What groups exist?'). Although not explicitly stating when not to use, the list of siblings shows that other tools serve different purposes, so confusion is unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dns_recordsA
Get DNS records for a zone. Returns record names, types, TTLs, and values.
Example questions:
"What DNS records exist for example.com?"
"Find all CNAME records in the example.com zone"
| Name | Required | Description | Default |
|---|---|---|---|
| zone | Yes | DNS zone name (e.g., example.com) | |
| search | No | Filter by record name | |
| record_type | No | Filter by record type: A, AAAA, CNAME, MX, TXT, etc. |
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 full burden. It indicates it is a read operation returning DNS record fields, but lacks details on performance, authentication, or any limitations. 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?
Description is brief (two sentences plus examples), front-loaded with purpose, and contains no extraneous content. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context signal), description does not need to detail return values. Parameters are well-documented in schema. The description is sufficient for understanding the tool's function and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions (zone, search, record_type). The description adds no extra parameter semantics beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get DNS records for a zone' with specific verb and resource, and enumerates returned fields (names, types, TTLs, values). It is distinct from sibling tools like list_dns_zones which list zones rather than records.
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?
Example questions illustrate appropriate use cases (e.g., 'What DNS records exist for example.com?'). No explicit when-not-to-use or alternative tools mentioned, but examples provide implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_edgeworker_codeA
Search across all files in an EdgeWorker code bundle using a regex pattern. Returns matching file paths, line numbers, and content.
Example questions:
"Find all uses of 'setResponseHeader' in this EdgeWorker"
"Search for error handling patterns"
| Name | Required | Description | Default |
|---|---|---|---|
| edgeworker_id | Yes | EdgeWorker ID (numeric) | |
| version | Yes | Version identifier (e.g., '1.0') | |
| pattern | Yes | Regex pattern to search for (case-insensitive) | |
| max_results | No | Maximum number of matches to return |
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 bears full burden. It states the tool returns matching file paths, line numbers, and content, but does not disclose behavioral traits such as result limits (max_results), case insensitivity (mentioned in schema but not description), or potential performance impacts.
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 concise with two short paragraphs and example questions. The first sentence front-loads the core purpose, and every element adds value without unnecessary verbosity.
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 existence of an output schema, the description adequately explains the tool's operation and return types (paths, line numbers, content). It covers the essential use case but could mention the scope 'across all files' more explicitly.
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% coverage with descriptions for all four parameters. The description adds no additional parameter information beyond mentioning 'regex pattern'. Baseline score of 3 is appropriate as the description does not extend the schema's context.
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 searches across all files in an EdgeWorker code bundle using a regex pattern. It specifies the verb 'search' and resource 'EdgeWorker code bundle files', and distinguishes from siblings that operate on other resources or entire files.
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 example questions that imply use cases like finding specific code patterns, but it does not explicitly state when to use this tool versus alternatives (e.g., get_edgeworker_file for retrieving entire files) or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_network_listsA
Search network lists by name. Network lists are collections of IP addresses, CIDR blocks, or country codes used for access control.
Example questions:
"What network lists are configured?"
"Find the blocklist for bad IPs"
"Are there any geo-restriction lists?"
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Filter by network list name | |
| list_type | No | Filter by type |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description does not disclose side effects, safety (read-only implied but not stated), pagination, limits, or authentication requirements. The description solely explains functionality without behavioral 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?
Two sentences plus example questions. Efficient but example list could be shortened or integrated. No verbose repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (2 optional params, output schema present), description is fairly complete. Explains resource purpose and provides examples. Lacks mention of default behavior or ordering, but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds context about network lists (IPs, CIDRs, countries) but does not clarify search semantics (e.g., exact match vs. substring). No enrichment beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'search' and resource 'network lists', with examples covering both list-all and filter-by-type scenarios. Differentiates from sibling 'get_network_list' by implying search/filter vs. single retrieval.
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?
Example questions imply usage scenarios, but no explicit guidance on when to use this tool versus siblings like get_network_list or search_properties. Could be improved by contrasting with related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_propertiesA
Search CDN properties by name. Returns matching properties with version numbers, staging/production versions, and group/contract IDs.
Example questions:
"Find the CDN config for example.com"
"Which property handles api.example.com?"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Property name or partial name to search for | |
| limit | No | Maximum number of results to return (1-50) |
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. It discloses that results include version numbers and IDs but does not mention pagination behavior, error handling, or case sensitivity of search. This is adequate but not fully transparent for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two clear sentences plus two example questions. Every sentence adds value, and the structure is front-loaded with the core purpose.
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 an output schema exists, the description does not need to detail return values. It covers the tool's purpose and output sufficiently. However, it could elaborate on search behavior (e.g., partial match, fuzzy search) for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds 'by name' for the query parameter but no additional context for limit. Since schema already covers parameter meaning, description adds minimal value beyond it.
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 searches CDN properties by name and specifies the returned data (version numbers, staging/production versions, group/contract IDs). This distinguishes it from sibling tools that target different resources like edgeworkers or DNS records.
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 example questions that imply search use cases but does not explicitly state when to use this tool versus alternatives like get_property_details for detailed property info. No exclusion criteria or comparison with siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_error_codeA
Translate an Akamai error reference code into human-readable details. Returns HTTP response code, client/server IPs, origin info, failure reason, and WAF details.
Example questions:
"What does error 9.6f64d440.1318965461.2f2b078 mean?"
"Translate this Akamai error reference"
| Name | Required | Description | Default |
|---|---|---|---|
| error_code | Yes | Akamai reference error code (e.g., 9.6f64d440.1318965461.2f2b078) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It lists what the tool returns and implies a read-only, non-destructive operation, but does not explicitly state this or mention other 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 two concise paragraphs: the first defines purpose and output, the second provides example queries. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately summarizes return fields. Combined with examples and clear purpose, it provides complete contextual guidance for a simple translation 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?
The schema covers the single parameter with a description and example. The description adds value by providing concrete error code examples and clarifying the input format, going beyond the schema alone.
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 translates a specific Akamai error code into human-readable details, listing the returned fields. It is distinct from sibling tools, which focus on retrieving configurations or lists.
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?
Example questions effectively indicate when to use the tool. However, no explicit guidance on when not to use it or alternatives is provided, though siblings do not overlap.
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.
16 tool updates
v0.1.1- First observed
get_edgeworker_file - First observed
get_edgeworker_files - First observed
get_network_list - First observed
get_property_activations - First observed
get_property_details - First observed
get_property_rules - First observed
list_cp_codes - First observed
list_dns_zones - First observed
list_edgeworker_versions - First observed
list_edgeworkers - First observed
list_groups - First observed
search_dns_records - First observed
search_edgeworker_code - First observed
search_network_lists - First observed
search_properties - First observed
translate_error_code
TDQS
Scored across 16 tools
Each tool targets a distinct resource or operation: property, CP code, DNS, EdgeWorker, network list, error code. No two tools overlap in purpose, making selection unambiguous.
All tools follow a consistent verb_noun pattern: get_ for single items, list_ for collections, search_ for filtered lookups, translate_ for a specific translation. The naming is predictable and clear.
With 16 tools covering major Akamai resources (properties, DNS, EdgeWorkers, network lists, CP codes, error codes), the count is well-scoped for a read-only server. Each tool adds distinct value.
The tool surface covers the core read-only needs for Akamai CDN management. Minor gaps exist (e.g., property variables, security settings), but the essential resources are addressed.
Maintenance
Related MCP Connectors
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Related MCP Servers
AlicenseAqualityCmaintenanceRead-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.511 npm1MIT- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for interacting with Nautobot, enabling network source of truth queries, device management, IPAM, and data quality audits via tools and prompts.MIT
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server that provides tools to list and read devices, MDM servers, blueprints, configurations, apps, packages, users, and other resources from Apple Business Manager and Apple School Manager.MIT
- AlicenseBqualityBmaintenanceA read-only MCP server for Microsoft Intune and Entra ID that enables list, get, search, and reporting operations for tenant visibility, audits, troubleshooting, and health reporting without write actions. It includes authentication helpers, report exports, and metadata discovery tools.361MIT