products_list
List products and funnel/MMP event sources
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| channel_pid | No | ||
| connection_context | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | ||
| retryable | No | ||
| support_ref | No |
List products and funnel/MMP event sources
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| channel_pid | No | ||
| connection_context | No |
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | ||
| retryable | No | ||
| support_ref | No |
Changes observed during successful MCP inspections.
Output schema / then / properties / categoryAdded value: +{
+ "type": "string"
+}Output schema / then / properties / expectedAdded value: +{
+ "type": "boolean"
+}Output schema / then / properties / failure_kindAdded value: +{
+ "type": "string"
+}Output schema / then / properties / responsibility_hintAdded value: +{
+ "type": "string"
+}Output schema / then / properties / routeAdded value: +{
+ "type": "string"
+}Output schema / then / properties / user_visibleAdded value: +{
+ "type": "boolean"
+}Input schema / properties / connection_contextAdded value: +{
+ "pattern": "^mctx_v1_[0-9a-f]{64}$",
+ "type": "string"
+}Output schema / else / properties / meta / properties / metric_completenessAdded value: +{
+ "additionalProperties": {
+ "properties": {
+ "complete": {
+ "type": "boolean"
+ },
+ "excluded_rows": {
+ "type": "integer"
+ },
+ "reason": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "type": "object"
+}Output schema / else / properties / workspace_refAdded value: +{
+ "description": "Opaque workspace comparison hint; not an authorization credential.",
+ "pattern": "^workspace_[0-9a-f]{32}$",
+ "type": "string"
+}Output schema / else / properties / meta / properties / data_freshness / properties / last_pull_scopeAdded value: +{
+ "const": "workspace"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, closed-world), but the description adds nothing beyond that—no mention of pagination behavior despite limit/cursor params, no scoping context, no relationship to funnel/MMP sources. With annotations present the bar is lower, but there's still little added value.
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 short phrase with no waste. Appropriately sized, though it is so terse it omits necessary 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?
Four undocumented parameters at 0% coverage, pagination via cursor, a channel_pid filter, and a connection_context token all go unexplained. Funnel/MMP relationship is ambiguous. Even with an output schema, the input semantics are far under-specified.
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%, so the description must carry the burden. It doesn't explain limit hard cap, cursor semantics, what channel_pid filters, or what the connection_context pattern means. The funnel/MMP mention hints at channel_pid relevance but adds no clarifying 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 verb 'List' and resource 'products' are clear, but the addition of 'funnel/MMP event sources' muddies whether it lists products, event sources, or both. It also doesn't differentiate from siblings like setup_analyze_products or mmp_get_state.
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 indication of when to use this versus alternatives such as setup_analyze_products or the mmp_* tools. The agent is left to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.