An MCP server that provides tools for interacting with Piwik PRO analytics API, including app management, tag manager, tracker settings, CDP audiences, and analytics queries.
The Piwik PRO MCP server provides 17 tools with consistent naming patterns and generally adequate descriptions. Most tools follow verb_noun naming (apps_list, apps_get, audiences_create, etc.). However, there are significant gaps: (1) Many tool descriptions lack actionable context on when to use them and what they return. (2) Parameter schemas are present but some are overly generic (e.g., 'attributes' as bare object type without nested schema visibility). (3) Output schemas are not documented, we cannot see what fields are returned by list/get operations. (4) Error handling lacks recovery guidance and structured error categorization. (5) Several tools reference external 'tools_parameters_get()' for schema discovery (audiences_create, audiences_update, apps_create, tracker_settings_global_update), which violates the principle of self-contained tool definitions. The server is competent but falls short of production-grade quality for agent reasoning.
Create a new app in Piwik PRO analytics using JSON attributes. Use tools_parameters_get("apps_create") tool to get the complete JSON schema with all available fields, types, and validation rules.
Get detailed information about a specific app.
List apps from Piwik PRO analytics. Retrieves a list of applications (websites/apps) that are being tracked in the Piwik PRO analytics platform.
Update an existing app in Piwik PRO analytics using JSON attributes.
Create a new audience in Piwik PRO CDP using JSON attributes. ⚠️ IMPORTANT: Before creating audiences * First discover available parameters using tools_parameters_get("audiences_create") tool. * Only then use activations_attributes_list() to get the correct column_id, value_selectors, and value_format.
Output schemas undocumented. List and get tools return results but the field structure is not described in the tool definitions. Agents cannot plan downstream calls or extract needed IDs (e.g., app_id from apps_list) without trial-and-error.
Generic 'attributes' parameters lack nested schema definitions. Tools like apps_create, audiences_create, apps_update, audiences_update, and tracker_settings_global_update accept bare object type without visible nested properties. Agents cannot infer valid keys or constraints. Server delegates to external tools_parameters_get() for schema discovery, violating self-contained definition principle.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Get detailed information about a specific audience.
List audiences from Piwik PRO CDP. Retrieves a list of audiences that are configured in the Piwik PRO Customer Data Platform for the specified app.
Update an existing audience in Piwik PRO CDP using JSON attributes. ⚠️ IMPORTANT: Before updating audiences * First discover available parameters using tools_parameters_get("audiences_update") tool. * Only then use activations_attributes_list() to get the correct column_id, value_selectors, and value_format for new conditions. NOTE: While the underlying API requires all fields, you can provide only the fields you want to change. The tool will automatically fetch current values and merge them with your updates.
Delete a container setting for an app, reverting it to the organization/default value.
Change an app's container (tracking container) settings. Use this tool to enable, disable, turn on/off, or set any of an app's container settings. It covers requests such as "enable automatic scroll tracking", "turn off SPA tracking", "enable/disable FPC", and "set the tracking domain / static resources domain / UI & APIs domain / container JS path / tracking script path / tracking endpoint path". Settings not listed in the request are left unchanged.
Get installation code for an app.
Get container settings for an app.
Delete an app tracker setting, reverting it to the global default.
Get tracker settings for a specific app (including resolved global defaults).
Update tracker settings for a specific app.
Get global tracker settings.
Update global tracker settings using JSON attributes. This tool uses a simplified interface with a single `attributes` parameter. Use tools_parameters_get("tracker_settings_global_update") to get the complete JSON schema with all available fields, types, and validation rules.
Descriptions lack actionable context on when to use each tool and what they return. Most descriptions are under 100 characters and do not explain prerequisites, return structure, or when to use the tool vs. similar ones. E.g., 'Get detailed information about a specific app' (apps_get) does not tell the agent what fields are returned or when to call it instead of apps_list.
No error handling guidance. Tool definitions do not specify what errors can occur, when they are retryable, or how to recover (e.g., 'app not found, try apps_list() to verify the app_id'). Agents will receive errors with no recovery path.
Destructive operations (container_settings_app_delete, tracker_settings_app_delete) lack confirmation or dry-run support. No pattern to prevent accidental deletion.
container_settings_app_update 'attributes' parameter description is verbose but does not enumerate valid setting_names or value types. Agents cannot know which settings exist or what values they accept without external documentation.
No pagination/limit guidance. Apps and audiences list tools accept limit and offset but no documentation on default/max values or total count. Lists could return unbounded results.
Audiences create and update tools include warnings ('IMPORTANT: Before creating/updating...') that reference external tools_parameters_get() and activations_attributes_list(). This defers critical schema discovery to runtime, violating the self-contained definition principle. Tool definitions should be complete without external tool calls.