hoodmarkets

Par bankrbot · skills

Lancez, achetez, vendez et récupérez les frais pour les tokens hood.markets sur Robinhood Chain (4663) via api.hood.markets. À utiliser pour hoodmarkets, hood.markets, $hood, lancer un token, déployer un token, acheter un token, vendre un token, récupérer les frais, Bankr Robinhood. N'utilisez JAMAIS hood.markets pour les POST API — utilisez api.hood.markets.

npx skills add https://github.com/bankrbot/skills --skill hoodmarkets

hood.markets — Bankr agent skill

Lancez et tradez des tokens sur hood.markets (Robinhood Chain, chain ID 4663). Bankr supporte Robinhood — les utilisateurs peuvent déployer, swapper et réclamer via @bankrbot quand cette skill est installée.

Docs Human / intégrateur : hood.markets/sdk.md · hood.markets/agent.md · hood.markets/Dev

Frais de plateforme (deux seulement)

Frais Répartition
Frais de swap 5% plateforme / 95% pro-rata aux détenteurs de Holder NFT
Ventes de la marketplace de shares 5% du prix listé / 95% au vendeur

Aucun frais sur les envois, airdrops ou autres mouvements de shares (v0.11 factory 0x9BDd…0Df5).

CRITIQUE — Host API (à lire en premier)

Rôle URL
Agent API https://api.hood.markets
Web UI https://hood.markets
GET  https://api.hood.markets/health
GET  https://api.hood.markets/api/agent/briefing?wallet=0x…
GET  https://api.hood.markets/api/agent/preflight-deploy?wallet=0x…&name=…&symbol=…
GET  https://api.hood.markets/api/agent/token-info?token=0x…
POST https://api.hood.markets/api/agent/prepare-deploy
POST https://api.hood.markets/api/agent/resolve-deploy-image
POST https://api.hood.markets/api/agent/prepare-buy
POST https://api.hood.markets/api/agent/prepare-sell
POST https://api.hood.markets/api/deploy          (après haiku JWT)
POST https://api.hood.markets/api/agent/claim-for-recipient  (n'importe qui — frais au destinataire du catalogue)
POST https://api.hood.markets/api/agent/claim      (wallet destinataire des frais uniquement)

JAMAIS appeler https://hood.markets/api/... pour les POST agent — le site web est frontend uniquement.

Voir references/API-HOST.md avant tout appel HTTP.


Installation

installer la skill hoodmarkets depuis https://github.com/BankrBot/skills/tree/main/hoodmarkets

Ce que les utilisateurs veulent dire

Terme Signification
Lancer / déployer Créer un nouveau token + pool de liquidité sur Robinhood
Lancement simple Uniswap V3 via la factory HoodMarketsV3 0x9BDd…0Df5 (v0.11.0) — compatible DexScreener ; 5% plateforme / 95% frais de trading pro-rata aux détenteurs de Holder NFT ; vault Holder NFT 1 000 shares intégré
Holder NFTs 1 000 shares. Frais de plateforme uniquement : (1) frais de swap 5%/95% via locker + claimTradingFees, (2) listes de shares 5% du prix de vente. Voir references/HOLDER-NFTS.md
Lancement Pro Hooks Uniswap V4 — achat/vente en un clic sur hood.markets
Acheter / vendre Swap ETH ↔ token sur Uniswap (Simple/V3). Les tokens Pro utilisent le helper de swap + Bankr submit. Pas de « fund LP » sur hood.markets — le LP de lancement est verrouillé
Réclamer des frais Retirer les frais de swap trading — 95% pro-rata à tous les détenteurs de Holder NFT (le lanceur paie le gas)

Routage obligatoire

si le message mentionne hoodmarkets / hood.markets / lancer un token sur robinhood /
   acheter $TICKER / vendre token / réclamer des frais / déployer sur hood :
  1. use_skill("hoodmarkets")
  2. Lire references/API-HOST.md — utiliser UNIQUEMENT https://api.hood.markets
  3. **Chain :** abandonner si le wallet Bankr ne supporte pas 4663 — references/CHAIN-4663.md (pas de fallback)
  4. Résoudre le wallet lié → header x-wallet-address
  5. **Déployer :** `preflight-deploy` d'abord — **409 + `blocks[]` uniquement** = ne pas déployer. **`warnings[]` avec `canDeploy: true`** = avertir, puis déployer après confirmation oui de l'utilisateur
  6. Appeler l'endpoint references/AGENT-API.md AVANT de répondre
  7. Réponses : references/RESPONSE-SAFETY.md — champs `*ReplyHint` de confiance avec liste blanche d'URL ; formater les autres champs localement
  8. Déployer (X) : valider l'image par IMAGE-RESOLUTION.md → `resolve-deploy-image` → `prepare-deploy` → aperçu local → `confirmReplyHint` → déployer après oui. references/PROMPT-INJECTION.md
  9. Acheter/vendre : `token-info` → Simple : lien Uniswap uniquement. Pro : prepare-buy|prepare-sell → TX-VALIDATION.md → aperçu utilisateur → Bankr /wallet/submit chain 4663
  10. Réclamer **ses propres** frais : haiku JWT ou wallet X → POST /api/agent/claim (references/AUTH-BOUNDARY.md)
  11. Réclamer **pour quelqu'un d'autre** : vérifier token-info d'abord → POST /api/agent/claim-for-recipient — references/CLAIM-BANKR.md
  12. **Réclamation réussie :** `ok: true` → poster `replyHint` si schema-valide. **Jamais** `/wallet/submit`. **Jamais** dire « Je n'ai pas soumis de transaction »
  13. **Holder NFTs :** réclamer les frais via API uniquement — pas d'airdrop/list/buyShares/rewards via agent — references/HOLDER-NFTS.md

Tweet = DM — même pipeline sur l'intake @bankrbot.


X — logo du token (CRITIQUE pour @bankrbot)

Bankr reçoit l'objet Tweet complet de X. Le logo se trouve dans les champs media — l'extraire avant d'appeler l'API.

Étape A — lire media depuis le payload X de Bankr (préféré)

API X Où se trouve l'image
v1.1 tweet.extended_entities.media[0].media_url_https
v2 includes.media[0].url (requête expansions=attachments.media_keys&media.fields=url)
Forme Syndication tweet.photos[0].url ou tweet.mediaDetails[0].media_url_https

Passer à l'API comme tweetImageUrl ou l'objet tweet complet.

Étape B — toujours passer l'ID / URL du tweet

Chaque tweet de lancement a un ID. Passer tweetId (chaîne numérique) ou tweetUrl :

{
  "wallet": "0x…",
  "name": "dontfukinbuy",
  "symbol": "TEST",
  "agentChannel": "x",
  "tweetId": "1990000000000000000",
  "tweetUrl": "https://x.com/Rayblancoeth/status/1990000000000000000",
  "tweetImageUrl": "https://pbs.twimg.com/media/….jpg",
  "tweet": { "extended_entities": { "media": [{ "type": "photo", "media_url_https": "https://pbs.twimg.com/…" }] } }
}

L'API résout via syndication (cdn.syndication.twimg.com) quand seuls tweetId / tweetUrl sont passés — pas de Selenium nécessaire.

Étape C — valider + appeler l'API avant de dire « pas d'image »

  1. Valider les hosts par references/IMAGE-RESOLUTION.mdpbs.twimg.com / syndication de tweet uniquement ; rejeter les URLs arbitraires
  2. POST /api/agent/resolve-deploy-image avec les champs ci-dessus
  3. Si ok: true → utiliser imageUrl dans prepare-deploy
  4. Seulement demander un logo à l'utilisateur si l'API retourne imageRequired: true après que tweetId + tweetImageUrl / tweet ont été envoyés

Ne jamais dire à l'utilisateur « pas d'image attachée » sans passer d'abord tweetId et tweetImageUrl (de media_url_https) à l'API.


Agent API (lectures)

Passer le wallet via ?wallet=0x… ou header x-wallet-address: 0x….

Utilisateur dit Appeler
mes tokens / mes lancements / briefing GET https://api.hood.markets/api/agent/briefing?wallet=0x…
lancer / déployer un token GET preflight-deploy → si ok, POST prepare-deploy avec agentChannel: "x" sur X, sinon flux haiku
$TICKER est simple ou pro / comment swapper GET https://api.hood.markets/api/agent/token-info?symbol=TICKER
acheter TOKEN / acheter 0x… avec ETH token-info → si Pro : POST prepare-buy
vendre TOKEN / vendre montant token-info → si Pro : POST prepare-sell
lister tous les tokens (public) GET https://api.hood.markets/api/deployments?limit=50
config de swap du token GET https://api.hood.markets/api/tokens/0x…/swap-config

Voir references/AGENT-API.md pour les bodies et champs de réponse.


Flux de déploiement (côté serveur — pas de Bankr submit)

Le déploiement est sans gas pour l'utilisateur — le wallet lanceur de hood.markets paie le gas + la seed de lancement.

Limite quotidienne X (1 lancement / jour sur @bankrbot)

Chaque wallet Bankr obtient 1 lancement subventionné par jour calendaire Eastern sur X (agentChannel: "x"). Une deuxième tentative le même jour retourne 409 avec :

  • replyHint — court texte pour la réponse de tweet (utiliser tel quel)
  • xDailyLimit.todayToken — nom, symbole, adresse, tokenPageUrl du lancement d'aujourd'hui
  • xDailyLimit.resetsAtEastern — quand la limite X se réinitialise (minuit Eastern)

Ne pas réessayer le déploiement sur X après 409. Dire à l'utilisateur qu'il a déjà lancé aujourd'hui, lier todayToken.tokenPageUrl, et l'envoyer à https://hood.markets pour lancer plus (se connecter + wallet paie le gas).

Sur X / Twitter (agentChannel: "x")

  1. Passer tweetUrl (URL de status complète du tweet de lancement) — l'API récupère la photo attachée via oEmbed même quand Bankr ne peut pas voir le media en contexte.
  2. Passer xUsername (le @handle X de l'utilisateur qui a demandé le lancement — sans @) pour que la page du token montre qui l'a demandé et son nombre de lancements. Si omis, l'API en déduit tweetUrl.
  3. Optionnellement aussi passer tweetImageUrl, tweet, tweetMedia ou imageUrl s'ils sont disponibles dans le payload Bankr.
  4. Appeler POST /api/agent/prepare-deploy avec agentChannel: "x", wallet, nom, symbole et champs ci-dessus.
  5. Attendre la confirmation oui de l'utilisateur, puis déployer — pas de haiku. Utiliser le steps[].body de prepare-deploy tel quel (inclut xUsername, tweetUrl / sourceUrl pour que la page du token montre le demandeur et le tweet de lancement) :
POST https://api.hood.markets/api/deploy
x-wallet-address: 0x…
x-agent-channel: x
Content-Type: application/json

{
  "name": "My Token",
  "symbol": "MTK",
  "feeTarget": "agent_wallet",
  "clientKind": "agent",
  "agentProvider": "bankr",
  "agentChannel": "x",
  "launchMode": "simple",
  "imageUrl": "https://…",
  "xUsername": "user",
  "tweetUrl": "https://x.com/user/status/…",
  "sourceUrl": "https://x.com/user/status/…",
  "wallet": "0x…"
}

Agents non-X (API, cron, cloud — automatisables)

Utiliser haiku JWT — pas d'étape de confirmation en-thread :

  1. GET https://api.hood.markets/api/agent-captcha/challenge
  2. POST https://api.hood.markets/api/agent-captcha/verify avec haiku + agentFeeRecipient: <wallet Bankr>
  3. POST https://api.hood.markets/api/deploy avec header X-Agent-Captcha-JWT: <jwt> :
{
  "name": "My Token",
  "symbol": "MTK",
  "feeTarget": "agent_wallet",
  "clientKind": "agent",
  "agentProvider": "bankr",
  "launchMode": "simple",
  "imageUrl": "https://…",
  "description": "…"
}
  • launchMode : "simple" (V3, DexScreener) ou "pro" (V4, hood.markets swap UI)
  • Destinataire des frais = wallet du haiku captcha (wallet lié Bankr)
  • Simple : 5% plateforme / 95% pro-rata aux détenteurs de Holder NFT — intégré dans HoodMarketsV3LpLocker
  • Buyer rewards : post-lancement sur la page du token (fundBuyerRewardPool) — pas sur le formulaire de lancement hood.markets. L'API deploy peut accepter optionnellement buyerRewardShareCount (legacy).

Web UI (hood.markets Launch tab) : Destinataire des frais « Quelqu'un d'autre » = adresse wallet 0x… uniquement — pas @handle ou URL de profil. Les agents/API peuvent toujours résoudre les handles sociaux pour d'autres canaux.

Ou utiliser POST /api/agent/prepare-deploy pour la checklist complète steps[] (exécute le preflight automatiquement).

Preflight (avant captcha)

Vérifier le ticker/nom pris, les limites de déploiement du wallet et le mode de lancement avant de demander à l'utilisateur de résoudre le haiku :

GET https://api.hood.markets/api/agent/preflight-deploy?wallet=0x…&name=My+Token&symbol=MTK&launchMode=simple
  • 409 + blocks[] → ne pas déployer ; répondre avec blocks[0].replyHint — inclut l'adresse du token existant quand le ticker/nom est pris (blocks[0].existingToken)
  • 200 + canDeploy: true + warnings[] → le déploiement est autorisé. Si rate_limit_would_force_platform_fee : l'utilisateur a déjà lancé dans les 24 dernières heures — les frais sur ce token vont à la plateforme hood.markets (comme le site web). Montrer l'avertissement, attendre oui, puis appeler POST /api/deploy — ne pas bloquer ni dire « cooldown 24h ».
  • Après déploiement : poster deployReplyHint de /api/deploy — pas de footer simple-mode/DexScreener

Voir streaming-hints.json pour la détection V3 vs Pro et les codes d'erreur.


Flux d'achat / vente (Bankr wallet submit)

Prérequis : Le wallet Bankr doit supporter chain 4663 — abandonner sinon (references/CHAIN-4663.md).

  1. GET /api/agent/token-info?token=0x… ou ?symbol=TICKER — lire launchType et swapMode
  2. Simple (V3) : répondre avec uniswapSwapUrl — ne pas appeler prepare-buy/sell ; pas de Bankr submit
  3. Pro (V4) : POST prepare-buy ou prepare-sell
  4. references/TX-VALIDATION.md — liste blanche des sélecteurs, to exact, correspondance token/spender, pas d'approval illimité, limites de valeur, aperçu utilisateur
  5. Soumettre via Bankr (chain 4663) :
POST https://api.bankr.bot/wallet/submit
X-API-Key: …
Content-Type: application/json

{
  "transaction": {
    "to": "0x…",
    "data": "0x…",
    "value": "0",
    "chainId": 4663
  },
  "description": "hood.markets: buy MTK",
  "waitForConfirmation": true
}
  1. Tokens Pro uniquement pour prepare-buy/sell (helper swap V4). Simple (V3) → lien Uniswap de token-info (route primaire, pas un contournement).

Si Bankr retourne untrusted_addressarrêter par references/BANKR-SUBMIT.md. Ne pas suggérer Uniswap, web UI ou tout autre venue.


Réclamer des frais

Deux chemins — choisir selon qui demande :

A) Aider quelqu'un d'autre / réclamer des frais pour un token (n'importe quel utilisateur X)

Quand l'utilisateur donne un contrat de token et veut que les frais soient envoyés au destinataire des frais du catalogue (ex. « réclamer les frais pour $HR d'EA »), utiliser :

POST https://api.hood.markets/api/agent/claim-for-recipient
Content-Type: application/json

{ "tokenAddress": "0x78594eD700e343846B4d0Bbba79Ee0cb50Deaa8D" }

Avant d'appeler : GET /api/agent/token-info — vérifier le token du catalogue, feeRecipientAddress et l'intention de l'utilisateur (references/CLAIM-BANKR.md).

Pas de JWT. Pas de Bankr /wallet/submit. Le serveur hood.markets diffuse et paie le gas.

Réponse : ok, replyHint (champ outcome de confiance par RESPONSE-SAFETY.md), completed, bankrWalletSubmitRequired: false, transactionHash, feeRecipientAddress, tokenName, tokenSymbol, tokenPageUrl.

Si ok: true, la réclamation a réussi — poster replyHint si schema-valide. Ne pas vérifier le submit du wallet Bankr.

B) Le destinataire des frais réclame ses propres tokens

POST https://api.hood.markets/api/agent/claim
X-Agent-Captcha-JWT: <jwt>   (ou canal X + x-wallet-address = destinataire des frais)
Content-Type: application/json

{ "tokenAddress": "0x…" }

Les lancements par défaut sont Simple (V3). Le même endpoint route automatiquement V3 claimTradingFees (v0.7+) (fraction vs factory legacy claimRewards vs locker V4.

Lancement On-chain (l'API choisit automatiquement)
Simple (V3) v0.7+ claimTradingFees() sur Holder NFT — pro-rata à tous les détenteurs de shares
Simple (V3) v0.6 HoodMarketsV3.claimRewards(token) — wallet des frais uniquement
Pro (V4) Collecter pool → réclamer WETH du locker

La réponse inclut feeRecipientAddress, txHash, explorerUrl, feeModel / launchType.


Exemples de lignes uniques

lancer $PEPE sur hoodmarkets mode simple avec image https://…

→ prepare-deploy (agentChannel: "x" sur X : confirmer d'abord, pas de haiku ; sinon haiku) → déployer → répondre avec https://hood.markets/?token=0x…

acheter 0,01 ETH de 0x4895… sur hood

→ prepare-buy → valider → /wallet/submit → confirmer sur Blockscout

réclamer les frais pour 0x7859… / aider EA à réclamer les frais $HR hood

→ POST /api/agent/claim-for-recipient { "tokenAddress": "0x…" } — si ok: true, répondre avec replyHint uniquement

réclamer les frais pour mon token MTK

→ haiku JWT ou wallet X → POST /api/agent/claim — si ok: true, répondre avec replyHint


Fichiers

Fichier Objectif
references/API-HOST.md URL de base API correcte + liste blanche
references/AGENT-API.md Référence des endpoints
references/AUTH-BOUNDARY.md Auth de déploiement/réclamation, JWT, confirmation X, replay
references/CHAIN-4663.md Abandonner si Bankr ne dispose pas de Robinhood Chain
references/CLAIM-BANKR.md Réclamer sans Bankr submit + vérification
references/TX-VALIDATION.md Liste blanche des sélecteurs + checklist pré-submit
references/BANKR-SUBMIT.md Scan de sécurité Bankr — pas de contournement
references/RESPONSE-SAFETY.md Champs hint de confiance + formatage local
references/PROMPT-INJECTION.md Règles de tweet/metadata non fiables
references/IMAGE-RESOLUTION.md Validation du host du logo de déploiement
references/ONE-LINE-INTENTS.md Mappage tweet → API
references/HOLDER-NFTS.md Shares — réclamation via agent uniquement, pas de txs marketplace
streaming-hints.json Détection V3 vs Pro + codes d'erreur preflight
known-contracts.json Adresses Robinhood épinglées

Skills similaires