Matomo-MCP
matomo-mcp
Matomo Analytics に話しかけよう。 Claude、Cursor、VS Code、または任意の MCP クライアントから。
厳選された 15 の読み取り専用アナリティクスツール + 全 API への脱出ハッチ。シングルバイナリ、即起動、コンテキストに優しい。
クイックスタート · クライアント接続 · ツール · 設定 · FAQ
You ▸ How was traffic yesterday, and where did it come from?
Claude ▸ Yesterday you had 14,472 visits (11,416 unique visitors, 66% bounce rate).
Top acquisition channels:
1. Organic search — 6,120 visits (Google 92%)
2. Direct — 4,890 visits
3. AI assistants — 1,204 visits (↑ 31% vs. last week)
Want me to break down which landing pages converted best?Matomo ダッシュボードが答えられるすべての質問に、あなたの AI アシスタントも今すぐ答えられます。フォローアップ、比較、「なぜ?」も含めて。
✨ matomo-mcp の特長
🎯 厳選されたツール | 実際のアナリティクス質問に基づいて手作りされた 15 のツール。モデルのコンテキストを圧迫しツール選択を劣化させる 70 以上の自動生成 API ミラーではありません。 |
⚡ 即起動 | イントロスペクションの往復なし。静的バイナリ 1 つで、Node も Python もランタイムも不要。ミリ秒で起動します。 |
🔒 デフォルトで安全 | 読み取り専用のレポートツール。トークンは POST でのみ送信(URL/ログには決して含まれない)、すべてのエラーから編集されます。TLS 検証はデフォルトでオン。 |
🧠 コンテキストに優しい | すべてのレポートに行数制限と、実行可能なガイダンス付きの厳格なレスポンス予算。1 回のツール呼び出しでコンテキストウィンドウを吹き飛ばすことはありません。 |
📡 リアルタイム含む | ライブ訪問者カウンターと訪問ログ( |
🧰 決して閉じ込めない |
|
🔁 回復力 | 429/5xx/ネットワーク障害時のバックオフ付き自動リトライ。モデルが行動できるヒント付きの役立つエラーメッセージ。 |
Related MCP server: mcp-server-wazuh
🚀 クイックスタート
1. インストール
プリビルドバイナリ(Linux、macOS、Windows)— Releases から入手するか、次のコマンドで:
# Cargo
cargo install matomo-mcp
# From source
cargo install --git https://github.com/Liohtml/matomo-mcp
# Docker
docker pull ghcr.io/liohtml/matomo-mcp2. Matomo API トークンを取得
Matomo → 設定(⚙)→ 個人設定 → セキュリティ → 認証トークン → 新しいトークンを作成。 閲覧専用の権限で十分です。
3. 接続を確認
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --check✓ Connected — Matomo version 5.2.1
✓ Token grants access to 3 site(s):
#1 My Shop (https://shop.example.com)
#2 Blog (https://blog.example.com)
#3 Docs (https://docs.example.com)4. クライアントを接続 ⬇
🔌 クライアントを接続
claude mcp add matomo \
--env MATOMO_URL=https://your-matomo.example.com \
--env MATOMO_TOKEN=YOUR_TOKEN \
--env MATOMO_DEFAULT_SITE_ID=1 \
-- matomo-mcpclaude_desktop_config.json に追加(macOS: ~/Library/Application Support/Claude/、Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}.cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル):
{
"mcpServers": {
"matomo": {
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}.vscode/mcp.json:
{
"servers": {
"matomo": {
"type": "stdio",
"command": "matomo-mcp",
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "${input:matomo-token}",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
},
"inputs": [
{
"id": "matomo-token",
"type": "promptString",
"description": "Matomo API token",
"password": true
}
]
}stdio で MCP を話す任意のクライアントは、一般的な形で動作します:
{
"command": "matomo-mcp",
"args": [],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}{
"mcpServers": {
"matomo": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MATOMO_URL", "-e", "MATOMO_TOKEN", "-e", "MATOMO_DEFAULT_SITE_ID",
"ghcr.io/liohtml/matomo-mcp"
],
"env": {
"MATOMO_URL": "https://your-matomo.example.com",
"MATOMO_TOKEN": "YOUR_TOKEN",
"MATOMO_DEFAULT_SITE_ID": "1"
}
}
}
}サーバーを一度起動し(ワークステーション、LAN ボックス、またはコンテナ上)、任意の数の MCP クライアントを接続できます:
matomo-mcp --url https://your-matomo.example.com --token YOUR_TOKEN --http 127.0.0.1:8080クライアントは streamable HTTP トランスポートで http://127.0.0.1:8080/mcp に接続します。例:
claude mcp add --transport http matomo http://127.0.0.1:8080/mcp[!WARNING] HTTP エンドポイントには組み込みの認証がありません。
127.0.0.1にバインドしたままにするか、認証付きリバースプロキシ(またはファイアウォール)を前に置いてから、localhost の外に公開してください。
[!TIP]
MATOMO_DEFAULT_SITE_IDを設定すると、モデルがどのサイトを指しているか尋ねる必要がなくなります。トークンがない場合: パブリックデモで試せます:--url https://demo.matomo.cloud --default-site-id 1(トークン不要)。
🧭 ツール
ツール | 答えられる質問の例 |
| 「どのサイトを追跡していますか?」 |
| 「先週のトラフィックはどのくらいでしたか?」 |
| 「トップページは? 離脱が多いのはどこ?」 |
| 「訪問者はどこから来ますか? どのキャンペーンが効果的? AI アシスタントは何を送ってきますか?」 |
| 「コンフィギュレーターはどのくらい開かれましたか?」 |
| 「ゴールごとのコンバージョン率は?」 |
| 「今月の売上は? ベストセラー商品は?」 |
| 「訪問者はどの国/都市から来ますか?」 |
| 「モバイル vs デスクトップ? どのブラウザ?」 |
| 「1 日のうち、または 1 週間のうち、いつ訪問がありますか?」 |
| 「サイト内で何を検索していますか? 何も見つからないのは?」 |
| 「今サイトにいるのは誰?」 |
| 「どのページの読み込みが遅いですか?」 |
| 「どのデプロイやキャンペーン開始がトラフィックスパイクと一致しますか?」 |
| その他すべて — ファネル、ヒートマップ、カスタムディメンション、Reporting API の任意の |
すべてのツールは site_id、period(day/week/month/year/range)、date(today、yesterday、2026-07-01、last30、または start,end の範囲)、オプションの segment(例: deviceType==mobile;country==DE)、および行 limit を受け付けます。
試してみるプロンプト
「今週のトラフィックを先週と比較して、何が変わったか、なぜかを教えて」
「今月のコンバージョン上位 10 ランディングページを直帰率付きで」
「ChatGPT や Perplexity からのトラフィックはありますか? 3 か月のトレンド」
「結果を返さない内部検索はどれ? 作成すべきコンテンツを提案して」
「訪問者ログに今何か異常はありますか?」
⚙️ 設定
フラグ | 環境変数 | デフォルト | 説明 |
|
| — | Matomo インスタンスの URL(サブディレクトリインストール |
|
| — | API トークン( |
|
| — | モデルが指定しない場合に使用するサイト |
|
| — | 追加の HTTP ヘッダー( |
|
|
| リクエストごとのタイムアウト |
|
|
| 切り詰め前のレスポンス予算 |
|
| — | stdio の代わりにこのアドレスで streamable HTTP 経由で MCP を提供(エンドポイント: |
|
|
| 自己署名 TLS 証明書を受け入れる(明示的なオプトイン) |
| — | — | URL + トークン + サイトアクセスを検証して終了 |
🆚 FGRibreau/mcp-matomo との違いは?
mcp-matomo(このプロジェクトのインスピレーション元です。ありがとうございます!🙏)は、起動時に Matomo インスタンスをイントロスペクトし、API メソッドごとに 1 つの MCP ツールを生成します。matomo-mcp は逆のアプローチを取ります:
matomo-mcp | mcp-matomo | |
ツールセット | 厳選された 15 ツール + 脱出ハッチ | ~70 以上の生成ツール |
モデルコンテキストコスト | 小さく安定 | 大きく、インスタンス依存 |
パラメータ型 | 正確で手書きの enum/デフォルト | パラメータ名から推測 |
起動 | 即時(ネットワーク I/O なし) | イントロスペクションの往復(またはキャッシュされたスペックファイル) |
TLS 検証 | デフォルトでオン | イントロスペクションでは無効 |
サブディレクトリインストール | ✅ | パスが上書きされる |
レスポンスサイズガード | 行制限 + 厳格な予算 | — |
一時エラー時のリトライ | ✅ | — |
リアルタイム(Live)ツール | ✅ | —(レポートメタデータの一部ではない) |
すべての API メソッドを個別のツールとして使いたい場合は mcp-matomo を。モデルが正しいツールを確実に選び、コンテキストを決して溢れさせたくない場合は matomo-mcp を。
🩺 トラブルシューティング
--default-site-id 1 を渡すか(推奨)、モデルに先に matomo_list_sites を呼び出させてください。
matomo-mcp --url ... --token ... --check を実行してください。失敗する場合は、トークンを再生成し(設定 → 個人設定 → セキュリティ)、サイトに対して少なくとも閲覧権限があることを確認してください。
MATOMO_URL は Matomo のルート(index.php を含むフォルダ)を指している必要があります。https://example.com/matomo/index.php の場合は、https://example.com/matomo/ を使用してください。
バイパス用ヘッダーを注入してください: --header "CF-Access-Client-Id:..." --header "CF-Access-Client-Secret:..."(または MATOMO_EXTRA_HEADERS 経由)。
それはコンテキストガードが正常に機能しているためです。取得する行数を減らすか、日付範囲を短くするか、--max-response-chars を引き上げてください。
🗺️ ロードマップ
Streamable HTTP トランスポート(
--http、一度ホストすれば複数のクライアントが接続可能)matomo_annotations— デプロイマーカーとトラフィックの読み取り・関連付けマルチインスタンス対応(1つのサーバーで複数の Matomo インストールを管理)
Homebrew tap と winget マニフェスト
MCP レジストリ掲載(
server.jsonによる公式レジストリ、Glama)
これらの機能を早く使いたいですか? Issue を開く か、PR を送ってください。CONTRIBUTING.md を参照してください。
🛠️ 開発
cargo test # 37 tests, fully offline (wiremock)
cargo clippy --all-targets -- -D warnings
cargo run -- --url https://demo.matomo.cloud --default-site-id 1 --checkアーキテクチャと設計上の決定: docs/ARCHITECTURE.md。
📄 ライセンスとクレジット
MIT。Matomo とは提携・承認関係にありません。Matomo は InnoCraft Ltd. の登録商標です。
rmcp(公式 Rust MCP SDK)で構築されています。FGRibreau/mcp-matomo に触発されました。
MCP レジストリ名:
mcp-name: io.github.Liohtml/matomo-mcp
matomo-mcp がダッシュボードを開く手間を省いてくれたなら、⭐ が他の人の発見の助けになります。
Available Tools
15 toolsmatomo_annotationsAnnotationsARead-only
Annotations placed on the Matomo timeline (deploy markers, campaign launches, notes) for a date range — correlate traffic changes with what happened when. Defaults to the last 30 days.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date or range to fetch annotations for: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last30'/'last90', or 'YYYY-MM-DD,YYYY-MM-DD'. | last30 |
| period | No | Aggregation period for the report. | day |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals safe operation. The description adds the default behavior ('Defaults to the last 30 days') and clarifies the read-only nature by describing a fetch operation. No contradictions or omissions of critical behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and well-structured, efficiently conveying the purpose, context, and default behavior without unnecessary detail.
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 provides enough context for a read-only query tool: it explains what it does, why it's useful, and the default behavior. It does not mention output format, but no output schema is defined, so that omission is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides comprehensive descriptions for all three parameters (date, period, site_id) with high coverage. The tool description adds minimal extra meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches annotations from Matomo's timeline and explains its purpose (correlating traffic changes with events). It distinguishes itself from sibling reporting tools by focusing specifically on annotations.
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 indicates when to use the tool (when needing to understand traffic changes via annotations) and notes the default date range. It does not explicitly contrast with sibling tools, but the purpose statement implies the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_apiRaw Reporting APIA
Escape hatch: call ANY Matomo Reporting API method directly. Prefer the dedicated matomo_* tools; use this for reports they don't cover (custom dimensions, funnels, heatmaps, segment management, ...). Discover available methods with method='API.getReportMetadata'.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | API method as 'Module.action', e.g. 'VisitFrequency.get' or 'API.getReportMetadata'. | |
| params | No | Query parameters using Matomo's native names, e.g. {"idSite": 1, "period": "day", "date": "yesterday", "filter_limit": 20}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations have readOnlyHint=false (mutation not specified), but the description itself warns it's an escape hatch for any method, implying raw access without checking safety. It adds context beyond annotations by clarifying scope ('ANY Matomo Reporting API method'), but it doesn't disclose behavioral traits like error handling, potential for side effects (some methods may write or manage segments), or rate limits. Since the openWorldHint=false and readOnlyHint=false are provided, the description carries some burden but doesn't fully address behavioral transparency beyond scope. This is a 3 because it adds useful scope context but omits operational traits like error handling or side-effect risk.
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?
Three sentences, front-loaded with the core purpose, then usage guidance, then discovery tip. Every sentence earns its place; zero waste. This matches the high calibration example's 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?
The tool is complex (escape hatch for any method), but the description gives purpose, context, and discovery method. No output schema is present, but the tool returns arbitrary report data, so a detailed return description isn't feasible. Given the complexity, the description is adequate but could mention error handling or response format (e.g., JSON structure) to be fully complete; still, it's strong for a raw API wrapper.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both `method` and `params` are described in the input schema (e.g., format examples). The description adds a bit of context for discovery (method='API.getReportMetadata'), but it doesn't add meaning beyond the schema for the parameters themselves. Baseline of 3 is appropriate since the schema does the heavy lifting, and the description adds one useful example.
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 calls any Matomo Reporting API method directly, functioning as an escape hatch for the dedicated matomo_* tools. It uses specific verbs ('escape hatch', 'call ANY', 'Discover') and explicitly distinguishes itself from siblings by listing examples of what dedicated tools don't cover (custom dimensions, funnels, heatmaps, segment management). This exceeds the mid-range calibration by naming an alternative method for discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use guidance: 'Prefer the dedicated matomo_* tools; use this for reports they don't cover' and gives a concrete discovery method ('API.getReportMetadata'). This matches the high calibration example (get_calls) which named an alternative tool for filtering; here it names both the preferred alternatives and the fallback context, which is even stronger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_devicesDevices & TechnologyBRead-only
Devices and technology used by visitors: device types (desktop, mobile, tablet), brands, models, browsers, browser versions, operating systems, and screen resolutions.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. | |
| dimension | No | Which device/technology dimension to report on. | device_type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the agent knows it's a safe read operation. The description adds the set of available dimensions (e.g., devices, brands, browsers), which is useful but does not go further to explain output format, pagination, or any side effects. This meets the baseline given the 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 a single, compact sentence that front-loads the purpose and lists key dimensions. There is zero redundant text, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a reporting tool with a well-described schema and no output schema, the description is adequately complete. It covers the core dimensions and works with the schema's parameter details. It lacks an explicit note about output aggregations, but given the tool's simplicity and that all parameters are documented, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for every parameter, so the baseline is 3. The description reinforces the dimension choices (matching the enum) but doesn't add substantive new meaning beyond what the schema already provides.
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 reports on visitor devices and technology, enumerating specific dimensions such as device types, brands, browsers, and OS. It distinguishes itself by focusing on device/tech metrics, though it doesn't explicitly contrast with sibling tools like matomo_visits_summary.
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 simply lists what it reports; there is no mention of scenarios, exclusions, or recommendations such as 'use for device breakdowns' or 'prefer this for technology analysis'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_ecommerceE-commerceARead-only
E-commerce performance: revenue/order overview, and best-selling products by product name, SKU, or category.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| report | No | Which e-commerce report to fetch. | overview |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the description doesn't need to restate that. The description adds content specifics (revenue/order overview, best-selling products by product name, SKU, or category), which is useful beyond the schema's enum values. It doesn't contradict annotations, and it doesn't mention any side effects or limitations, but that's acceptable given the read-only hint.
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 that front-loads the core purpose. Every word adds value without redundancy or fluff.
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 readOnlyHint annotation and full schema coverage, the description is adequate. It explains what the tool returns (revenue/order overview and best-selling products) but doesn't mention any special behaviors like date filtering or segment support, though these are covered by parameters. The lack of an output schema means the agent must infer return format, but the description gives a reasonable overview. Overall, it's sufficient for a read-only reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds minimal extra semantics beyond restating the report types (overview, products, skus, categories) which are already in the 'report' enum. Thus, it meets the baseline of 3 for full coverage but doesn't add significant 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 clearly states the tool's function: 'E-commerce performance: revenue/order overview, and best-selling products by product name, SKU, or category.' This specifies the resource (e-commerce performance) and the scope (revenue/orders, products, SKUs, categories), and distinguishes it from siblings like matomo_pages or matomo_goals by focusing on e-commerce-specific metrics.
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 when to use (for e-commerce performance data) but does not explicitly contrast with alternatives or provide exclusions. It doesn't say 'use this for e-commerce analytics, use matomo_goals for goals' etc. The clear purpose gives context, but no explicit guidance on 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.
matomo_eventsEventsARead-only
Custom event tracking reports (clicks, video plays, form interactions, ...), grouped by event category, action, or name.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. | |
| group_by | No | How to group the tracked events. | categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description only needs to add contextual behavior. It adds examples of event types and grouping options, which is useful, but does not describe return format, pagination, or any caveats. The added value is moderate but not extensive.
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 sentence that is front-loaded with the core purpose and uses ellipsis to keep it concise. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and readOnly annotation, the description covers the core purpose. It does not describe the return structure, but for a simple read-only report tool with strong schema support, this is adequate. Slightly more detail on the response format would push it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for all 6 parameters. The tool description adds no extra parameter details beyond echoing the grouping concept. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'custom event tracking reports' with specific examples (clicks, video plays, form interactions) and mentions grouping by category/action/name. This distinguishes it from sibling report tools like pages, referrers, and goals.
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 the tool is for event tracking reports, but provides no explicit when-to-use guidance or exclusions. It does not mention alternatives or when not to use this tool, which would be helpful given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_geoVisitor LocationsARead-only
Visitor locations: visits broken down by country, continent, region, or city.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| level | No | Geographic granularity. | country |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, meaning the tool is read-only and not open-world. The description does not contradict these and adds only the breakdown dimensions; it does not add extra behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence. It avoids fluff and repeats only useful context from the title. The breakdown levels are listed compactly, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema and read-only annotations, the description sufficiently completes the tool's context for a straightforward reporting task. It lacks an explicit mention of what metrics are returned (e.g., number of visits, percentages), which is minor because the word 'visits' already conveys the core metric.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all six parameters individually described in the input schema. The description itself contributes no additional parameter insight, so it relies entirely on the structured schema, which is already clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's role: 'visits broken down by country, continent, region, or city' – a specific resource (visitor locations) and breakdown dimensions. This differentiates it from sibling tools like matomo_visits_summary and matomo_pages, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose, but there is no explicit statement of when to use this tool vs alternatives, nor any mention of when to choose another sibling. The parameter description for site_id suggests calling matomo_list_sites first, but the main description lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_goalsGoalsARead-only
Goal conversions: overall conversion counts, rates and revenue (report=conversions), or the list of configured goals with their IDs (report=list).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| period | No | Aggregation period for the report. | day |
| report | No | Conversion metrics or the list of configured goals. | conversions |
| goal_id | No | Optional numeric goal ID to restrict conversion metrics to one goal (find IDs via report=list). | |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is true and the description doesn't contradict it, but the description adds minimal behavioral detail beyond the annotation. It doesn't mention potential side effects (none expected) or data access implications, but for a read-only report tool, the annotation suffices.
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, fitting the key info into a single sentence. It avoids fluff and focuses on the two report modes, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (a read-only report), the description covers the essential functionality and the main parameter behavior. It doesn't explain return formats or pagination, but the schema and sibling context imply a standard Matomo API response, so completeness is adequate.
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?
All six parameters have schema descriptions that cover their meaning and defaults. The description reinforces the 'report' parameter's two modes, adding clarity. The descriptions for date, period, and segment are standard and sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: reporting goal conversions or listing goals. It distinguishes between the two modes via the 'report' parameter, making the purpose specific. It doesn't mention alternative tools, but the resource (goals) is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for goal-related analytics but doesn't explicitly state when to prefer this over sibling tools like matomo_pages or matomo_events. It lacks explicit guidance on when not to use it, though the purpose is clear enough for basic scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_list_sitesList SitesARead-only
List all websites in Matomo that this token can access, with their ID, name and main URL. Call this first whenever the site_id is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of rows to return (-1 for all rows). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=false already establish the read-only nature and scope. The description adds modest context about token-based access and the three returned fields, but little else about behavior or limitations.
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 short, front-loaded sentences convey the action, result contents, and usage guidance without unnecessary detail or repetition of schema metadata.
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 list tool with one optional parameter and no output schema, the description provides sufficient context: what it lists, what it returns, and when to call it. No critical gaps remain.
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 documents the only parameter (limit) with type, default, and description, achieving 100% coverage. The description does not add any additional parameter meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), identifies the resource ('all websites in Matomo'), and states the scope ('that this token can access') plus the returned fields (ID, name, main URL). This clearly distinguishes it from sibling reporting tools that operate on individual sites.
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 instruction 'Call this first whenever the site_id is unknown' gives explicit when-to-use guidance. However, it does not mention when not to use it or name alternative tools for known site_id scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_page_performancePage PerformanceBRead-only
Page load performance: average network, server, transfer, DOM processing and rendering times across pageviews.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a behavioral detail that the data is aggregated 'across pageviews', which goes beyond the read-only annotation. However, it does not disclose any side effects, rate limits, or other runtime behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately states the purpose and key outputs. It is concise, free of fluff, and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the metric types but leaves ambiguity about the output granularity (e.g., per-page vs. overall averages) and does not mention any grouping or filtering implications. Given the absence of an output schema, more explicit detail would improve 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 already provides exhaustive descriptions for all four parameters. The tool description does not add any further meaning or clarify parameter usage, so it adheres to the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates it provides page load performance metrics and lists the specific types of times (network, server, etc.). It distinguishes from sibling tools by focusing on performance, though it doesn't explicitly state an action like 'get' or 'retrieve'.
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 the sibling tools (e.g., 'pages' or 'visits_summary'). It fails to mention scenarios where this report is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_pagesPagesARead-only
Page-level analytics: most visited page URLs or titles, entry and exit pages, file downloads, and clicked outbound links. URLs are returned flattened (full paths), sorted by visits.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| report | No | Which page report to fetch. | page_urls |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, and the description adds useful behavioral context: URLs are returned flattened as full paths and sorted by visits. This goes beyond the annotation for report-specific behavior and avoids surprises.
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 comprises two sentences: the first front-loads the tool purpose and report list; the second covers output formatting. There is no filler, and each sentence contributes essential user 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 there is no output schema, the description still communicates the nature and shape of the returned data (page URLs/titles, entry/exit, downloads, outlinks, full paths, sorted by visits). It could go deeper into per-report row shapes, but the combination of schema descriptions and this context is sufficient for basic 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 schema describes 100% of parameters with defaults and enums. The description adds meaning by mapping report types to the output behavior (most visited URLs/titles, entry/exit pages, downloads, outlinks) and clarifying URL flattening and sort order, which improves parameter comprehension.
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 identifies the tool as returning page-level analytics reports and enumerates the specific report types (most visited URLs/titles, entry/exit pages, downloads, outbound links). It is distinct from siblings like matomo_visits_summary and matomo_referrers, though it lacks a strong imperative verb such as 'list' or 'get'.
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 says 'Page-level analytics reports' and lists what it covers, which gives context for when to use it. However, it does not explicitly mention when not to use it or point to alternatives like matomo_page_performance or matomo_visits_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_realtimeReal-Time VisitorsARead-only
Real-time analytics: live visitor/action/conversion counters for the last N minutes (report=counters), or a detailed log of the most recent individual visits (report=last_visits).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| report | No | Live counters or recent visit details. | counters |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. | |
| last_minutes | No | Time window in minutes for report=counters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds the two output modes and time-window behavior. It does not disclose response structure or potential data-delay caveats, but it does not contradict the 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 a single sentence, front-loaded with 'Real-time analytics', and efficiently separates the two report modes with a semicolon. Every phrase contributes useful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytics tool with no output schema, the description adequately describes both output families and the time-window parameter. It leaves exact return fields to inference, but the high-level output types are 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?
Schema description coverage is 100%, so the schema already documents all five parameters. The description reinforces the meaning of report and last_minutes but adds no new parameter syntax or format details 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 clearly identifies the tool as real-time analytics and specifies two distinct report modes: live counters and recent visit logs. This distinguishes it from the historical report siblings like matomo_visits_summary and matomo_pages.
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 establishes clear usage context through phrases like 'live', 'last N minutes', and 'most recent individual visits', implying use for real-time monitoring. However, it does not explicitly name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_referrersReferrersBRead-only
Where traffic comes from: channel overview (direct, search, websites, social, campaigns), referring websites, search engines and keywords, social networks, campaign performance, and AI assistants (Matomo 5.1+).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| report | No | Which referrer report to fetch. | overview |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral aspects beyond stating it provides data. However, the annotation indicates read-only, so no side effects are expected. The description itself does not add any 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, clear sentence that efficiently lists the types of referrer data available, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is concise but covers the main categories of referrer data. However, it does not mention any limitations, required permissions, or how the output is structured, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on the parameters beyond what is already in the schema. The schema descriptions cover each parameter, so the tool description adds no additional parameter semantics.
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 that the tool provides referrer traffic data, listing various types such as channel overview, search engines, etc., which gives a clear understanding of its purpose.
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 does not provide any guidance on when to use this tool versus alternative tools, nor does it mention any prerequisites or contexts where it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_site_searchSite SearchARead-only
Internal site-search analytics: what visitors searched for on the site, searches that returned no results, and search categories.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| limit | No | Maximum number of rows to return (-1 for all rows). | |
| period | No | Aggregation period for the report. | day |
| report | No | Which site-search report to fetch. | keywords |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, and the description is consistent with a read-only analytics operation. The description adds some context about what the tool reports but does not disclose behavioral traits like response shape or additional side effects. No contradiction with 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?
A single, focused sentence that is front-loaded with the tool's purpose and enumerates the three report types without redundancy. 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?
With strong annotations, a complete parameter schema including useful hints (e.g., call matomo_list_sites for unknown site_id), and no output schema, the description provides enough context for an agent to select and invoke the tool. It could go further in describing the return structure, but overall is quite 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?
All parameters have 100% schema coverage, so the baseline is 3. The description adds value by explaining the meaning of the report parameter's enum values (keywords, no_result_keywords, categories) in a way not present in the schema's terse 'Which site-search report to fetch' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb+resource structure: 'Internal site-search analytics' followed by the three report output types (searched terms, no-result searches, search categories). This clearly distinguishes it from sibling tools like matomo_pages or matomo_referrers, which cover different analytics areas.
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 the use case: site-search analytics for understanding visitor search behavior. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or reference any sibling tools. This is adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_visits_summaryVisits SummaryARead-only
Key traffic metrics for a site and period: visits, unique visitors, actions (pageviews), bounce rate, actions per visit, and average visit duration. The go-to tool for 'how much traffic did we get?'.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, closed read operation. The description adds value by disclosing the exact aggregate metrics returned, which is especially helpful since no output schema is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first compactly lists the metrics, and the second gives the canonical use case. It avoids repeating schema details and has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only summary tool, the description plus a fully described four-parameter schema is sufficient for an agent to select and invoke it correctly. The listed metrics compensate for the absent output schema, and the schema also covers site_id discovery via matomo_list_sites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already carries a good description including date syntax, period enum, segment syntax, and site_id lookup guidance. The tool description adds little parameter-level meaning beyond framing the metrics around a site and period, so it stays at the baseline.
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 explicitly says this tool returns key traffic metrics for a site and period, listing visits, unique visitors, actions, bounce rate, actions per visit, and average visit duration. It is unmistakably the traffic-summary tool and is differentiated from more specialized siblings like matomo_pages or matomo_referrers.
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 phrase "The go-to tool for 'how much traffic did we get?'" provides a clear, memorable use case for when to select this tool. It does not explicitly enumerate when to avoid it or name alternative tools, but the guidance is strong enough for typical traffic-summary questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matomo_visit_timesVisit TimesARead-only
When visitors come to the site: traffic by day of week, or by hour of day (server time or the visitor's local time).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the report: 'today', 'yesterday', 'YYYY-MM-DD', a rolling window like 'last7' or 'last30', or a range 'YYYY-MM-DD,YYYY-MM-DD' (combine with period=range). | yesterday |
| period | No | Aggregation period for the report. | day |
| segment | No | Optional Matomo segment filter, e.g. 'deviceType==mobile;country==DE'. See https://matomo.org/docs/segmentation/ for the syntax. | |
| site_id | Yes | Numeric Matomo site ID. If unknown, call matomo_list_sites first. | |
| dimension | No | Time dimension for the breakdown. | day_of_week |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds no additional behavioral details (e.g., pagination, data limits) beyond the annotation, so it neither enhances nor contradicts 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 concise, using a single sentence to convey the core functionality. It is well-structured and free of unnecessary detail or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema and annotations provide sufficient parameter and safety context, the description adequately completes the picture. It could mention the output format or typical use cases, but those are not essential for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions, so the description adds no new information about parameters. It briefly mentions 'day of week' and 'hour of day' which map to the dimension parameter, but all parameter meanings are already explicit in 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 clearly states the tool's function: reporting visit times broken down by day of week or hour of day, with server or local time. It is distinct from sibling tools like visits_summary or pages, which focus on different metrics.
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 for time-based traffic analysis but does not explicitly contrast with alternatives or state when to prefer it over other reports. It lacks guidance on selection scenarios.
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.
15 tool updates
v0.1.4- First observed
matomo_annotations - First observed
matomo_api - First observed
matomo_devices - First observed
matomo_ecommerce - First observed
matomo_events - First observed
matomo_geo - First observed
matomo_goals - First observed
matomo_list_sites - First observed
matomo_page_performance - First observed
matomo_pages - First observed
matomo_realtime - First observed
matomo_referrers - First observed
matomo_site_search - First observed
matomo_visit_times - First observed
matomo_visits_summary
TDQS
Scored across 15 tools
Each tool targets a distinct analytics dimension—visits, pages, referrers, events, goals, ecommerce, geo, devices, time, search, realtime, annotations—with no overlapping purposes. The api escape hatch is clearly set apart as a fallback for uncovered reports, eliminating boundary ambiguity.
All tools follow a uniform 'matomo_<descriptor>' pattern using lowercase snake_case with consistent noun-phrase naming. Every tool clearly indicates its domain (e.g., matomo_site_search, matomo_page_performance) without any verb-style mixes or camelCase deviations.
15 tools is at the upper end but perfectly sized for a comprehensive analytics server covering the full spectrum of Matomo reports—from aggregate visits to realtime and annotations—plus an API escape hatch. Each tool serves a distinct, necessary purpose without redundancy.
The surface covers all major analytics dimensions (traffic, content, referrers, events, goals, ecommerce, geography, technology, time, search, realtime, annotations) and includes an API tool to handle any custom or niche reports. This constitutes a complete lifecycle for web analytics queries with no obvious dead ends.
Maintenance
Related MCP Connectors
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Google Ads, Meta Ads, Google Analytics (GA4) & Search Console MCP server by Ryze AI
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceMCP Server for Nutanix Prism Central13MIT
- MIT
- AlicenseBqualityAmaintenanceMCP Server for Apache Pinot1449 PyPI17Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI models to interact with Matomo analytics through a complete MCP server implementation. Provides tools for retrieving analytics data, managing sites, and generating reports with zero configuration setup.-