Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

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.

+10 this week 85 Trust /100
Trust breakdown (6 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http com-aioproductos-mcp https://platform.aioproductos.com/api/mcp
# ~/.codex/config.toml
[mcp_servers.com-aioproductos-mcp]
url = "https://platform.aioproductos.com/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-aioproductos-mcp": {
      "type": "remote",
      "url": "https://platform.aioproductos.com/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-aioproductos-mcp --url https://platform.aioproductos.com/api/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-aioproductos-mcp:
    url: "https://platform.aioproductos.com/api/mcp"
// mcp.json
{
  "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.

Changelog

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
Diagnostics

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
MCP tools — 71 exposed · ~10,199 tokens

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.

Tool Tokens
read_channel ~85

Read a Comms channel's recent messages, newest included (the connected member must be a channel member). Read-only; returns the messages, empty when the channel is silent. Resolve channel_id first with list_channels — never guess it. Optional limit.

NameTypeReqDescription
channel_idstringyesChannel id, from list_channels.
limitnumberMax messages to return (optional).

No output schema declared.

{"channel_id":"chan_eng","limit":50}
reply_in_channel ~124

Reply in a thread under a specific message in a Comms channel you belong to, as the connected member, and return the posted reply — org-visible to the channel. Resolve channel_id via list_channels and the parent message's id via read_channel. channel_id, parent_id, and body are all required.

NameTypeReqDescription
bodystringyesReply text, visible to all channel members (required).
channel_idstringyesChannel id, from list_channels (required).
parent_idstringyesParent message id to thread under, from read_channel (required).

No output schema declared.

{"channel_id":"chan_123","parent_id":"msg_9","body":"On it — PR up in an hour."}
reply_to_conversation ~125

Send a public reply to a support-inbox conversation, as the connected member, and return the result — it goes to the end-user on the conversation's channel. A write. Resolve conversation_id via list_conversations; read the thread with get_conversation before replying. conversation_id and body are required. For an internal-only note use add_note; to close it use resolve_conversation.

NameTypeReqDescription
bodystringyesPublic reply text sent to the end-user (required).
conversation_idstringyesConversation id to reply to, from list_conversations (required).

No output schema declared.

{"conversation_id":"conv_42","body":"Thanks for flagging — the export bug is fixed and live."}
reschedule_booking ~109

Reschedule a booking to a new start time (ISO 8601) and return the result — the invitee is notified. A write. Resolve booking_id via list_bookings first. booking_id and start are required.

NameTypeReqDescription
booking_idstringyesBooking id to move, from list_bookings (required).
startstringyesNew start time, ISO 8601 (e.g. 2026-07-20T15:00:00Z) (required).

No output schema declared.

{"booking_id":"book_7","start":"2026-07-20T15:00:00Z"}
resolve_conversation ~81

Mark a support-inbox conversation resolved (closed) and return the result. A write; idempotent — resolving an already-resolved conversation is a no-op. Resolve conversation_id via list_conversations first. Do it after you've replied and the ask is handled.

NameTypeReqDescription
conversation_idstringyesConversation id to resolve, from list_conversations (required).

No output schema declared.

{"conversation_id":"conv_42"}
revert_to_version ~134

Restore an earlier artifact version (F5) to current and return the now-current version: the existing current version is flipped to 'reverted' (kept for the learning signal) and the chosen version becomes current again. A write — not idempotent, since re-running reverts again. version_id is the version you want to RESTORE; get it from list_artifact_versions and never guess it. Optional reason is recorded.

NameTypeReqDescription
reasonstringWhy you're reverting (optional, recorded).
version_idstringyesId of the version to restore (make current), from list_artifact_versions.

No output schema declared.

{"version_id":"ver_8f3a","reason":"new review missed the metric finding"}
review_artifact ~255

Agent-as-critic over a DRAFT artifact (a feature spec, experiment plan, or page): checks it against a baseline PM bar — clear problem/hypothesis, a measurable success metric, evidence cited, risks named, a rollout/experiment plan — and returns structured findings (section, severity, a CONCRETE suggested fix, and a verbatim evidence quote) plus a 0-100 score. A write: each call re-runs the review and persists it as a new version (see list_artifact_versions). Resolve target_id first — via pm_meta or list_features for a feature, list_experiments for an experiment, list_pages for a page. One small LLM call; use it before sending a draft for sign-off.

NameTypeReqDescription
rubric_idstringScore against a specific rubric; omit to use the org's default rubric (or the built-in baseline).
target_idstringyesId of the feature/experiment/page to review — from pm_meta, list_features, list_experiments, or list_pages.
target_typestringyesWhat kind of artifact target_id is: a feature (spec), an experiment (plan), or a page (doc/PRD).

No output schema declared.

{"target_type":"feature","target_id":"feat_8f3a"}
unmerge_end_users ~135

Undo a previous end-user merge: reads the merge ledger and re-points every FK row (events, insights, tasks, …) back to its original end-user, un-tombstoning the folded-in sources. Safe to retry — a second undo of the same merge changes nothing (it fails with already_reverted). Use to correct a wrong identity merge (merges stay reversible for 30 days). Find the event_id with list_identity_merges (pick an un-reverted merge); event_id is required.

NameTypeReqDescription
event_idstringyesId of the merge event to undo, from list_identity_merges.

No output schema declared.

{"event_id":"uuid"}
update_decision ~150

Update a decision and return it; omitted fields unchanged. Moving status to 'decided' re-stamps the decision time. Re-link via link_type + link_id (verified in-org), or clear with nulls. Resolve the id via list_decisions; only id is required.

NameTypeReqDescription
idstringyesDecision id, from list_decisions (required).
link_idstringNew linked id, or null to unlink (optional).
link_typestringNew link target (optional).
rationalestringNew rationale; null clears it (optional).
statusstringNew status (optional).
titlestringNew title (optional).

No output schema declared.

{"id":"dec_123","status":"revisit"}
update_experiment ~199

Update a PM experiment — advance its state and record the outcome — and return it. state ∈ hypothesis|build|measure|learn; verdict ∈ validated|invalidated; decision ∈ pivot|persevere. Resolve the id via list_experiments; only id is required.

NameTypeReqDescription
decisionstringWhat you'll do next (optional).
hypothesisstringNew hypothesis; null clears it (optional).
idstringyesExperiment id, from list_experiments (required).
metricstringNew metric; null clears it (optional).
resultstringFree-text result / what you learned; null clears it (optional).
statestringBuild-Measure-Learn stage (optional).
targetstringNew target; null clears it (optional).
titlestringNew title (optional).
verdictstringOutcome (optional).

No output schema declared.

{"id":"exp_123","state":"learn","verdict":"validated","decision":"persevere"}
update_feature ~233

Update a feature and return it; omitted fields are unchanged. status is 'active' | 'discovered' | 'archived' (there is NO 'shipped' status — set mark_shipped:true to stamp its ship date instead). target_date is 'YYYY-MM-DD' (or null to clear). Resolve the id via list_features; only id is required.

NameTypeReqDescription
descriptionstringNew description; null clears it (optional).
idstringyesFeature id to update, from list_features (required).
initiative_idstringAlign under this initiative (line-of-sight), from list_initiatives; null unlinks (optional).
mark_shippedbooleantrue stamps the ship date now; false clears it (optional).
namestringNew name (optional).
objective_idstringAlign directly under this objective, from list_objectives; null unlinks (optional).
statusstringLifecycle status (optional).
target_datestringTarget ship date 'YYYY-MM-DD', or null to clear (optional).

No output schema declared.

{"id":"feat_123","mark_shipped":true}
update_idea ~139

Update an idea's title / body / status and return it; omitted fields unchanged. status ∈ new|under_review|planned|promoted|declined (set 'promoted' via promote_idea instead, so a feature is actually created). Resolve the id via list_ideas; only id is required.

NameTypeReqDescription
bodystringNew body; null clears it (optional).
idstringyesIdea id, from list_ideas (required).
statusstringNew status (optional; prefer promote_idea over setting 'promoted' by hand).
titlestringNew title (optional).

No output schema declared.

{"id":"idea_123","status":"under_review"}
update_initiative ~156

Update an initiative and return it; omitted fields are unchanged. Re-point it to a different goal with objective_id (null unlinks). status ∈ planned|active|paused|done|abandoned. Resolve the id via list_initiatives; only id is required.

NameTypeReqDescription
descriptionstringNew description; null clears it (optional).
idstringyesInitiative id, from list_initiatives (required).
namestringNew name (optional).
objective_idstringNew parent goal, from list_objectives; null unlinks (optional).
statusstringLifecycle status (optional).
timeframestringNew timeframe; null clears it (optional).

No output schema declared.

{"id":"init_123","status":"active"}
update_key_result ~147

Update a key result — most often to move current_value as progress lands — and return it; omitted fields are unchanged. Resolve the id via list_objectives (each objective carries its key_results with ids). Only id is required.

NameTypeReqDescription
current_valuenumberNew current value (optional).
idstringyesKey result id, from list_objectives (required).
namestringNew name (optional).
start_valuenumberNew starting baseline (optional).
target_valuenumberNew target value; null clears it (optional).
unitstringNew unit, e.g. 'USD'; null clears it (optional).

No output schema declared.

{"id":"kr_123","current_value":42000}
update_objective ~125

Update an objective's name / description / period and return it; omitted fields are unchanged (null clears description or period). Resolve the id via list_objectives; only id is required. To move a key result's value use update_key_result.

NameTypeReqDescription
descriptionstringNew description; null clears it (optional).
idstringyesObjective id, from list_objectives (required).
namestringNew name (optional).
periodstringNew period, e.g. 'Q4 2026'; null clears it (optional).

No output schema declared.

{"id":"obj_123","name":"Reach $75k MRR"}
update_page ~162

Update a Page — rename, set icon, replace the body, or archive/unarchive (archived:true hides it, false restores it). `body` is plain text (blank lines → paragraphs) and REPLACES the page content. Omitted fields are unchanged. Resolve the id via list_pages; only id is required.

NameTypeReqDescription
archivedbooleantrue archives (hides) the page; false restores it (optional).
bodystringNew content as plain text; blank lines separate paragraphs. REPLACES existing content (optional).
iconstringNew emoji icon; null clears it (optional).
idstringyesPage id, from list_pages (required).
titlestringNew title (optional).

No output schema declared.

{"id":"page_123","archived":true}
update_release ~113

Update a release and return it; omitted fields unchanged. Set released_at to ship it (or null to move it back to draft). Resolve the id via list_releases; only id is required.

NameTypeReqDescription
changelogstringNew changelog; null clears it (optional).
idstringyesRelease id, from list_releases (required).
released_atstringShip time ISO 8601, or null for draft (optional).
versionstringNew version (optional).

No output schema declared.

{"id":"rel_123","released_at":"2026-07-15T12:00:00Z"}
update_sprint ~170

Update a sprint and return it. state is 'future' | 'active' | 'closed' — moving to 'closed' stamps the completion time, reopening clears it. start_date / end_date are ISO 8601 (or null to clear). Resolve the id via list_sprints; only id is required.

NameTypeReqDescription
end_datestringEnd, ISO 8601, or null (optional).
goalstringNew goal; null clears it (optional).
idstringyesSprint id, from list_sprints (required).
namestringNew name (optional).
start_datestringStart, ISO 8601, or null (optional).
statestringLifecycle state; 'closed' completes it (optional).

No output schema declared.

{"id":"spr_123","state":"closed"}
update_task ~269

Update one or more of a task's fields and return the updated task; fields you omit are left unchanged (idempotent — re-sending the same values is a no-op). Pass sprint_id: null to remove the task from its sprint. Resolve ids first — the task via get_task/list_tasks, and status/feature/insight/sprint/member ids via pm_meta and the list_* reads — never guess them. Only id is required.

NameTypeReqDescription
assignee_member_idsarrayMember ids to assign, from pm_meta (optional).
descriptionstringNew body / details (optional).
feature_idstringFeature id to link on the spine, from pm_meta or list_features (optional).
idstringyesTask id, from list_tasks or get_task.
insight_idstringInsight id to link on the spine, from list_insights (optional).
prioritystringNew priority level, urgent highest (optional).
sprint_idstringMove into a sprint, or null to remove (optional; resolve via list_sprints).
status_idstringNew status; resolve the id via pm_meta (optional).
titlestringNew title (optional; omitted fields stay unchanged).

No output schema declared.

{"id":"task_8f3a","status_id":"status_in_progress"}
{"id":"task_8f3a","sprint_id":"sprint_2026_w27"}
vote_idea ~104

Cast (or remove) the connected member's vote on an idea and return the new vote state. Adds your vote by default; pass remove:true to take it back. One vote per member — voting twice is a no-op. Resolve the id via list_ideas; only id is required.

NameTypeReqDescription
idstringyesIdea id, from list_ideas (required).
removebooleantrue removes your vote instead of adding it (optional; default false).

No output schema declared.

{"id":"idea_123"}
whoami ~83

Show the connected AIOProductOS identity (org, member) AND the org's products (id, name, is_primary). Read-only; returns the identity plus the product list. For a multi-product org, call this first to get the product ids, then pass one as `product_id` to any product-scoped tool; omit product_id to use the primary.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.