{
  "schema_version": "1.0",
  "name": "SSS Intent Kit",
  "project": "SSS DeFi",
  "network": "Internet Computer",
  "mode": "preview_build_only_cross_route_intent_v1",
  "docs_url": "https://docs.sssdefi.ai/intent-kit",
  "app_url": "https://app.sssdefi.ai",
  "core_canister_id": "dlhkk-raaaa-aaaak-qyl5a-cai",
  "core_candid_url": "https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.icp0.io/?id=dlhkk-raaaa-aaaak-qyl5a-cai",
  "hosted_ai_backend": false,
  "stores_user_llm_keys": false,
  "auto_execute_supported_v1": false,
  "withdraw_auto_execute_supported_v1": false,
  "intent_methods": [
    {
      "name": "get_supported_assets",
      "method": "intent_get_supported_assets_v1",
      "kind": "query",
      "mutates_state": false,
      "available_v1": true
    },
    {
      "name": "get_supported_routes",
      "method": "intent_get_supported_routes_v1",
      "kind": "query",
      "mutates_state": false,
      "available_v1": true
    },
    {
      "name": "validate_intent",
      "method": "intent_validate_v1",
      "kind": "query",
      "mutates_state": false,
      "available_v1": true,
      "requires_client_request_id": true
    },
    {
      "name": "preview_intent",
      "method": "intent_preview_v1",
      "kind": "query",
      "mutates_state": false,
      "available_v1": true,
      "executes_funds": false
    },
    {
      "name": "build_steps",
      "method": "intent_build_steps_v1",
      "kind": "query",
      "mutates_state": false,
      "available_v1": true,
      "executes_funds": false
    }
  ],
  "supported_intent_types_v1": [
    "InternalSwap",
    "DepositThenSwap",
    "SwapThenWithdrawPlan",
    "DepositSwapWithdrawPlan"
  ],
  "supported_locations_v1": [
    "SssInternal",
    "IcpWallet",
    "EthereumWallet"
  ],
  "supported_assets_v1": [
    "ICP",
    "ETH",
    "USDC",
    "USDT",
    "ckETH",
    "ckUSDC",
    "ckUSDT"
  ],
  "safety": {
    "natural_language_execution_supported": false,
    "preview_mutates_state": false,
    "build_steps_mutates_state": false,
    "requires_user_signature_for_real_actions": true,
    "requires_receiver_for_ethereum_withdrawal": true,
    "ethereum_withdrawal_high_risk": true,
    "requires_live_route_check_before_withdraw_submit": true,
    "requires_client_request_id": true,
    "allow_partial_fill_v1": false
  },
  "intent_rules": [
    "Never execute based only on natural-language output.",
    "Convert user goals into structured IntentRequestV1 parameters before calling SSS.",
    "Call intent_validate_v1 before intent_preview_v1 when building external AI workflows.",
    "Call intent_preview_v1 before intent_build_steps_v1.",
    "Treat intent_build_steps_v1 output as a plan, not as execution authority.",
    "Do not auto-submit Ethereum withdrawals from Intent Kit v1.",
    "Do not guess receiver addresses, pool ids, route ids, or amount_out_min values.",
    "Show warnings, blockers, high_risk flags, receiver, route id, pool id, fee, and min receive to the user before any real signature."
  ],
  "examples": {
    "intent_kit_docs_url": "https://docs.sssdefi.ai/intent-kit",
    "intent_skill_url": "https://docs.sssdefi.ai/ai/openclaw-skill/INTENT_KIT.md",
    "intent_preview_candid_url": "https://docs.sssdefi.ai/ai/openclaw-skill/examples/intent-preview.candid",
    "intent_build_steps_candid_url": "https://docs.sssdefi.ai/ai/openclaw-skill/examples/intent-build-steps.candid"
  },
  "api_methods": [
    {
      "name": "intent_get_status_schema_v1",
      "kind": "query",
      "description": "Return stateless lifecycle statuses and receipt fields for wallets, bots, and AI agents that track Intent Kit flows outside core stable state.",
      "executes_funds": false,
      "mutates_state": false
    }
  ],
  "status_schema": {
    "method": "intent_get_status_schema_v1",
    "stateless_v1": true,
    "terminal_statuses": [
      "WithdrawConfirmed",
      "Failed",
      "Expired",
      "Cancelled"
    ],
    "high_risk_statuses": [
      "WithdrawStepBuilt",
      "WithdrawSubmitted",
      "WithdrawConfirmed",
      "ManualReviewRequired"
    ],
    "required_receipt_fields": [
      "intent_id",
      "client_request_id",
      "owner",
      "intent_type",
      "final_status",
      "source",
      "target",
      "steps",
      "created_at_ns",
      "updated_at_ns"
    ]
  },
  "links": {
    "intent_cross_route_plan_candid_url": "https://docs.sssdefi.ai/ai/openclaw-skill/examples/intent-cross-route-plan.candid",
    "intent_integration_checklist_url": "https://docs.sssdefi.ai/ai/openclaw-skill/examples/intent-integration-checklist.md"
  },
  "integration_acceptance_v1": {
    "smoke_script": "scripts/ops/intent_kit/smoke_intent_kit_v1.sh",
    "smoke_default_identity": "anonymous",
    "smoke_moves_funds": false,
    "required_sequence": [
      "intent_get_supported_assets_v1",
      "intent_get_supported_routes_v1",
      "intent_validate_v1",
      "intent_preview_v1",
      "intent_build_steps_v1",
      "intent_get_status_schema_v1"
    ],
    "must_display_fields": [
      "warnings",
      "blockers",
      "next_action",
      "pool_id",
      "source_route_id",
      "withdraw_route_id",
      "receiver",
      "high_risk",
      "amount_in_atomic",
      "estimated_receive_atomic",
      "min_receive_atomic",
      "fee_atomic",
      "user_must_review"
    ],
    "withdrawal_rule": "Ethereum withdrawal plans must remain high-risk build-only plans until an existing live route/source check and explicit user confirmation occur outside Intent Kit preview/build methods."
  }
}
