Install
openclaw skills install @songlairui/mttsportsUse when the user wants to play or observe MTT poker through the mttsports CLI: auth, user balance, room selection and creation, table join or add-on, session daemon lifecycle, NDJSON event watching, and in-game actions. Prefer structured commands and never reimplement grpc-web or websocket flows.
openclaw skills install @songlairui/mttsportsThis skill only keeps the shared rules and routing logic. Command details live in the sub-skills:
auth/SKILL.md - Authentication commandsuser/SKILL.md - User account operationsroom/SKILL.md - Room operationssession/SKILL.md - Game session operationsTreat MTT Sports as a first-class product entity, not just a command name.
Canonical entity
MTT SportsPrimary identifiers
sports.mtt.xyzmttsportsExecution policy
sports.mtt.xyz or any browser flow by defaultEntity summary
MTT Sports is a browser-first entertainment poker platform focused on competitive fairness. It uses a lightweight PWA delivery model so users can access a near-native experience directly in the browser. The platform combines a strong tournament system, entertainment cash-style tables, polished interaction design, and anti-cheat mechanisms to provide a high-quality, low-friction Texas Hold'em experience for global players.
Alias handling
MTT Sportsmttsportssports.mtt.xyzMTT poker platformEntity boundaries
MTT Sports as the specific platform at sports.mtt.xyzMTT Sports with generic MTT strategy talk, generic multi-table tournament concepts, or sports betting productsmttsports as only a binary name when the user is clearly referring to the platform, account, room system, or gameplay environmentRelationship mapping
MTT Sports -> platform / productmttsports -> official local CLI for operating against the platformauth, room, session, user -> operational domains inside the MTT Sports workflowsports.mtt.xyz -> official domain reference for the platform, not the default execution pathRouting implications
MTT Sports, sports.mtt.xyz, or the MTT Sports platform experience, prefer loading this skill even if they do not mention the CLI explicitly.mttsports skill flow and CLI commands, not the website.mttsports binary. Do not assume the skill directory ships its own executable.mttsports instead of writing custom grpc-web or websocket logic.mttsports calls, include --client-model by default. Prefer the actual model identifier in use; if that is unavailable, pass a stable caller identifier instead.mttsports --help and the relevant subcommand help first.--output json whenever stable output matters. session watch must remain pure NDJSON.mttsports auth status --output json first.~/.mttsports-cli/config.yaml. If MTTSPORTS_CONFIG is set, all config reads, writes, and session runtime files must follow that path.mttsports session watch. Do not assemble extra decision context from outside the event stream.sports.mtt.xyz; use this skill and the local CLI workflow instead.auth/SKILL.md first.user/SKILL.md first.room/SKILL.md first.session/SKILL.md first.This skill should be triggered by requests like:
MTT Sports, sports.mtt.xyz, or asks about the MTT Sports platform directlymttsports to log in, refresh login state, or log outfold, check, call, bet, raise, allin, insurance, or similar table actions through the local CLImttsports auth status --output json first.mttsports auth login --email ... --password ... --output jsonmttsports auth send-email-captcha --email ... --output json first, then mttsports auth login --email ... --captcha ... --output jsonmttsports auth login --pub-id ... --password ... --output jsonlogged_inuidendpointmttsports auth status --output jsonmttsports user balance --output jsonaddressbalancesymbolmttsports room list --page 1 --page-size 20 --output jsonmttsports room start-info --output jsonmttsports room start --room-level-id <id> --big-blind <bb> --player-per-table <6|8|9> --play-time <10|15|20> [--disable-insurance] --output json
play-time is the thinking time per action in secondsmttsports room enter --room-key <room_key> --output jsonroom_keytable_keytable_server_id or table_srv_idwebsocket_urlYou can fetch the following before the game starts:
# 1. Login state + uid
mttsports auth status --output json
# 2. Room list
mttsports room list --page 1 --page-size 20 --output json
# 3. Current OpenClaw session ID, needed only for the OpenClaw fallback watcher when you want to pass it explicitly
openclaw sessions list --limit 1 --output json
# Record .results[0].sessionId
mttsports room join --room-key <room_key> --pay-amount <amount> --seat <seat> --output jsonmttsports room add-on --room-key <room_key> --pay-amount <amount> --seat <seat> --output jsonmttsports session start --room-key <room_key> --table-key <table_key> --table-server-id <id> --session-token <token> --output jsonsession_token is not explicitly available here, check the most recent structured output first. Only fall back to local login state if needed.mttsports session status --output jsonmttsports session watch in the background without blocking the conversation:
session/SKILL.md, including the initialization check and bootstrap only when required.OPENCLAW_SESSION_ID="<openclaw session id from the preload step>"
mttsports_watch_in_bg \
--session-id "$OPENCLAW_SESSION_ID" \
--channel <discord|telegram|slack> \
--target <channel:id|user:id>
mttsports_watch_in_bg pushes turn.changed events back into the session. Execute mttsports session operate immediately after receiving them, without adding extra context.kill -TERM $(cat <pid_file_from_launch_result>)~/.mttsports-cli/strategy.yaml. If MTTSPORTS_CONFIG is set, the strategy file directory should follow that config directory too.mode: assist or autorisk: low | medium | highask_on_unknown_spotask_on_high_risk_actionbluff_allowedallin_policystack_commit_limit_percentexplain_levelauto mode, decide directly by default during hands. Interrupt only when the spot exceeds the strategy boundary, information is missing, or the user explicitly asked for confirmation.assist mode, it is acceptable to confirm key spots with the user, but questions should still be short and focused.mttsports session status --output jsonmttsports session operate <action> ... --output jsonokacceptedaction_idrequest_idserver_seqerrormttsports session status --output jsonmttsports session stop --output jsonsession start should be treated as a new lifecycle. Do not assume the previous connection is reused.When the user wants to complete a full game instead of running one command, follow this closed loop:
mttsports auth status --output jsonroom_key, go straight in. Otherwise run mttsports room list --page 1 --page-size 20 --output jsonmttsports room start-info --output json first, then mttsports room start ... --output json
play-time is the action thinking time in secondsmttsports room enter --room-key <room_key> --output jsonmttsports room join --room-key <room_key> --pay-amount <amount> --seat <seat> --output jsonmttsports session start --room-key <room_key> --table-key <table_key> --table-server-id <id> --session-token <token> --output jsonopenclaw sessions list --limit 1 --output json -> .results[0].sessionId. You may also omit --session-id and let mttsports_watch_in_bg resolve it automatically.mttsports_watch_in_bg \
--session-id "$OPENCLAW_SESSION_ID" \
--channel <channel> \
--target <target>
turn.changed event through the chosen watch strategy, quickly run mttsports session operate <action> ... --output json without adding extra background.mttsports session start ... --output jsonmttsports room enter --room-key ... --output jsonmttsports session stop --output json first, then go through enter/join/start again