Files
awoooi/docs/operations/mcp-control-plane-catalog.snapshot.json

682 lines
27 KiB
JSON

{
"schema_version": "mcp_control_plane_catalog_v1",
"generated_at": "2026-07-15T18:30:00+08:00",
"status": "source_inventory_ready_runtime_federation_partial",
"architecture": {
"decision": "single_control_plane_reuse_existing_gateway_registry_rag",
"page_route": "/automation/mcp",
"api_route": "/api/v1/mcp-control-plane/overview",
"gateway": "reuse_awoooi_mcp_gateway",
"provider_registry": "reuse_awoooi_provider_registry_and_mcp_tool_registry",
"rag": "reuse_postgresql_pgvector_with_redis_hot_cache",
"separate_gateway_allowed": false,
"separate_rag_database_allowed": false,
"reason": "A separate gateway or vector store would split grants, audit receipts, provenance, rollback state, and retrieval policy. The new page is a control surface over the existing planes, not a second runtime."
},
"source_policy": {
"source_control_authority": "gitea",
"github_allowed": false,
"github_actions_allowed": false,
"github_artifact_sources_allowed": false,
"catalogs_are_discovery_only": true,
"catalog_sources": [
{
"source_id": "smithery",
"url": "https://smithery.ai/servers",
"trust_role": "candidate_discovery_only"
},
{
"source_id": "mcp-so",
"url": "https://mcp.so/servers",
"trust_role": "candidate_discovery_only"
},
{
"source_id": "official-mcp-registry",
"url": "https://registry.modelcontextprotocol.io",
"trust_role": "metadata_and_version_discovery_not_artifact_trust"
}
]
},
"security_policy": {
"external_content_default": "untrusted_quarantine",
"external_rag_auto_write_allowed": false,
"quarantine_index": "mcp_external_quarantine",
"promotion_target": "governed_internal_rag",
"required_promotion_receipts": [
"source_identity_and_license",
"data_classification_and_tenant_scope",
"prompt_injection_scan",
"malware_and_content_safety_scan",
"independent_citation_verifier",
"human_or_policy_approval_for_regulated_data",
"durable_write_acknowledgement"
],
"gateway_request_body_storage": "forbidden_hash_only",
"gateway_response_body_storage": "forbidden_hash_only",
"distributed_rate_limit_required": true,
"tool_annotations_are_untrusted_hints": true
},
"supply_chain_policy": {
"floating_versions_allowed": false,
"npx_yes_allowed": false,
"latest_tag_allowed": false,
"direct_public_registry_runtime_install_allowed": false,
"required_before_canary": [
"exact_version",
"immutable_artifact_digest",
"internal_mirror_ref",
"sbom_ref",
"signature_or_provenance_ref",
"license_decision",
"vulnerability_decision",
"rollback_artifact_ref"
]
},
"version_lifecycle": {
"desired_loop": [
"discover",
"normalize",
"diff",
"compatibility_replay",
"security_and_supply_chain_verify",
"shadow",
"canary",
"bounded_rollout",
"post_verify",
"rollback_or_promote",
"writeback"
],
"discovery_cadence": "0 */6 * * * Asia/Taipei",
"compatibility_cadence": "on_version_diff",
"canary_policy": "one_noncritical_product_then_10_25_50_100_percent",
"rollback_policy": "automatic_on_protocol_tool_schema_auth_latency_or_quality_regression",
"runtime_state": "scheduled_pending_first_receipt",
"active_blockers": [
"external_candidate_immutable_supply_chain_receipts_missing",
"registered_internal_replay_adapters_missing",
"no_promotable_external_candidate_for_shadow_or_canary"
]
},
"capabilities": [
{
"capability_id": "core.awoooi-mcp-platform",
"title": "AWOOOI MCP Gateway / Registry / RAG",
"source_type": "internal",
"catalog_source": "internal",
"decision": "integrated",
"risk_tier": "medium",
"scope": "read_and_controlled_write",
"data_boundary": "internal",
"deployment_allowed": true,
"version_state": "repo_sha_bound",
"digest_state": "source_sha_available_runtime_image_digest_readback_pending",
"sbom_state": "partial",
"signature_state": "partial",
"rag_policy": "internal_governed_only",
"evidence_refs": [
"apps/api/src/plugins/mcp/gateway.py",
"apps/api/src/plugins/mcp/registry.py",
"apps/api/src/services/mcp_tool_registry.py",
"apps/api/src/services/knowledge_rag_service.py"
]
},
{
"capability_id": "federation.ewoooc-mcp-rag",
"title": "EwoooC MCP / PixelRAG federation",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate",
"risk_tier": "medium",
"scope": "read_only_first",
"data_boundary": "commerce_internal",
"deployment_allowed": false,
"version_state": "remote_source_readback_pending",
"digest_state": "runtime_digest_readback_pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "quarantine_then_verified_promotion",
"evidence_refs": [
"gitea://wooo/ewoooc@main/services/mcp_router.py",
"gitea://wooo/ewoooc@main/services/external_mcp_rag_integration_service.py"
]
},
{
"capability_id": "federation.momo-mcp-rag",
"title": "MOMO MCP / PixelRAG federation",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate",
"risk_tier": "medium",
"scope": "read_only_first",
"data_boundary": "commerce_internal",
"deployment_allowed": false,
"version_state": "remote_source_readback_pending",
"digest_state": "runtime_digest_readback_pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "quarantine_then_verified_promotion",
"evidence_refs": [
"gitea://wooo/momo-pro-system@main/services/mcp_router.py",
"gitea://wooo/momo-pro-system@main/services/external_mcp_rag_integration_service.py"
]
},
{
"capability_id": "federation.stockplatform-research-mcp",
"title": "StockPlatform internal research MCP",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate",
"risk_tier": "medium",
"scope": "read_only",
"data_boundary": "financial_research",
"deployment_allowed": false,
"version_state": "server_0.1.0_source_detected_runtime_readback_pending",
"digest_state": "pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "cite_internal_evidence_only",
"evidence_refs": [
"gitea://wooo/stockplatform-v2@main/apps/api/app/api/routes/mcp.py"
]
},
{
"capability_id": "federation.vibework-agent-mcp",
"title": "VibeWork agent MCP",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate",
"risk_tier": "high",
"scope": "controlled_apply",
"data_boundary": "marketplace_internal",
"deployment_allowed": false,
"version_state": "package_0.1.0_source_detected_runtime_readback_pending",
"digest_state": "pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "no_external_auto_write",
"evidence_refs": [
"gitea://wooo/vibework@main/packages/mcp-server"
]
},
{
"capability_id": "quarantine.agent-bounty-mcp",
"title": "Agent Bounty MCP remediation lane",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "quarantine",
"risk_tier": "critical",
"scope": "write_and_financial",
"data_boundary": "financial_and_external_agent",
"deployment_allowed": false,
"version_state": "package_0.1.1_source_detected",
"digest_state": "pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "blocked",
"blockers": [
"github_api_tool_violates_freeze",
"tool_output_contains_cross_tool_prompt_injection",
"financial_write_tools_require_independent_controlled_apply"
],
"evidence_refs": [
"gitea://wooo/agent-bounty-protocol@main/packages/mcp-server/src/index.ts"
]
},
{
"capability_id": "federation.bitan-support-mcp",
"title": "Bitan Pharmacy support MCP",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate_after_remediation",
"risk_tier": "high",
"scope": "read_only",
"data_boundary": "health_information",
"deployment_allowed": false,
"version_state": "source_detected_runtime_readback_pending",
"digest_state": "pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "regulated_quarantine_and_citation_verifier",
"blockers": [
"github_external_provider_must_be_removed",
"medical_content_requires_source_and_safety_verifier"
],
"evidence_refs": [
"gitea://wooo/bitan-pharmacy@main/src/lib/ai/mcp/registry.ts",
"gitea://wooo/bitan-pharmacy@main/src/app/api/internal-mcp/route.ts"
]
},
{
"capability_id": "internal.gitea-source-control",
"title": "Internal Gitea source-control MCP",
"source_type": "internal_build",
"catalog_source": "internal",
"decision": "build_internal",
"risk_tier": "high",
"scope": "read_only_then_controlled_write",
"data_boundary": "source_control",
"deployment_allowed": false,
"version_state": "not_built",
"digest_state": "not_built",
"sbom_state": "not_built",
"signature_state": "not_built",
"rag_policy": "metadata_only_no_source_auto_ingest",
"blockers": [
"no_suitable_gitea_server_found_in_reviewed_directories",
"internal_gitea_api_adapter_and_grants_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.google-drive-readonly",
"title": "Google Drive read-only document intake",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/servers/mcp-gdrive-server",
"decision": "shadow_candidate",
"risk_tier": "high",
"scope": "read_only",
"data_boundary": "tenant_documents",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "quarantine_only_no_auto_promotion",
"blockers": [
"exact_version_digest_sbom_signature_and_internal_mirror_missing",
"oauth_scope_and_tenant_isolation_not_verified"
],
"evidence_refs": []
},
{
"capability_id": "external.playwright-verifier",
"title": "Playwright UI verifier MCP",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/server/playwright-mcp/microsoft",
"decision": "internalize_then_canary",
"risk_tier": "high",
"scope": "allowlisted_origins_only",
"data_boundary": "public_and_test_surfaces",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "screenshots_and_accessibility_receipts_only",
"blockers": [
"floating_install_examples_rejected",
"origin_allowlist_and_session_redaction_verifier_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.google-search-console-readonly",
"title": "Google Search Console read-only MCP",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/servers/google-search-console-mcp-sarahpark",
"decision": "shadow_candidate",
"risk_tier": "medium",
"scope": "read_only",
"data_boundary": "site_analytics",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "aggregate_metrics_only",
"blockers": [
"service_identity_and_property_allowlist_missing",
"exact_artifact_and_rollback_receipts_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.youtube-readonly",
"title": "YouTube metadata and transcript MCP",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/servers/youtube-mcp-server",
"decision": "shadow_candidate",
"risk_tier": "medium",
"scope": "read_only",
"data_boundary": "public_media",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "transcript_quarantine_with_source_url",
"blockers": [
"floating_npx_install_rejected",
"quota_identity_and_transcript_rights_review_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.google-maps-readonly",
"title": "Google Maps read-only MCP",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/server/google-maps-mcp/cablate",
"decision": "shadow_candidate",
"risk_tier": "medium",
"scope": "read_only",
"data_boundary": "location_and_delivery",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "no_location_history_persistence",
"blockers": [
"api_key_scope_cost_ceiling_and_tenant_policy_missing",
"exact_artifact_and_canary_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.sportiq-shadow",
"title": "Sportiq FIFA 2026 research shadow",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/servers/sportiq-mcp",
"decision": "research_shadow_only",
"risk_tier": "high",
"scope": "read_only",
"data_boundary": "public_sports_and_odds",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "never_source_of_truth_predictions_require_independent_sources",
"blockers": [
"prediction_and_odds_provenance_unverified",
"official_schedule_results_source_required_first"
],
"evidence_refs": []
},
{
"capability_id": "external.context7-readonly",
"title": "Context7 documentation MCP",
"source_type": "external",
"catalog_source": "mcp-so",
"catalog_url": "https://mcp.so/servers/context7-mcp",
"decision": "development_shadow_candidate",
"risk_tier": "medium",
"scope": "read_only",
"data_boundary": "public_technical_docs",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "ephemeral_context_no_automatic_km_write",
"blockers": [
"source_provenance_and_prompt_injection_replay_missing",
"exact_artifact_and_internal_mirror_missing"
],
"evidence_refs": []
},
{
"capability_id": "external.smithery-site-audit-shadow",
"title": "Smithery public-site SEO audit shadow",
"source_type": "external",
"catalog_source": "smithery",
"catalog_url": "https://smithery.ai/servers/cool_web_tool/site-audit",
"decision": "evaluation_shadow_candidate",
"risk_tier": "high",
"scope": "allowlisted_public_origins_check_mode_only",
"data_boundary": "public_site_metadata_no_authenticated_surface",
"active_security_scan_allowed": false,
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "ephemeral_receipt_only_no_content_ingestion",
"blockers": [
"exact_artifact_internal_mirror_and_rollback_receipts_missing",
"provider_cost_and_external_crawl_boundary_not_approved",
"origin_allowlist_robots_policy_and_independent_result_verifier_missing"
],
"evidence_refs": [
"https://smithery.ai/servers/cool_web_tool/site-audit"
]
},
{
"capability_id": "rejected.smithery-technical-analysis",
"title": "Smithery technical-analysis market signal MCP",
"source_type": "external",
"catalog_source": "smithery",
"catalog_url": "https://smithery.ai/servers/ta-mcp/technical-analysis-mcp",
"decision": "rejected",
"risk_tier": "high",
"scope": "none",
"data_boundary": "public_market_data_and_generated_signals",
"deployment_allowed": false,
"version_state": "unresolved",
"digest_state": "missing",
"sbom_state": "missing",
"signature_state": "missing",
"rag_policy": "rejected_no_finance_truth_or_trading_signal",
"blockers": [
"not_a_taiwan_official_market_source",
"stocks_crypto_and_indian_market_scope_not_product_fit",
"generated_trading_signal_provenance_and_liability_risk"
],
"evidence_refs": [
"https://smithery.ai/servers/ta-mcp/technical-analysis-mcp"
]
},
{
"capability_id": "federation.web-research",
"title": "Governed web research federation",
"source_type": "cross_product_internal",
"catalog_source": "gitea",
"decision": "federate_existing",
"risk_tier": "high",
"scope": "read_only",
"data_boundary": "open_world_untrusted",
"deployment_allowed": false,
"version_state": "ewoooc_source_detected_runtime_readback_pending",
"digest_state": "pending",
"sbom_state": "pending",
"signature_state": "pending",
"rag_policy": "quarantine_citation_and_independent_verifier",
"blockers": [
"cross_product_gateway_federation_missing",
"prompt_injection_and_source_quality_verifier_missing"
],
"evidence_refs": [
"gitea://wooo/ewoooc@main/services/external_mcp_rag_integration_service.py"
]
},
{
"capability_id": "internal.taiwan-finance-sources",
"title": "Taiwan official finance source MCP",
"source_type": "internal_build",
"catalog_source": "internal",
"decision": "build_internal",
"risk_tier": "high",
"scope": "read_only",
"data_boundary": "financial_research",
"deployment_allowed": false,
"version_state": "not_built",
"digest_state": "not_built",
"sbom_state": "not_built",
"signature_state": "not_built",
"rag_policy": "official_source_citations_required",
"blockers": [
"reviewed_marketplace_servers_do_not_provide_authoritative_taiwan_coverage"
],
"evidence_refs": []
},
{
"capability_id": "internal.supply-chain-verifier",
"title": "MCP supply-chain and version verifier",
"source_type": "internal_build",
"catalog_source": "internal",
"decision": "build_internal",
"risk_tier": "high",
"scope": "check_then_controlled_apply",
"data_boundary": "software_supply_chain",
"deployment_allowed": false,
"version_state": "not_built",
"digest_state": "not_built",
"sbom_state": "not_built",
"signature_state": "not_built",
"rag_policy": "receipts_only",
"blockers": [
"version_discovery_replay_canary_and_rollback_controller_missing"
],
"evidence_refs": [
"scripts/security/package-supply-chain-baseline.py"
]
},
{
"capability_id": "rejected.github",
"title": "GitHub MCP and GitHub-hosted automation",
"source_type": "external",
"catalog_source": "policy",
"decision": "rejected",
"risk_tier": "critical",
"scope": "none",
"data_boundary": "forbidden",
"deployment_allowed": false,
"version_state": "not_applicable",
"digest_state": "not_applicable",
"sbom_state": "not_applicable",
"signature_state": "not_applicable",
"rag_policy": "blocked",
"blockers": [
"github_freeze"
],
"evidence_refs": []
},
{
"capability_id": "rejected.duplicate-and-write-heavy-marketplace",
"title": "Duplicate infrastructure, trading, wallet, and broad-write MCPs",
"source_type": "external",
"catalog_source": "smithery_and_mcp-so",
"decision": "rejected",
"risk_tier": "critical",
"scope": "none",
"data_boundary": "forbidden",
"deployment_allowed": false,
"version_state": "not_applicable",
"digest_state": "not_applicable",
"sbom_state": "not_applicable",
"signature_state": "not_applicable",
"rag_policy": "blocked",
"blockers": [
"duplicates_existing_kubernetes_postgresql_redis_or_rag",
"trading_wallet_private_key_or_paid_provider_side_effect",
"google_sheets_and_drive_write_surface_exceeds_initial_scope"
],
"evidence_refs": []
}
],
"products": [
{
"product_id": "awoooi",
"inventory_state": "source_detected_runtime_partial",
"existing_capability_ids": ["core.awoooi-mcp-platform"],
"recommended_capability_ids": ["internal.gitea-source-control", "external.playwright-verifier", "internal.supply-chain-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["provider_health_and_gateway_audit_need_durable_page_readback", "rag_index_runtime_is_empty"]
},
{
"product_id": "ewoooc",
"inventory_state": "source_detected_federation_missing",
"existing_capability_ids": ["federation.ewoooc-mcp-rag", "federation.web-research"],
"recommended_capability_ids": ["external.google-drive-readonly", "external.playwright-verifier", "internal.supply-chain-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["awoooi_federated_runtime_readback_missing", "pixelrag_must_remain_read_only_until_ocr_vlm_verifier"]
},
{
"product_id": "2026fifa",
"inventory_state": "no_committed_mcp_runtime_detected",
"existing_capability_ids": [],
"recommended_capability_ids": ["external.sportiq-shadow", "federation.web-research", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["official_schedule_results_and_odds_sources_not_federated", "betting_recommendations_require_independent_verifier"]
},
{
"product_id": "agent-bounty-protocol",
"inventory_state": "source_detected_quarantined",
"existing_capability_ids": ["quarantine.agent-bounty-mcp"],
"recommended_capability_ids": ["internal.gitea-source-control", "internal.supply-chain-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["github_tool_and_prompt_injection_must_be_removed", "financial_actions_need_controlled_apply_receipts"]
},
{
"product_id": "awooogo",
"inventory_state": "no_committed_mcp_runtime_detected",
"existing_capability_ids": [],
"recommended_capability_ids": ["external.google-maps-readonly", "external.google-search-console-readonly", "external.smithery-site-audit-shadow", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["delivery_location_data_policy_and_cost_ceiling_missing"]
},
{
"product_id": "stockplatform-v2",
"inventory_state": "source_detected_runtime_readback_missing",
"existing_capability_ids": ["federation.stockplatform-research-mcp"],
"recommended_capability_ids": ["internal.taiwan-finance-sources", "federation.web-research", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace", "rejected.smithery-technical-analysis"],
"blockers": ["taiwan_marketplace_mcp_authority_gap", "cross_product_invocation_readback_missing"]
},
{
"product_id": "vibework",
"inventory_state": "source_detected_runtime_readback_missing",
"existing_capability_ids": ["federation.vibework-agent-mcp"],
"recommended_capability_ids": ["internal.gitea-source-control", "external.context7-readonly", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github"],
"blockers": ["controlled_apply_and_tenant_grants_not_federated"]
},
{
"product_id": "momo-pro-system",
"inventory_state": "source_detected_federation_missing",
"existing_capability_ids": ["federation.momo-mcp-rag", "federation.web-research"],
"recommended_capability_ids": ["external.google-drive-readonly", "external.playwright-verifier", "internal.supply-chain-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["awoooi_federated_runtime_readback_missing", "pixelrag_must_remain_read_only_until_ocr_vlm_verifier"]
},
{
"product_id": "tsenyang-website",
"inventory_state": "no_committed_mcp_runtime_detected",
"existing_capability_ids": [],
"recommended_capability_ids": ["external.google-search-console-readonly", "external.smithery-site-audit-shadow", "federation.web-research", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github"],
"blockers": ["seo_analytics_service_identity_and_property_allowlist_missing"]
},
{
"product_id": "vtuber",
"inventory_state": "no_committed_mcp_runtime_detected",
"existing_capability_ids": [],
"recommended_capability_ids": ["external.youtube-readonly", "external.google-drive-readonly", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github", "rejected.duplicate-and-write-heavy-marketplace"],
"blockers": ["media_rights_quota_and_transcript_provenance_policy_missing"]
},
{
"product_id": "bitan-pharmacy",
"inventory_state": "source_detected_remediation_required",
"existing_capability_ids": ["federation.bitan-support-mcp"],
"recommended_capability_ids": ["external.context7-readonly", "federation.web-research", "external.google-search-console-readonly", "external.smithery-site-audit-shadow", "external.playwright-verifier"],
"rejected_capability_ids": ["rejected.github"],
"blockers": ["github_external_provider_must_be_removed", "medical_answer_source_and_safety_verifier_missing"]
},
{
"product_id": "clawbot-openclaw",
"inventory_state": "no_federated_mcp_inventory_readback",
"existing_capability_ids": [],
"recommended_capability_ids": ["internal.gitea-source-control", "external.context7-readonly", "external.playwright-verifier", "internal.supply-chain-verifier"],
"rejected_capability_ids": ["rejected.github"],
"blockers": ["agent_runtime_tool_and_version_inventory_readback_missing"]
}
]
}