AIOProductOS MCP
REMOTE · PLATFORM.AIOPRODUCTOS.COM · 2 COMPONENTS · SCANNED AUG 3
AIOProductOS: revenue, feedback, work and analytics on one customer record. 71 tools, 3 apps.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability90
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 10303 tokens (~139/item across 74 items; 71 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Tools include usage examples.Pass
Stability & Change Management26
- Stability check failed: schema churn in the 8 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · platform.aioproductos.com
claude mcp add --transport http com-aioproductos-mcp https://platform.aioproductos.com/api/mcp
[mcp_servers.com-aioproductos-mcp] url = "https://platform.aioproductos.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-aioproductos-mcp": {
"type": "remote",
"url": "https://platform.aioproductos.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-aioproductos-mcp --url https://platform.aioproductos.com/api/mcp --transport streamable-http
mcp_servers:
com-aioproductos-mcp:
url: "https://platform.aioproductos.com/api/mcp" {
"mcpServers": {
"com-aioproductos-mcp": {
"type": "http",
"url": "https://platform.aioproductos.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 22 to 26.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 19 to 22.
- 1 Aug 26 +4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
- Stability: 0.10 → fail ▼ security
- 29 Jul 26 +2
- The server now declares the “resources” capability functional
- First check of Schema quality: 100 functional
- First check of Capabilities: pass functional
- New resource “Board” functional
- New resource “Weekly Signal Memo” functional
- New resource “Revenue-Weighted Funnel” functional
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- Stability: unverified → 0.03 ▲ functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://platform.aioproductos.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=platform.aioproductos.com | CN=YR1,O=Let's Encrypt,C=US | 7 Jun 2026 | 5 Sept 2026 | RSA 2048 | SHA256-RSA | 5919ec95913b51dda57cbcd94912e247d76 |
| SANs: platform.aioproductos.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
DNSSEC insecure
Validation of platform.aioproductos.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| aioproductos.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="AIOProductOS MCP", resource_metadata="https://platform.aioproductos.com/.well-known/oauth-protected-resource"
Bearer realm="AIOProductOS MCP", resource_metadata="https://platform.aioproductos.com/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | geolocation=(), browsing-topics=() |
Protected resource metadata
| Document | https://platform.aioproductos.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://platform.aioproductos.com/api/mcp |
| Authorisation server | https://platform.aioproductos.com |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://platform.aioproductos.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://platform.aioproductos.com/api/mcp | HTTPS enforced | 308 | https://platform.aioproductos.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
add_note Add Internal Note ~108
Add an INTERNAL note to a support conversation — visible only to your team, never sent to the end-user — and return the result. A write. Use it to record context or hand off; resolve conversation_id via list_conversations. conversation_id and body are required. For a public reply use reply_to_conversation instead.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Internal note text, teammates-only (required). |
| conversation_id | string | yes | Conversation id to note on, from list_conversations (required). |
No output schema declared.
{"conversation_id":"conv_42","body":"Repro'd — linking to feat_sso."} analyze_funnel Conversion Funnel ~192
Build a conversion funnel from the product's own events: distinct users per step, step-to-step conversion %, and drop-off, evaluated in the exact order you pass. Needs product-analytics events flowing; returns empty counts when none match. Pass `steps` as an ordered list of 2+ event names — call it with NO steps first to get the menu of available event names rather than guessing them. Optional product_id and window_days (default 30, valid 1–365). Pairs with analyze_paths to see where the drop-offs go.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| steps | array | — | Ordered list of 2+ event names forming the funnel; omit to get the menu of available event names first. |
| window_days | number | — | Lookback window in days (optional; default 30). |
No output schema declared.
{"steps":["signup","activated","subscribed"]} analyze_nps NPS (revenue-weighted) ~183
NPS for the product: the standard −100…100 score AND revenue-weighted NPS (each respondent weighted by their account MRR), plus detractor accounts ranked by MRR-at-risk (highest first). Surfaces when your biggest customers are the unhappy ones even if the headline looks fine. Computed deterministically off survey responses inside `window_days` (default 90, valid 1–365); returns an empty result when none fall in the window. product_id optional (primary product when omitted). Quantify sentiment after get_product_brain, then dig into a detractor with get_customer_360.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| window_days | number | — | Lookback window in days (optional; default 90, i.e. the last quarter). |
No output schema declared.
{"window_days":90} analyze_nrr Net Revenue Retention ~153
Net Revenue Retention (revenue-weighted) next to logo retention (count-weighted), the expansion/contraction/churn split, and the accounts that lost the most MRR (ranked, highest loss first). The divergence is the point: '92% of logos but 78% of revenue' means a big account churned. Computed deterministically off subscription movements inside `window_days` (default 90, valid 1–365); empty when none fall in the window. Quantify revenue health, then follow the top-losing accounts into get_customer_360.
| Name | Type | Req | Description |
|---|---|---|---|
| window_days | number | — | Lookback window in days (optional; default 90, i.e. the last quarter). |
No output schema declared.
{"window_days":90} analyze_paths User Path Flow ~178
Trace what users do AFTER a start event — the journey flow (Sankey) from the product's own events. Returns the next-step transitions ranked by user count (most common first), empty when no events match. Pass `start` to anchor on an event, or omit for the most common start (call analyze_funnel with no steps to list the event names). Optional product_id and window_days (default 30, valid 1–365).
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| start | string | — | Event name to anchor the flow on (optional; the most common start event when omitted — analyze_funnel with no steps lists the event names). |
| window_days | number | — | Lookback window in days (optional; default 30). |
No output schema declared.
{"start":"signup"} cancel_booking Cancel Booking ~79
Cancel a scheduled booking (call/meeting) and return the result — the invitee is notified per the scheduling settings. A write. Resolve booking_id via list_bookings first; never guess it. To move it instead of cancelling, use reschedule_booking.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | Booking id to cancel, from list_bookings (required). |
No output schema declared.
{"booking_id":"book_7"} capture_insight Capture Insight ~220
Write a piece of customer feedback to the spine (the agent's own hand, not just reading) and return the created insight. Fires the same insight.created webhook a manual capture does — a real side-effect, so only capture genuine signal. Resolve account_id via get_customer_360 and feature_id via list_features and tie them when known; kind='opportunity' marks a prioritisable ask. Only body is required.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | — | Account id it's about, from get_customer_360 (optional). |
| body | string | yes | The verbatim feedback / insight text (the only required field). |
| feature_id | string | — | Feature id to link on the spine, from list_features or pm_meta (optional). |
| kind | string | — | 'insight' = raw signal; 'opportunity' = a prioritisable ask (optional). |
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| title | string | — | Short display title (optional). |
No output schema declared.
{"body":"Two enterprise accounts asked for SAML this week.","kind":"opportunity","account_id":"acct_acme","feature_id":"feat_sso"} comment_on_task Comment on Task ~113
Add a comment to a task, authored as the connected member, and return the created comment. Use to record progress, a decision, or a handoff — the comment is visible to the whole org, so keep it work-relevant. Resolve the task id first with get_task or list_tasks; both id and body are required.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Comment text; posted as the connected member and visible to the whole org. |
| id | string | yes | Task id, from list_tasks or get_task. |
No output schema declared.
{"id":"task_8f3a","body":"Shipped behind a flag — verifying in production."} create_decision Log Decision ~166
Log a decision and return it. status is 'decided' (default) | 'proposed' | 'revisit'; a 'decided' one stamps the decision time. Optionally weld it to a feature / release / objective via link_type + link_id (verified in-org). Only title is required.
| Name | Type | Req | Description |
|---|---|---|---|
| link_id | string | — | Id of the linked feature/release/objective, from list_features / list_releases / list_objectives (optional). |
| link_type | string | — | What it's linked to (optional; pair with link_id). |
| rationale | string | — | Why — the reasoning (optional). |
| status | string | — | Decision status (optional; default 'decided'). |
| title | string | yes | The decision in a line (required). |
No output schema declared.
{"title":"Ship SSO before mobile","rationale":"Enterprise deals need it","link_type":"feature","link_id":"feat_123"} create_experiment Create Experiment ~174
Create a PM experiment (a Build-Measure-Learn hypothesis) and return it. state is 'hypothesis' (default) | 'build' | 'measure' | 'learn'. Only title is required. This is the PM tracker list_experiments reads, not the analytics A/B engine.
| Name | Type | Req | Description |
|---|---|---|---|
| hypothesis | string | — | The full hypothesis (optional). |
| metric | string | — | The metric it moves, e.g. 'activation rate' (optional). |
| product_id | string | — | Product, from whoami (optional). |
| state | string | — | Build-Measure-Learn stage (optional; default 'hypothesis'). |
| target | string | — | Target change, e.g. '+5pp' (optional). |
| title | string | yes | Experiment title / the hypothesis in a line (required). |
No output schema declared.
{"title":"Shorter onboarding lifts activation","metric":"activation rate","target":"+5pp"} create_feature Create Feature ~205
Create a feature on the product spine and return it (id, key, name, status). The key is generated from the name; status starts 'active'. product_id defaults to the org's primary product when omitted (pass one from whoami for a multi-product org). Only name is required — create a feature here before linking tasks to it with create_task.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | What the feature is / why it matters (optional). |
| initiative_id | string | — | Initiative to align this feature under for line-of-sight, from list_initiatives (optional). |
| name | string | yes | Feature name (the only required field), e.g. 'SAML SSO'. |
| objective_id | string | — | Objective (goal) to align this feature under directly when there's no intermediate initiative, from list_objectives (optional). |
| product_id | string | — | Product to create it under, from whoami (optional; the org's primary product when omitted). |
No output schema declared.
{"name":"SAML SSO"} create_idea Create Idea ~165
Create an idea in the backlog and return it (starts with 0 votes, status 'new'). Link the evidence it came from with insight_id (from list_insights). product_id defaults to the primary product. Only title is required. Grow it with vote_idea, then promote_idea turns the winner into a roadmap feature.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | The idea in more detail (optional). |
| insight_id | string | — | Customer insight this idea came from, from list_insights (optional; welds evidence to the idea). |
| product_id | string | — | Product to scope it to, from whoami (optional; the primary product when omitted). |
| title | string | yes | Idea title (the only required field), e.g. 'Bulk-edit tasks'. |
No output schema declared.
{"title":"Bulk-edit tasks","body":"Several accounts asked to change status on many tasks at once."} create_initiative Create Initiative ~243
Create an initiative — a strategic effort that groups features and rolls up to a goal — and return it. Link it to a goal with objective_id (from list_objectives) to build line-of-sight. status ∈ planned|active|paused|done|abandoned (default planned); timeframe is free text ('H2 2026'). product_id defaults to the primary product. Only name is required. Then align features to it via create_feature / update_feature (initiative_id).
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | What the initiative is / why it matters (optional). |
| name | string | yes | Initiative name (the only required field), e.g. 'Win enterprise'. |
| objective_id | string | — | Goal this rolls up to, from list_objectives (optional; builds line-of-sight). |
| product_id | string | — | Product to scope it to, from whoami (optional; the primary product when omitted). |
| status | string | — | Lifecycle status (optional; default 'planned'). |
| timeframe | string | — | Free-text timeframe, e.g. 'Q3 2026' or 'H2 2026' (optional). |
No output schema declared.
{"name":"Win enterprise","objective_id":"obj_123","timeframe":"H2 2026"} create_objective Create Objective (OKR) ~194
Create an objective, optionally with key results, and return it. period is free text (e.g. 'Q3 2026'); product_id and parent_id (a parent objective) are optional and verified in-org. Each key result takes name + optional unit / start_value / target_value. Only name is required.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Context for the objective (optional). |
| key_results | array | — | Key results to attach (optional; up to 10). |
| name | string | yes | Objective name (the only required field), e.g. 'Reach $50k MRR'. |
| parent_id | string | — | Parent objective id to nest under, from list_objectives (optional). |
| period | string | — | Free-text period, e.g. 'Q3 2026' (optional). |
| product_id | string | — | Product to scope it to, from whoami (optional). |
No output schema declared.
{"name":"Reach $50k MRR","period":"Q3 2026","key_results":[{"name":"MRR","target_value":50000,"unit":"USD"}]} create_page Create Page ~166
Create a Page (in-product doc / PRD on the spine) and return it (id, title). `body` is plain text — blank-line-separated blocks become paragraphs; omit it for a blank page. title defaults to 'Untitled'. product_id / parent_id (a parent page) are optional and verified in-org.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | Page content as plain text; blank lines separate paragraphs (optional). |
| icon | string | — | An emoji icon for the page (optional). |
| parent_id | string | — | Parent page id to nest under, from list_pages (optional). |
| product_id | string | — | Product to scope it to, from whoami (optional). |
| title | string | — | Page title (optional; 'Untitled' when omitted). |
No output schema declared.
{"title":"PRD: SSO","body":"Problem\n\nUsers can't self-serve SAML today."} create_release Create Release ~129
Create a release and return it (id, version, changelog, released_at). Omit released_at for an unreleased/draft entry. product_id defaults to the org's primary product. Only version is required.
| Name | Type | Req | Description |
|---|---|---|---|
| changelog | string | — | What shipped (optional). |
| product_id | string | — | Product, from whoami (optional; the primary product when omitted). |
| released_at | string | — | Ship time, ISO 8601 (optional; omit for a draft). |
| version | string | yes | Version string (required), e.g. 'v2.4.0'. |
No output schema declared.
{"version":"v2.4.0","changelog":"SSO + faster board","released_at":"2026-07-15T00:00:00Z"} create_sprint Create Sprint ~174
Create a sprint and return it (id, name, goal, state, dates). state is 'future' (default) or 'active'; start_date / end_date are optional ISO 8601. Only name is required. Schedule tasks into it by passing the returned sprint id as sprint_id on create_task / update_task.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | — | End, ISO 8601 (optional). |
| goal | string | — | The sprint goal (optional). |
| name | string | yes | Sprint name (the only required field), e.g. 'Sprint 12'. |
| start_date | string | — | Start, ISO 8601 e.g. '2026-07-15T00:00:00Z' (optional). |
| state | string | — | Lifecycle state (optional; default 'future'). |
No output schema declared.
{"name":"Sprint 12","goal":"Ship SSO","state":"active"} create_task Create Task ~257
Create a task and return the created task. list_id defaults to the org's first list when omitted; feature_id / insight_id link it to the spine and sprint_id schedules it into a sprint. Resolve list/status/feature/insight/member ids via pm_meta and sprint_id via list_sprints — never guess them. Only title is required.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_member_ids | array | — | Member ids to assign, from pm_meta (optional). |
| description | string | — | Task body / details (optional). |
| feature_id | string | — | Feature id to link on the spine, from pm_meta or list_features (optional). |
| insight_id | string | — | Insight id to link on the spine, from list_insights (optional). |
| list_id | string | — | List to create the task on; resolve the id via pm_meta (optional; the org's first list when omitted). |
| priority | string | — | Priority level, urgent highest (optional). |
| sprint_id | string | — | Schedule into a sprint (optional; resolve the id via list_sprints). |
| status_id | string | — | Initial status; resolve the id via pm_meta (optional). |
| title | string | yes | Task title (the only required field). |
No output schema declared.
{"title":"Fix SSO redirect loop","priority":"high","feature_id":"feat_sso"} delete_task Delete Task ~180
PERMANENTLY delete a task and return the deleted id. Irreversible — there is no undo. Cascades: the task's comments, assignees, tags, attachments, time entries, outcomes, events, relations, and its SUBTASKS are deleted with it; experiment/insight/meeting links to it are cleared. Resolve the id via list_tasks and confirm intent first — prefer update_task (e.g. move it to a done/archived status) when you only want it off the active board.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | string | yes | Safety gate — must be exactly "DELETE". Required so a bare task id can never trigger a permanent, cascading delete. Confirm with the human FIRST, in plain language naming the task, then pass it. |
| id | string | yes | Task id to permanently delete, from list_tasks (required). |
No output schema declared.
{"id":"task_123"} get_codebase_map Codebase Map ~142
The auto-generated codebase brain map for one product: a plain-language summary, the module/node/edge counts, when the map was last generated, and the labels of the modules it found. Read-only; returns the latest generated map, empty when none has been generated for the product yet. Use it to ground 'where in the code does X live?' questions and to see how the codebase splits into modules before discussing architecture or scoping engineering work. Optional product_id, from whoami; omit for the org's primary product.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
No output schema declared.
No examples provided.
get_conversation Read Support Conversation ~57
Read one support conversation: the visitor plus the full message thread, oldest first. Read-only. Resolve the conversation_id first with list_conversations — never guess it.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | yes | Conversation id, from list_conversations. |
No output schema declared.
{"conversation_id":"conv_42"} get_customer_360 Customer 360 ~123
Everything about ONE customer, resolved by id, email, domain, or company name: profile, subscription + MRR, how many users sit under the account, and their verbatim feedback. Read-only; returns the matched account, or an empty result when nothing matches the query. The money + people + voice join on one record — call it before answering anything about a specific account.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | The account to resolve: an account id, a user's email, a company domain (e.g. 'acme.com'), or a company name. |
No output schema declared.
{"query":"acme.com"} get_device_candidates Device-Graph Identity Candidates ~76
Clusters of ≥2 end_users seen on the same device: 'anon_bridge' (high confidence — an anonymous visitor later identified) or 'device_shared' (low confidence — review only). Read-only; returns the candidate clusters, empty when none are found. Use it to find merge targets, then act with merge_end_users.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_page Read Page ~53
Read one Page (doc / PRD) by id and return its full content. Read-only. Resolve the id first with list_pages — never guess it.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Page id, from list_pages. |
No output schema declared.
{"id":"page_12"} get_pm_playbook PM Playbook ~110
How to operate as a product manager on AIOProductOS. No arguments and no side effects — returns the same operating guide as plain text every call (deterministic): how to ground in the product brain, keep work welded to the spine (insight→feature→task→outcome), prioritise on evidence (affected accounts + MRR + reach), and what 'done' means. Call it FIRST, before planning or prioritising, to load the house rules the other tools assume.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_product_brain Product Brain Snapshot ~213
A grounded snapshot of the org's product so YOU can reason about it. Returns one JSON object with: revenue + top paying accounts (ranked by MRR), web + product analytics headline metrics, the feature list, recent verbatim customer signals (newest first), and open-work counts — each block empty when that source isn't flowing yet. The time-windowed sections (revenue, cost, web + product analytics, feature usage) honour `window` (7 | 30 | 90 days, default 30). Single call, no pagination. Start here to ground, then go deeper with the dedicated list_* reads and the analytics tools. Optional product_id (the org's primary product when omitted).
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| window | number | — | Time window in days for the revenue, cost, and analytics sections (optional; 7, 30, or 90; default 30). |
No output schema declared.
No examples provided.
get_retention Cohort Retention ~146
Weekly cohort retention for the product: users grouped by first-seen week (one row per cohort, newest last), with the share still active each subsequent week — a lower-triangular grid. Needs product-analytics events flowing; returns empty cohorts when the product has none. window_days default 56 = 8 weekly cohorts (min 7; roughly one extra cohort per added 7 days). product_id optional (primary product when omitted).
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; the org's primary product when omitted). |
| window_days | number | — | Lookback window in days (optional; default 56 = 8 weekly cohorts). |
No output schema declared.
{"window_days":56} get_roadmap_drift Roadmap Drift ~175
Planned vs shipped features over a window: a drift score (0-100, 100 = perfect alignment), counts (planned / shipped / on-time / slipped / unplanned / orphaned), median slip days, and the top slipped + unplanned ships. Deterministic, no LLM cost. window = week | month | quarter (default quarter); optional product_id. Read-only; returns the drift report, zeroed when nothing was planned or shipped in the window. Use it in planning reviews to check delivery against the roadmap, then open the slipped features with list_features.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id, from whoami (optional; spans all the org's products when omitted). |
| window | string | — | Lookback window to compare planned vs shipped over (optional; default quarter). |
No output schema declared.
{"window":"quarter"} get_task Get Task ~68
Get one task by id and return it with its full comments and assignees. Read-only. Resolve the id first with list_tasks — never guess it; pair with update_task or comment_on_task to act on what you read.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Task id, from list_tasks. |
No output schema declared.
{"id":"task_8f3a"} get_weekly_signal_memo Weekly Signal Memo ~215
The Weekly Product Signal Memo — the last 7 days of customer signal clustered into themes (insights grouped by feature, ranked by the revenue behind them) with verbatim quotes, week-over-week deltas (new / repeated / stronger / weaker), concluded experiments, and shipped releases. Deterministic — every count is off real rows, no fabricated quotes. Optional `week` (ISO 'YYYY-Www') for a past week; `generate=1` rebuilds + persists the current week now. Read-only apart from that rebuild; returns the persisted memo, empty when the requested week has none. Open a weekly review with it, then drill into a theme with list_insights.
| Name | Type | Req | Description |
|---|---|---|---|
| generate | string | — | Pass '1' to rebuild and persist the current week's memo now instead of reading the stored one (optional). |
| week | string | — | ISO week to fetch, format 'YYYY-Www' e.g. '2026-W27' (optional; the latest persisted week when omitted). |
No output schema declared.
No examples provided.
list_artifact_versions Artifact Versions ~168
Version history of an artifact's AI reviews (F5): every review run is a version with its score, model, cost, who/what generated it, and whether it's the current one. Read-only; returns the version list, empty when the artifact has never been reviewed. Use it to see how a feature/experiment/page's review changed over time and to pick the version_id to pass to revert_to_version. Takes the same target_id/target_type you'd pass to review_artifact.
| Name | Type | Req | Description |
|---|---|---|---|
| target_id | string | yes | Id of the reviewed feature/experiment/page — the same id passed to review_artifact. |
| target_type | string | yes | What kind of artifact target_id is: a feature (spec), an experiment (plan), or a page (doc/PRD). |
No output schema declared.
{"target_id":"feat_8f3a","target_type":"feature"} list_bookings List Bookings ~55
Upcoming confirmed bookings on the org's scheduling. Read-only; returns the bookings, empty when none are scheduled. Pass include='all' for full history.
| Name | Type | Req | Description |
|---|---|---|---|
| include | string | — | Pass 'all' for history (optional). |
No output schema declared.
No examples provided.
list_channels List Comms Channels ~51
List the team Comms channels the connected member belongs to (membership-scoped). Read-only; returns the member's channels, empty when they belong to none. Call read_channel with a channel_id to read one.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_conversations List Support Conversations ~108
List support-chat conversations in the inbox (open + snoozed by default; pass status='all' to include closed). Read-only; returns the matching conversations, empty when the inbox is clear. Optional product_id to scope to one product; open a full thread with get_conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
| status | string | — | Pass 'all' to include closed (optional). |
No output schema declared.
No examples provided.
list_decisions List Decisions ~74
List the org's logged decisions — title, rationale, status, and any linked feature/release/objective — newest first. Returns an empty list when none. Optional status filter (decided | proposed | revisit). Resolve a decision id here before update_decision.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | — | Filter by status (optional). |
No output schema declared.
No examples provided.
list_experiments List Experiments ~144
List product experiments. Returns an array where each experiment carries its hypothesis, the metric it moves, the target, its current state, and — once concluded — the verdict and the decision that came out. Read-only; empty when none match. Use it to see what's being tested before proposing new work, and cite a concluded verdict as evidence when you create_task or review_artifact. Optional product_id (from whoami) and state filter.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
| state | string | — | Only experiments in this state, e.g. 'running' (optional). |
No output schema declared.
{"state":"running"} list_features List Features ~121
The product's feature catalogue with description, status, and when each was last touched — richer than pm_meta (which is just id+name for resolution). Read-only; returns the matching features, empty when none. Optional product_id and free-text q over name+key; use a feature id from here to link a task or insight on the spine.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
| q | string | — | Free-text search over feature name + key (optional). |
No output schema declared.
No examples provided.
list_ideas List Ideas ~154
List the org's ideas — the native, votable idea backlog — ranked by vote count (highest first). Each returns its title, status, vote count, author, and the feature it was promoted to (if any). status ∈ new|under_review|planned|promoted|declined (optional filter). Read-only; empty when none. Ideas are distinct from insights: an idea is a proposal a team votes on; an insight is a piece of customer evidence. Resolve an idea id here before update_idea / vote_idea / promote_idea.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Only ideas for this product, from whoami (optional). |
| status | string | — | Filter by status (optional). |
No output schema declared.
No examples provided.
list_identity_merges Identity Merge History ~133
List the org's end-user merge history. Returns an array of merge events, newest first, where each carries its event id, kind (merge or unmerge), the target and source end-user ids, the reason, who ran it, when, and — for merges — whether it has already been reverted. Read-only; empty when no merges have ever run. Use it to audit identity changes and to find the event id to pass to unmerge_end_users (only un-reverted merges can be undone).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max events to return (optional; default 50, max 200). |
No output schema declared.
No examples provided.
list_initiatives List Initiatives ~111
List the org's initiatives — the strategic layer between goals and features (goal → initiative → feature → epic → release). Each returns its name, status, timeframe, the objective it rolls up to (if any), and its linked-feature count. Read-only; empty when none. Resolve an initiative id here before create_feature / update_feature (initiative_id) or update_initiative.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Only initiatives for this product, from whoami (optional; all products when omitted). |
No output schema declared.
No examples provided.
list_insights Search Insights ~266
Search the captured insight backlog (voice of customer) — the read twin of capture_insight. Read-only; returns the matching insights newest first, empty when nothing matches. Filters: status, kind (insight|opportunity), feature_id, account_id, product_id, and free-text q over title+body; limit default 50, max 200. Use it to survey the evidence behind a feature or account before prioritising — resolve feature_id via list_features and account_id via get_customer_360.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | — | Only insights about this account; resolve the id via get_customer_360 (optional). |
| feature_id | string | — | Only insights linked to this feature; resolve the id via list_features or pm_meta (optional). |
| kind | string | — | 'insight' = raw signal; 'opportunity' = a prioritisable ask (optional). |
| limit | number | — | Max rows to return (optional; default 50, max 200). |
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
| q | string | — | Free-text search over title + body (optional). |
| status | string | — | Only insights in this workflow status (optional). |
No output schema declared.
{"q":"SSO","kind":"opportunity"} list_objectives List OKRs ~120
List the org's OKRs. Returns an array of objectives, each with its key results and live progress (0..1 between start and target), so you can prioritise toward what the team is actually trying to move. Read-only; empty when none are set. Read it before prioritising — tie proposed tasks to the objective they move, and cite the live progress when arguing priority. Optional product_id, from whoami.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
No output schema declared.
No examples provided.
list_pages List Pages ~120
List the in-product docs / PRDs (Pages) on the spine. Returns an array of pages with title + id only — no content, so it stays cheap to scan. Read-only; empty when none exist. Use it to find the page id, then read the full content with get_page; pair with review_artifact (target_type 'page') to critique a draft PRD. Optional product_id, from whoami.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
No output schema declared.
No examples provided.
list_releases List Releases ~115
List shipped releases. Returns an array, newest first, where each release carries its version, changelog, and ship date. Read-only; empty when nothing has shipped. Use it to answer 'what did we ship recently?', to ground a changelog or launch summary in real ship dates, and to see what went out before reading get_roadmap_drift. Optional product_id, from whoami.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | — | Product id to scope to, from whoami (optional; spans all products when omitted). |
No output schema declared.
No examples provided.
list_sprints List Sprints ~93
Sprints — name, goal, state, and window, newest first. Read-only; returns the matching sprints, empty when none exist. See the delivery cadence (active + recent), and resolve a sprint_id here before scheduling a task via create_task / update_task. Optional state filter (e.g. 'active').
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | — | Filter by state, e.g. 'active' (optional). |
No output schema declared.
{"state":"active"} list_tasks List Tasks ~128
List the org's board tasks and return the matches with their status, priority, assignees, and any linked feature/insight/sprint. Optionally narrow by status_id or list_id — resolve either via pm_meta. Read-only; returns an empty list when nothing matches. Use it to find a task id before get_task, update_task, or comment_on_task.
| Name | Type | Req | Description |
|---|---|---|---|
| list_id | string | — | Only tasks on this list; resolve the id via pm_meta (optional). |
| status_id | string | — | Only tasks in this status; resolve the id via pm_meta (optional). |
No output schema declared.
No examples provided.
merge_end_users Merge End-Users ~170
Merge source end-users into a target and return the merge result, including the merge event id (also recoverable later via list_identity_merges): all FK rows (events, insights, tasks, …) are re-pointed onto the target and the sources are tombstoned. A write; reversible for 30 days via unmerge_end_users. Get the candidate ids from get_device_candidates first — never guess which users to fold together. target_end_user_id and source_end_user_ids are required.
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | — | Why the merge (optional, recorded). |
| source_end_user_ids | array | yes | UUIDs of end-users to fold into the target, from get_device_candidates. |
| target_end_user_id | string | yes | UUID of the end-user to keep, from get_device_candidates. |
No output schema declared.
{"target_end_user_id":"eu_keep","source_end_user_ids":["eu_discard"],"reason":"device:anon_bridge"} pm_meta PM Metadata ~64
List the org's PM lists, statuses, members, and features as id+name pairs. Read-only; returns arrays for resolution only (list_features carries the richer catalogue). Call it to turn a name into an id before create_task / update_task — never guess an id.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
post_to_channel Post to Channel ~111
Post a message to a team Comms channel you belong to, as the connected member, and return the posted message. It appears live for teammates and is org-visible — keep it work-relevant. Resolve channel_id via list_channels; you can only post to channels you're a member of. Both channel_id and body are required.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Message text, visible to all channel members (required). |
| channel_id | string | yes | Channel id to post into, from list_channels (required). |
No output schema declared.
{"channel_id":"chan_123","body":"Shipped SSO — closing the epic."} promote_idea Promote Idea to Feature ~138
Promote an idea into a roadmap feature: creates a feature from the idea (name + description), stamps the idea 'promoted' and links it to the new feature, and returns the feature id. Idempotent — an already-promoted idea returns its existing feature. Resolve the id via list_ideas; only id is required. Align the new feature to an initiative/goal afterwards with update_feature.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Idea id to promote, from list_ideas (required). |
| product_id | string | — | Product to create the feature under, from whoami (optional; the idea's product or the primary when omitted). |
No output schema declared.
{"id":"idea_123"}