Meraki Magic MCP
The Meraki Magic MCP server provides comprehensive access to Cisco Meraki's Dashboard API, enabling you to discover, monitor, and manage your entire Meraki network infrastructure.
Generic API Access
Call any of 804+ Meraki API endpoints via
call_meraki_apiby specifying a section and method nameSearch and discover API methods with
search_methodsandlist_all_methodsInspect method parameters with
get_method_info
Organization Management: List organizations, view admins, API request logs, inventory, licensing, and change logs.
Network Management: Create, update, delete, and retrieve networks; monitor events, alerts, traffic, and health.
Device Management: List/get devices, check status/uplinks, update configs, claim/remove/reboot devices, and retrieve connected clients.
Client Management: List clients, get details/usage/policy, and update client policies.
Wireless Management: Configure SSIDs, manage RF profiles, monitor channel utilization, signal quality, connection stats, and client connectivity events.
Switch Management: Get/update switch ports, manage VLANs, cycle ports, configure ACLs and QoS rules.
Appliance/Security Management: Manage firewall rules, VPN, NAT, content filtering, traffic shaping, and security events.
Camera Management: Configure video/quality settings, retrieve live and historical analytics, manage zones, generate snapshots, and update camera sense/AI config.
Live Diagnostics: Ping devices, run cable tests, blink LEDs, and send Wake-on-LAN packets.
Automation: Create and monitor action batches for bulk operations.
Caching & Performance
View cache stats, clear in-memory cache, and manage cached response files
Automatic rate-limit handling and retry logic
Safety Features
Optional read-only mode blocks write/delete operations
Destructive actions require explicit confirmation
View server configuration (API key mode, read-only status, transport) via
get_mcp_config
Provides tools for interacting with Cisco's Meraki Dashboard, enabling network discovery, device discovery, client discovery, and management of a Meraki environment through the Meraki Dashboard API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Meraki Magic MCPlist all networks in my organization"
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.
Meraki Magic MCP
Meraki Magic is a Python-based MCP (Model Context Protocol) server for Cisco's Meraki Dashboard. Meraki Magic provides tools for querying the Meraki Dashboard API to discover, monitor, and manage your Meraki environment.
Two Versions Available
š Dynamic MCP (Recommended) - meraki-mcp-dynamic.py
~804 API endpoints automatically exposed
100% SDK coverage - all Meraki API methods available
Auto-updates when you upgrade the Meraki SDK
No manual coding required for new endpoints
š Manual MCP - meraki-mcp.py
40 curated endpoints with detailed schemas
Type-safe with Pydantic validation
Custom business logic for specific use cases
Clean documentation for common operations
Related MCP server: Meraki MCP Server
Features
Dynamic MCP includes:
All organization management (admins, networks, devices, inventory, licensing)
Complete wireless management (SSIDs, RF profiles, Air Marshal, analytics)
Full switch management (ports, VLANs, stacks, QoS, access policies)
Advanced appliance/security (all firewall types, NAT, VPN, traffic shaping)
Camera management (analytics, quality, schedules, permissions)
Network monitoring (events, alerts, health, performance)
Live troubleshooting tools (ping, cable test, ARP table)
Webhooks and automation (alert profiles, action batches)
And 700+ more endpoints...
Manual MCP includes:
Network discovery and management
Device discovery and configuration
Client discovery and policy management
Wireless SSID management
Switch port and VLAN configuration
Basic firewall rules
Camera settings
Quick Installation
Prerequisites
Python 3.13+
Claude Desktop (or any MCP-compatible client)
Meraki Dashboard API Key
Meraki Organization ID
Fast Track
macOS:
git clone https://github.com/CiscoDevNet/meraki-magic-mcp-community.git
cd meraki-magic-mcp-community
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env-example .env
# Edit .env with your API credentialsWindows (PowerShell):
git clone https://github.com/CiscoDevNet/meraki-magic-mcp-community.git
cd meraki-magic-mcp-community
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env-example .env
# Edit .env with your API credentialsš For detailed step-by-step instructions, see INSTALL.md
Configuration
Edit .env with your Meraki credentials:
MERAKI_API_KEY="your_api_key_here"
MERAKI_ORG_ID="your_org_id_here"
MERAKI_BASE_URL="https://api.meraki.com/api/v1"
# Optional: Performance tuning
ENABLE_CACHING=true
CACHE_TTL_SECONDS=300
READ_ONLY_MODE=trueGet your API key from: Meraki Dashboard ā Organization ā Settings ā Dashboard API access
READ_ONLY_MODE defaults to true to block create/update/delete/remove operations. Set READ_ONLY_MODE=false only when you intend to make changes. Delete/remove calls also require confirm_destructive_action=true.
Use MERAKI_BASE_URL to point the MCP server at another Meraki region or compatible Dashboard API base URI.
Deployment Options
There are three ways to deploy Meraki Magic MCP:
Method | Best For | Transport |
Claude Desktop / Cursor on same machine | stdio | |
Remote access, shared team server | StreamableHTTP | |
Containerized / production deployments | StreamableHTTP |
Claude Desktop Setup
Dynamic MCP (Recommended)
Locate Claude config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Edit config with your paths:
macOS Example:
{
"mcpServers": {
"Meraki_Magic_MCP": {
"command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
"args": [
"run",
"-t", "stdio",
"/path/to/meraki-magic-mcp-community/meraki-mcp-dynamic.py"
]
}
}
}Windows Example:
{
"mcpServers": {
"Meraki_Magic_MCP": {
"command": "C:/Users/YourName/meraki-magic-mcp-community/.venv/Scripts/fastmcp.exe",
"args": [
"run",
"-t", "stdio",
"C:/Users/YourName/meraki-magic-mcp-community/meraki-mcp-dynamic.py"
]
}
}
}Replace /path/to/ with your actual installation path. Windows users: use forward slashes / and include .exe.
Restart Claude Desktop (Quit completely, then reopen)
Verify: Ask Claude "What MCP servers are available?"
š Detailed setup instructions: INSTALL.md
Manual MCP (Original)
Use meraki-mcp.py instead of meraki-mcp-dynamic.py in the config above.
Both MCPs (Advanced)
You can run both simultaneously:
{
"mcpServers": {
"Meraki_Curated": {
"command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
"args": ["run", "-t", "stdio", "/path/to/meraki-magic-mcp-community/meraki-mcp.py"]
},
"Meraki_Full_API": {
"command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
"args": ["run", "-t", "stdio", "/path/to/meraki-magic-mcp-community/meraki-mcp-dynamic.py"]
}
}
}HTTP Transport
Run the MCP server over HTTP for remote access or shared team use:
# Set transport in .env
MCP_TRANSPORT=http
MCP_HOST=127.0.0.1 # Use 0.0.0.0 for remote access
MCP_PORT=8000
# Start the server
python meraki-mcp-dynamic.py
# Server available at http://127.0.0.1:8000/mcpConnect Claude Desktop to an HTTP server using mcp-remote (requires Node.js):
{
"mcpServers": {
"Meraki_Magic_MCP": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://127.0.0.1:8000/mcp"]
}
}
}Docker Deployment
The fastest way to deploy remotely:
cp .env-example .env
# Edit .env with your MERAKI_API_KEY and MERAKI_ORG_ID
docker compose up -d
# Server available at http://localhost:8000/mcpš Full HTTP & Docker instructions: INSTALL.md
Keeping Updated
The dynamic MCP automatically stays current with Meraki's API:
# Manually update SDK
pip install --upgrade merakiThen restart Claude Desktop. See UPDATE_GUIDE.md for details.
Performance & Safety Features
The dynamic MCP includes several optimizations:
ā Response Caching - Read-only operations cached for 5 minutes (reduces API calls by 50-90%) ā Read-Only Mode - Optional safety mode blocks write operations ā Auto-Retry - Automatic retry on failures (3 attempts) ā Rate Limit Handling - Automatically waits when rate limited ā Operation Labeling - Tools labeled as [READ], [WRITE], or [MISC]
See OPTIMIZATIONS.md for details.
Documentation
INSTALL.md - Detailed installation guide (macOS & Windows)
QUICKSTART.md - Get started quickly with examples
README-DYNAMIC.md - Dynamic MCP technical details
COMPARISON.md - Compare manual vs dynamic approaches
UPDATE_GUIDE.md - Keep your MCP current with latest APIs
OPTIMIZATIONS.md - Performance and safety features
How It Works
The Dynamic MCP provides two ways to access Meraki APIs:
Pre-registered tools (12 most common operations):
getOrganizations,getOrganizationAdmins,getOrganizationNetworksgetNetworkClients,getNetworkEvents,getDeviceSwitchPortsAnd 6 more common operations
Generic API caller (
call_meraki_api):Access ALL 804+ Meraki API methods
Example:
call_meraki_api(section="appliance", method="getNetworkApplianceFirewallL3FirewallRules", parameters={"networkId": "L_123"})Destructive methods require
confirm_destructive_action=trueinparameters
Example Usage
Get all admins in my organization
Show me firewall rules for network "Main Office"
Update switch port 12 on device ABC123 to enable BPDU guard
Get wireless clients from the last hour
Create a new network named "Branch Office"Support
Issues: GitHub Issues
Meraki API Docs: developer.cisco.com/meraki/api-v1
MCP Protocol: modelcontextprotocol.io
Contributing
Contributions welcome! Please:
Fork the repository
Create a feature branch
Submit a pull request
Manual MCP Tools Reference
The following tools are available in the manual MCP (meraki-mcp.py). The dynamic MCP provides access to these and 760+ additional endpoints through the generic call_meraki_api tool.
Network Tools Guide
This guide provides a comprehensive overview of the curated network tools available in the manual MCP, organized by category and functionality.
Table of Contents
Organization Management Tools
Basic Organization Operations
get_organizations()- Get a list of organizations the user has access toget_organization_details(org_id)- Get details for a specific organizationget_organization_status(org_id)- Get the status and health of an organizationget_organization_inventory(org_id)- Get the inventory for an organizationget_organization_license(org_id)- Get the license state for an organizationget_organization_conf_change(org_id)- Get the org change state for an organization
Advanced Organization Management
get_organization_admins(org_id)- Get a list of organization adminscreate_organization_admin(org_id, email, name, org_access, tags, networks)- Create a new organization adminget_organization_api_requests(org_id, timespan)- Get organization API request historyget_organization_webhook_logs(org_id, timespan)- Get organization webhook logs
Network Management
get_networks(org_id)- Get a list of networks from Merakicreate_network(name, tags, productTypes, org_id, copyFromNetworkId)- Create a new networkdelete_network(network_id, confirm_destructive_action)- Delete a network in Merakiget_network_details(network_id)- Get details for a specific networkupdate_network(network_id, update_data)- Update a network's properties
Network Management Tools
Network Monitoring
get_network_events(network_id, timespan, per_page)- Get network events historyget_network_event_types(network_id)- Get available network event typesget_network_alerts_history(network_id, timespan)- Get network alerts historyget_network_alerts_settings(network_id)- Get network alerts settingsupdate_network_alerts_settings(network_id, defaultDestinations, alerts)- Update network alerts settings
Client Management
get_clients(network_id, timespan)- Get a list of clients from a networkget_client_details(network_id, client_id)- Get details for a specific clientget_client_usage(network_id, client_id)- Get the usage history for a clientget_client_policy(network_id, client_id)- Get the policy for a specific clientupdate_client_policy(network_id, client_id, device_policy, group_policy_id)- Update policy for a client
Network Traffic & Analysis
get_network_traffic(network_id, timespan)- Get traffic analysis data for a network
Device Management Tools
Device Information
get_devices(org_id)- Get a list of devices from Merakiget_network_devices(network_id)- Get a list of devices in a specific networkget_device_details(serial)- Get details for a specific device by serial numberget_device_status(serial)- Get the current status of a deviceget_device_uplink(serial)- Get the uplink status of a device
Device Operations
update_device(serial, device_settings)- Update a device in the Meraki organizationclaim_devices(network_id, serials)- Claim one or more devices into a Meraki networkremove_device(network_id, serial, confirm_destructive_action)- Remove a device from its networkreboot_device(serial)- Reboot a device
Device Monitoring
get_device_clients(serial, timespan)- Get clients connected to a specific device
Live Device Tools
Network Diagnostics
ping_device(serial, target_ip, count)- Ping a device from another deviceget_device_ping_results(serial, ping_id)- Get results from a device ping testcable_test_device(serial, ports)- Run cable test on device portsget_device_cable_test_results(serial, cable_test_id)- Get results from a device cable test
Device Control
blink_device_leds(serial, duration)- Blink device LEDs for identificationwake_on_lan_device(serial, mac)- Send wake-on-LAN packet to a device
Wireless Management Tools
Basic Wireless Operations
get_wireless_ssids(network_id)- Get wireless SSIDs for a networkupdate_wireless_ssid(network_id, ssid_number, ssid_settings)- Update a wireless SSIDget_wireless_settings(network_id)- Get wireless settings for a network
Advanced Wireless Management
get_wireless_rf_profiles(network_id)- Get wireless RF profiles for a networkcreate_wireless_rf_profile(network_id, name, band_selection_type, **kwargs)- Create a wireless RF profileget_wireless_channel_utilization(network_id, timespan)- Get wireless channel utilization historyget_wireless_signal_quality(network_id, timespan)- Get wireless signal quality historyget_wireless_connection_stats(network_id, timespan)- Get wireless connection statisticsget_wireless_client_connectivity_events(network_id, client_id, timespan)- Get wireless client connectivity events
Switch Management Tools
Basic Switch Operations
get_switch_ports(serial)- Get ports for a switchupdate_switch_port(serial, port_id, name, tags, enabled, vlan)- Update a switch portget_switch_vlans(network_id)- Get VLANs for a networkcreate_switch_vlan(network_id, vlan_id, name, subnet, appliance_ip)- Create a switch VLAN
Advanced Switch Management
get_switch_port_statuses(serial)- Get switch port statusescycle_switch_ports(serial, ports)- Cycle (restart) switch portsget_switch_access_control_lists(network_id)- Get switch access control listsupdate_switch_access_control_lists(network_id, rules)- Update switch access control listsget_switch_qos_rules(network_id)- Get switch QoS rulescreate_switch_qos_rule(network_id, vlan, protocol, src_port, **kwargs)- Create a switch QoS rule
Appliance Management Tools
Basic Appliance Operations
get_security_center(network_id)- Get security information for a networkget_vpn_status(network_id)- Get VPN status for a networkget_firewall_rules(network_id)- Get firewall rules for a networkupdate_firewall_rules(network_id, rules)- Update firewall rules for a network
Advanced Appliance Management
get_appliance_vpn_site_to_site(network_id)- Get appliance VPN site-to-site configurationupdate_appliance_vpn_site_to_site(network_id, mode, hubs, subnets)- Update appliance VPN site-to-site configurationget_appliance_content_filtering(network_id)- Get appliance content filtering settingsupdate_appliance_content_filtering(network_id, **kwargs)- Update appliance content filtering settingsget_appliance_security_events(network_id, timespan)- Get appliance security eventsget_appliance_traffic_shaping(network_id)- Get appliance traffic shaping settingsupdate_appliance_traffic_shaping(network_id, global_bandwidth_limits)- Update appliance traffic shaping settings
Camera Management Tools
Basic Camera Operations
get_camera_video_settings(network_id, serial)- Get video settings for a cameraget_camera_quality_settings(network_id)- Get quality and retention settings for cameras
Advanced Camera Management
get_camera_analytics_live(serial)- Get live camera analyticsget_camera_analytics_overview(serial, timespan)- Get camera analytics overviewget_camera_analytics_zones(serial)- Get camera analytics zonesgenerate_camera_snapshot(serial, timestamp)- Generate a camera snapshotget_camera_sense(serial)- Get camera sense configurationupdate_camera_sense(serial, sense_enabled, mqtt_broker_id, audio_detection)- Update camera sense configuration
Network Automation Tools
Action Batches
create_action_batch(org_id, actions, confirmed, synchronous)- Create an action batch for bulk operationsget_action_batch_status(org_id, batch_id)- Get action batch statusget_action_batches(org_id)- Get all action batches for an organization
Schema Definitions
The manual MCP includes comprehensive Pydantic schemas for data validation:
SsidUpdateSchema- Wireless SSID configurationFirewallRule- Firewall rule configurationDeviceUpdateSchema- Device update parametersNetworkUpdateSchema- Network update parametersAdminCreationSchema- Admin creation parametersActionBatchSchema- Action batch configurationVpnSiteToSiteSchema- VPN site-to-site configurationContentFilteringSchema- Content filtering settingsTrafficShapingSchema- Traffic shaping configurationCameraSenseSchema- Camera sense settingsSwitchQosRuleSchema- Switch QoS rule configuration
Best Practices
Error Handling: Always check API responses for errors
Rate Limiting: The Meraki API has rate limits; use appropriate delays (or use dynamic MCP with caching)
Batch Operations: Use action batches for bulk operations
Validation: Use the provided schemas for data validation
Monitoring: Regularly check network events and alerts
Security: Keep API keys secure and rotate them regularly
Troubleshooting
Common Issues
Authentication Errors: Verify your API key is correct and has appropriate permissions
Rate Limiting: If you encounter rate limiting, implement delays between requests (or use dynamic MCP with caching)
Network Not Found: Ensure the network ID is correct and accessible
Device Not Found: Verify the device serial number is correct and the device is online
Debug Information
Enable debug logging by setting the appropriate log level in your environment.
ā ļø Disclaimer
IMPORTANT: PRODUCTION USE DISCLAIMER
This software is provided "AS IS" without warranty of any kind, either express or implied. The authors and contributors make no representations or warranties regarding the suitability, reliability, availability, accuracy, or completeness of this software for any purpose.
USE AT YOUR OWN RISK: This MCP server is designed for development, testing, and educational purposes. Running this software in production environments is done entirely at your own risk. The authors and contributors are not responsible for any damages, data loss, service interruptions, or other issues that may arise from the use of this software in production environments.
SECURITY CONSIDERATIONS: This software requires access to your Meraki API credentials. Ensure that:
API keys are stored securely and not committed to version control
API keys have appropriate permissions and are rotated regularly
Network access is properly secured
Regular security audits are performed
NO WARRANTY: The authors disclaim all warranties, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the authors be liable for any claim, damages, or other liability arising from the use of this software.
SUPPORT: This is an open-source project. For production use, consider implementing additional testing, monitoring, and support mechanisms appropriate for your environment.
License
See LICENSE file for details.
Available Tools
22 toolscache_clearB
Clear all cached data
| 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?
With no annotations, the description should disclose behavioral traits. It only states 'Clear all cached data' without mentioning that it is destructive, requires permissions, or affects performance. Significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, single sentence front-loading the action. No unnecessary words, earning 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?
Despite an output schema being present, the description does not mention return values or side effects. For a destructive tool, it should disclose behavioral context beyond the action itself.
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 has no parameters (0 params, 100% coverage). The description adds the basic meaning that this tool clears all cached data, which is sufficient given no parameters to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Clear) and the resource (all cached data). It distinguishes from siblings like 'clear_cached_files' by being broader in scope, though it could be more specific about what 'cached data' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'clear_cached_files' or 'cache_stats'. Lack of context for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_statsA
Get cache statistics and configuration
| 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 only says 'Get cache statistics and configuration' without disclosing behavioral traits like read-only safety, authorization needs, or side effects. The burden is on the description, but it falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste, front-loaded. Perfectly concise for a zero-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description is reasonably complete for a simple stats tool. However, it could mention that this is a read-only operation to differentiate from mutating siblings like cache_clear.
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 0 parameters, so schema coverage is 100% trivially. Per rules, baseline is 4. No additional parameter info is needed.
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 'Get cache statistics and configuration' clearly states the verb (get) and resource (cache statistics and configuration), distinguishing it from siblings like cache_clear and get_cached_response.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as cache_clear or list_cached_responses. The description does not specify context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_meraki_apiA
Call any Meraki API method - provides access to all 804+ endpoints
Args: section: SDK section (organizations, networks, wireless, switch, appliance, camera, devices, sensor, sm, etc.) method: Method name (e.g., getOrganizationAdmins, updateNetworkWirelessSsid, getNetworkApplianceFirewallL3FirewallRules) parameters: Dict of parameters (e.g., {"networkId": "L_123", "name": "MySSID"})
Examples: call_meraki_api(section="organizations", method="getOrganizationAdmins", parameters={"organizationId": "123456"}) call_meraki_api(section="wireless", method="updateNetworkWirelessSsid", parameters={"networkId": "L_123", "number": "0", "name": "NewSSID", "enabled": True}) call_meraki_api(section="appliance", method="getNetworkApplianceFirewallL3FirewallRules", parameters={"networkId": "L_123"})
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | ||
| method | Yes | ||
| parameters | 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 full burden. It does not disclose side effects, readonly vs mutation, auth needs, or rate limits. Behavior depends on the method called, but the tool's consistent behavior is not described.
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 structured with Args and Examples, making it clear. It is somewhat lengthy but each 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 complexity and existence of an output schema, the description covers how to use each parameter and provides representative examples. It lacks error handling or auth details but is reasonably 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?
The input schema has 0% parameter descriptions, but the description adds full context: section lists SDK sections, method is the endpoint name, parameters is a dict. Examples clarify usage, providing high value.
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 it calls any Meraki API method with access to all 804+ endpoints, distinguishing it from specific sibling tools like getDevice or getNetwork.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for any Meraki API method, especially those without dedicated tools, and provides examples. It lacks explicit 'when not to use' or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cached_filesC
Clear cached response files older than specified hours
Args: older_than_hours: Delete files older than this many hours (default: 24)
| Name | Required | Description | Default |
|---|---|---|---|
| older_than_hours | 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 must fully convey behavioral traits. It states the tool deletes files, indicating destructive behavior, but does not disclose additional traits such as irreversibility, permission requirements, or effects on other cached responses. This is insufficient for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and includes a structured args section. It contains no unnecessary words, but could perhaps integrate the parameter description more naturally. Overall, it earns its place with minimal 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 tool's low complexity and the presence of an output schema, the description should still cover context like the scope of 'cached response files' and potential side effects. It lacks this context, and the existence of sibling caching tools further demands comparison, which is absent.
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 0% description coverage, so the description must compensate. It explains that 'older_than_hours' specifies the age threshold for deletion, adding meaning beyond the schema's type and default. However, the explanation is minimal and does not elaborate on format or 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 tool clears cached response files older than a specified number of hours, using the verb 'clear' and resource 'cached response files'. However, it does not differentiate from the sibling tool 'cache_clear', which may perform a similar or related function.
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 the parameter default but offers no guidance on when to use this tool versus alternatives like 'cache_clear', nor does it include any exclusions or prerequisites. The agent is left to infer usage context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cached_responseA
Retrieve a paginated slice of a cached response from a file
IMPORTANT: This tool returns paginated data to avoid context overflow. For full data access, use command-line tools: cat | jq
Args: filepath: Path to the cached response file (from _full_response_cached field) offset: Starting index for pagination (default: 0) limit: Maximum number of items to return (default: 10, max: 100)
Examples: get_cached_response(filepath="...", offset=0, limit=10) # First 10 items get_cached_response(filepath="...", offset=10, limit=10) # Next 10 items get_cached_response(filepath="...", offset=0, limit=100) # First 100 items
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | ||
| offset | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses pagination behavior, offset/limit defaults and max, and context overflow warning. No annotations provided, but description covers key behavioral aspects.
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 with structured sections (IMPORTANT, Args, Examples). Every sentence provides 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?
Comprehensive for a 3-parameter tool with output schema. Includes examples and warnings, leaving no critical gaps for agent 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 description adds detailed meaning for all three parameters: filepath source, offset starting index, limit max items. Examples further clarify 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?
Description clearly states 'Retrieve a paginated slice of a cached response from a file', which is a specific verb+resource. It distinguishes from sibling tools like 'list_cached_responses' and 'cache_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?
Explicitly says when to use (paginated access) and when not to (full data via CLI tools), providing clear usage guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDeviceC
Get device by serial
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
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, and the description is minimal. It implies a read operation but omits details such as data freshness, authentication requirements, rate limits, or side effects. The description carries the burden but fails to disclose these 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, front-loaded sentence of five words. It is concise and earns its place, though it omits optional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to explain return values. However, it is very terse and could add context about conditions (e.g., device not found). Adequate for a simple retrieval tool but not rich.
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 identifies the serial parameter role ('by serial') but adds no constraints or format details. The value is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get device by serial' clearly states the action (get) and resource (device) along with the key identifier (serial). It distinguishes from siblings like getNetwork or getNetworkDevices, but could be more specific about the type of device or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like getNetworkDevices or getOrganizationDevices. The description lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDeviceSwitchPortsC
Get switch ports for a device
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
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 only says 'Get switch ports', implying it is read-only but provides no additional behavioral context such as required permissions, rate limits, 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?
The description is a single short sentence, which is concise. However, it is too minimal; a slightly more informative description would be appropriate given the context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and 0% schema coverage, the description lacks completeness. It does not specify what the output contains (list of ports with fields), nor does it mention important behavioral aspects for a tool with an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the 'serial' parameter. The parameter name 'serial' hints at a device serial number, but the description adds no explanatory value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action 'Get' and resource 'switch ports' clearly. It indicates read operation but does not differentiate from sibling tools like 'updateDeviceSwitchPort' or 'getDevice', which limits 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?
No guidance on when to use this tool versus alternatives, no prerequisites or conditions for use, and no mention of limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mcp_configA
Get MCP configuration
| 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?
With no annotations, the description must convey behavior. 'Get' implies a read-only operation, but no details are given about caching, cost, or whether the configuration changes. The simplicity of the tool (no params) limits risk, but more transparency would be beneficial.
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 unnecessary words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only) and the presence of an output schema, the description is complete enough for an agent to understand the tool's purpose. It could be slightly more descriptive, but it suffices.
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 no parameters, and schema description coverage is 100%. The description does not need to add parameter-level detail, and it correctly implies that no inputs are required.
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 'Get MCP configuration' clearly states the action (get) and the resource (MCP configuration). It distinguishes itself from sibling tools like getDevice or getNetwork, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention context, prerequisites, or typical scenarios, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_method_infoA
Get detailed parameter information for a method
Args: section: SDK section (e.g., 'organizations', 'networks') method: Method name (e.g., 'getOrganizationAdmins')
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | ||
| method | Yes |
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 full burden. It only states what the tool does, not any behavioral aspects like being read-only, side effects, or auth requirements. The description does not contradict annotations, but it omits important transparency 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 and to the point, with three lines of content. However, the blank line at the start and the informal 'Args' section slightly reduce clarity. Still, it is efficient and well-sized.
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 (not shown), the description adequately covers the tool's purpose and parameters. It is complete enough for a simple retrieval tool without needing further 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?
With 0% schema description coverage, the description adds meaningful examples and context: section (e.g., 'organizations') and method (e.g., 'getOrganizationAdmins'). This provides more semantic value than the schema's bare titles.
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 it gets detailed parameter information for a method, which is a specific verb+resource. It distinguishes from sibling tools like call_meraki_api or search_methods by being a meta-information tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_methods or list_all_methods. The description only defines its function without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNetworkC
Get network details
| Name | Required | Description | Default |
|---|---|---|---|
| networkId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits beyond being a read operation. There is no mention of permissions, rate limits, or any side effects, leaving the agent without important context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (three words), but this brevity sacrifices clarity and completeness. It does not effectively communicate the tool's purpose or usage.
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?
Although an output schema exists, the description does not mention the structure or content of the response. Given the single parameter and lack of annotations, the description is insufficient for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its only parameter, networkId. The description does not explain what this parameter represents or how to use it, failing to compensate for the schema's lack of detail.
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 'Get network details', which is a clear verb+resource pair, but it lacks specificity about what details are included. Among sibling tools like getNetworkClients and getNetworkDevices, this description does not differentiate itself, making it somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as getNetworkClients or getNetworkDevices. The description offers no context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNetworkClientsC
Get network clients
| Name | Required | Description | Default |
|---|---|---|---|
| networkId | Yes | ||
| timespan | No |
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 fails to disclose whether this operation is read-only, destructive, or has side effects. The agent gets no behavioral hints beyond the literal verb 'Get'.
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 too shortāonly three words. It omits critical details that could be added without bloat. Under-specification is not conciseness.
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?
Although an output schema exists (covering return structure), the description fails to provide any usage context or behavioral notes. The agent has little to decide when to invoke this tool appropriately.
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 does not explain the meaning of 'networkId' or 'timespan'. The default value of 86400 for timespan is not contextualized, leaving the agent to guess its purpose (e.g., time range in seconds).
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 says 'Get network clients' which identifies the action and resource, but lacks specificity compared to sibling tools like getNetworkDevices or getNetworkEvents. It doesn't clarify what qualifies as a 'client' or whether it's a list or single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as getNetworkDevices (which might return devices) or other tools. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNetworkDevicesD
Get network devices
| Name | Required | Description | Default |
|---|---|---|---|
| networkId | 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 must disclose behavior such as read-only nature, required permissions, or data scope. It states nothing beyond the basic action, leaving the agent uninformed about side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is short, it is not meaningfully conciseāit provides no additional information beyond the tool name. Every sentence should add value; here, the single sentence is a waste.
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 schema descriptions, the description is severely incomplete. Even though an output schema exists, the description does not hint at the return format or fields, making it insufficient for effective tool 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 input schema has 0% description coverage for parameters, and the description adds nothing about the 'networkId' parameterāno format, source, or validation hints. The parameter's purpose is only implied by the tool's 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 'Get network devices' is a tautologyāit merely restates the tool name without specifying what network devices are retrieved (e.g., all devices in a network, filtered, detailed info). It fails to differentiate from sibling tools like 'getDevice' or 'getNetworkClients'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., 'getDevice' for a single device, 'getOrganizationDevices' for org-wide). There are no usage prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNetworkEventsC
Get network events
| Name | Required | Description | Default |
|---|---|---|---|
| networkId | Yes | ||
| productType | No | ||
| perPage | 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 must convey behavioral traits. It only states 'Get network events' without disclosing whether it is read-only, any rate limits, pagination behavior (despite a perPage parameter), or the nature of the events.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (3 words) but under-specified; it is not meaningfully concise. The structure is minimal and does not front-load key 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?
Given the tool has 3 parameters and an output schema, the description is drastically incomplete. It does not explain what events are returned, how to filter (productType), or pagination implications.
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 does not explain the parameters networkId, productType, or perPage. Since the input schema has 0% description coverage, the description fully fails to add meaning beyond the property types.
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 'Get network events' includes a verb ('Get') and a resource ('network events'), indicating the tool retrieves events. However, it does not differentiate from sibling tools like getNetwork or getNetworkClients; it lacks specifics on the type of events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or scenarios where other tools might be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNetworkWirelessSsidsC
Get wireless SSIDs
| Name | Required | Description | Default |
|---|---|---|---|
| networkId | 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 full burden. It states only the action without disclosing side effects, authentication needs, or behavior for empty results. The tool appears read-only but lacks explicit safety cues.
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 too brief to be considered appropriately concise. It fails to provide necessary context, making it under-specified rather than succinct.
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 availability of an output schema, the description could be minimal but still misses key details like what the tool returns (list vs. details), preconditions, and error states. It is insufficient for safe and correct 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 input schema has 0% description coverage for the single parameter networkId, and the tool description adds no extra meaning. The parameter's role and source remain unexplained.
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 'Get wireless SSIDs' clearly indicates retrieval of SSIDs. It is a specific verb+resource combination, though it does not differentiate from other get* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like getNetwork or getNetworkClients. The context of use is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrganizationAdminsC
Get organization administrators
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | 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 full burden. It only says 'Get', implying a read operation, but does not explicitly state read-only nature, permissions needed, or any side effects. The description is insufficient for behavioral 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 a single concise sentence, but it is too minimal to fully convey the tool's purpose and usage. It prioritizes brevity over completeness.
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 optional parameter, output schema present), the description is barely adequate. It covers the basic action but lacks parameter 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?
Schema description coverage is 0%. The description does not mention the single parameter 'organizationId', its role, or constraints. Parameter semantics are completely absent.
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 gets organization administrators. It uses a specific verb ('Get') and resource ('organization administrators'), distinguishing it from sibling tools like getOrganizationDevices or getOrganizationNetworks. However, it does not specify whether it returns a list or a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. There is no mention of required input, prerequisites, or comparative context with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrganizationDevicesC
Get organization devices
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | 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, and the description offers no behavioral details beyond the basic read operation. There is no information on auth requirements, rate limits, or what data is returned (despite an output schema existing). The description fails to carry the transparency burden in the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just one phrase, which is efficient but not appropriately sized given the lack of other context. It is not structured and omits critical information, making it under-specified despite 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?
The description is incomplete for a tool with one parameter and an output schema. It does not explain what 'organization devices' includes, how it differs from related tools, or any edge cases. The output schema exists but is not referenced, leaving the agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (organizationId) with no description and 0% schema description coverage. The description does not mention or explain the parameter, nor does it add any meaning beyond what the schema provides. It fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'organization devices', making the purpose unambiguous. However, it does not differentiate from sibling tools like getNetworkDevices or getDevice, which also deal with devices but at different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as getNetworkDevices or getDevice. There is no mention of context, prerequisites, or exclusions, leaving the agent without decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrganizationNetworksC
Get organization networks
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | 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 must carry the burden of behavioral disclosure. It only states the action (get) but does not disclose authentication needs, rate limits, the meaning of 'networks', or whether the operation is read-only. Lacks important context for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that front-loads the action. However, it is under-specified for the parameter, making it too sparse for a complete definition.
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 does not need to detail return values, but it fails to provide enough context for the single parameter. For a simple tool, this minimalism is insufficient.
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 explain the 'organizationId' parameter. It adds no meaning beyond the parameter name, so the agent cannot infer its format or 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 'Get organization networks' provides a specific verb and resource, clearly stating the tool's purpose. It distinguishes from siblings like 'getOrganizations' (which returns organizations) and 'getNetwork' (which returns a single network), though not explicitly.
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 usage guidance is provided. The description does not indicate when to use this tool versus alternatives like 'getNetwork' or 'getOrganizations', nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getOrganizationsA
Get all organizations
| 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 are provided, so the description must convey behavior. 'Get' implies a read-only operation, but no details on side effects, data volume, or permissions are given. It is minimally 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 extremely concise at three words, which is appropriate for a simple list tool. However, it could benefit from a bit more context without being verbose, so it scores slightly below perfect.
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 tool is simple, the description lacks any details about the output or behavior beyond 'Get all organizations'. An output schema exists, but the description does not reference it or explain the return value, which would add 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?
The input schema has no parameters, and schema description coverage is 100% (empty schema). The description adds nothing about parameters because none exist, meeting the baseline expectation for a parameterless tool.
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 'Get all organizations' uses a specific verb and resource, clearly indicating the action and scope. It distinguishes itself from sibling tools like getOrganizationAdmins or getOrganizationNetworks by being the broadest retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the purpose is clear, there is no explicit guidance on when to use this tool versus siblings that return filtered organization data (e.g., getOrganizationNetworks). The usage context is implied but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_methodsA
List all available Meraki API methods
Args: section: Optional section filter (organizations, networks, wireless, switch, appliance, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description is adequate for a simple read operation. However, it does not detail potential side effects or authorization requirements.
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 line for the main description and one line for the parameter doc. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description sufficiently covers purpose and parameter behavior.
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?
With 0% schema coverage, the description adds meaning by explaining the section parameter as an optional filter with examples, compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available Meraki API methods' with a specific verb and resource. It distinguishes from siblings like get_method_info and search_methods.
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 via the section filter but lacks explicit when-not or alternative tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cached_responsesA
List all cached response files
| 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 exist, so the description carries full burden. It accurately indicates a non-destructive read operation. However, it lacks details about behavior such as response size limits, ordering, or caching implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that is front-loaded and contains no extraneous 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 zero-parameter list tool with an output schema, the description is complete and 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 tool has zero parameters, so baseline is 4. The description does not add parameter details, but none are needed.
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 'List all cached response files' clearly states the verb (list) and resource (cached response files). It distinguishes this tool from siblings like cache_clear, cache_stats, and get_cached_response.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No exclusions, prerequisites, or context-specific usage notes provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_methodsA
Search for Meraki API methods by keyword
Args: keyword: Search term (e.g., 'admin', 'firewall', 'ssid', 'event')
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes |
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 full burden of behavioral disclosure. The description only states the basic purpose and gives keyword examples. It does not disclose traits like case sensitivity, behavior on empty or no-match keywords, pagination, or response format. For a search tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of only two short sentences and an example. It front-loads the purpose and immediately provides usage context via examples. No extraneous 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?
The tool is simple (one required parameter) and has an output schema, so the description need not detail return values. However, it lacks completeness in terms of specifying behavior on edge cases (e.g., no matches, case sensitivity). For a minimal search tool, it is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning the JSON schema provides no explanation for the 'keyword' parameter. The description partially compensates by providing concrete examples ('admin', 'firewall', 'ssid', 'event'), adding meaning beyond 'string'. However, it does not specify expected format or 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 tool searches for Meraki API methods by keyword, using a specific verb ('Search') and resource ('Meraki API methods'). It distinguishes from siblings like 'get_method_info' (retrieves details of a specific method) and 'list_all_methods' (lists all methods).
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 a clear context for using the tool to search by keyword, with examples of valid keywords. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'get_method_info' for detailed info on a single method) or when not to use it. This is implicit in the sibling names, but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateDeviceSwitchPortC
Update switch port configuration. For the full parameter set use call_meraki_api.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| portId | Yes | ||
| name | No | ||
| enabled | No | ||
| poeEnabled | No | ||
| type | No | ||
| vlan | No | ||
| voiceVlan | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only states it updates the configuration, with no details on side effects, permissions, idempotency, or what happens to existing settings. The reference to call_meraki_api does not disclose 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?
Two sentences with no extraneous information, but the second sentence is a pointer to another tool rather than enriching the description. Could be more structured with parameter roles.
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 8 parameters (2 required) with no schema descriptions and no annotations, the description is insufficient for an agent to correctly invoke the tool. Output schema exists but does not compensate for missing param context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no information about any of the 8 parameters, their purpose, or constraints. The phrase 'update switch port configuration' is too vague to compensate.
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 updating switch port configuration, verb and resource are clear. Distinguishes from read-only sibling getDeviceSwitchPorts. However, it does not explicitly differentiate from the generic call_meraki_api which can also perform updates.
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?
Mentions using call_meraki_api for the full parameter set, implying this tool is for a subset. However, it does not specify when to choose this tool over alternatives, nor 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
22 tool updates
v0.1.0- First observed
cache_clear - First observed
cache_stats - First observed
call_meraki_api - First observed
clear_cached_files - First observed
get_cached_response - First observed
get_mcp_config - First observed
get_method_info - First observed
getDevice - First observed
getDeviceSwitchPorts - First observed
getNetwork - First observed
getNetworkClients - First observed
getNetworkDevices - First observed
getNetworkEvents - First observed
getNetworkWirelessSsids - First observed
getOrganizationAdmins - First observed
getOrganizationDevices - First observed
getOrganizationNetworks - First observed
getOrganizations - First observed
list_all_methods - First observed
list_cached_responses - First observed
search_methods - First observed
updateDeviceSwitchPort
TDQS
Multiple tools like getOrganizationAdmins, getDevice, etc., overlap with the generic call_meraki_api, which can perform all those actions and more. This creates ambiguity about which tool to use for a given operation.
Tool names mix conventions: some use camelCase (getDevice, getNetworkClients) while others use snake_case (get_mcp_config, list_all_methods). This inconsistency makes it harder to predict tool names.
With 22 tools, the count is on the higher side. Many tools are specific getters that could be subsumed by the generic call_meraki_api, making the set feel bloated for the domain.
The generic call_meraki_api provides access to all 804+ Meraki endpoints, so the tool surface is essentially complete. The specific tools cover common reads, but missing CRUD operations are addressed by the generic method.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
A basic MCP server to operate on the Postman API.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP (Model Context Protocol) server that enables interaction with the Cisco Meraki Dashboard API, allowing users to manage Meraki networks, devices, and configurations through natural language.-
- FlicenseNot gradedqualityDmaintenanceThis MCP (Model Context Protocol) Server provides a communication interface for the Meraki Dashboard API, auto-generated using AG2's MCP builder from the Meraki OpenAPI specification.-
- FlicenseCqualityBmaintenanceA read-only MCP server for the Cisco Meraki Dashboard API that exposes 50 GET endpoints for understanding network topology from organization down to individual devices and ports.50-
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for Cisco Meraki Dashboard, enabling LLMs to discover devices, check health, troubleshoot, and generate reports via natural language.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CiscoDevNet/meraki-magic-mcp-community'
If you have feedback or need assistance with the MCP directory API, please join our Discord server