# Agents et MCP

Donnez à un agent un jeton dont il ne peut pas dépasser le plafond, et connectez-le via MCP.

## Donnez à l’agent son propre jeton

Dans **API & agents**, créez pour l’agent un jeton limité à ce dont il a besoin :

- Les portées **read** et **rent** (pas **manage** ni **billing**).
- Un **plafond de dépenses** en dollars, une **durée de location maximale** en heures et une **date d’expiration**.

Le jeton n’est affiché qu’une seule fois. Conservez-le dans le gestionnaire de secrets de l’agent, jamais dans un prompt ni dans un dépôt. Un jeton plafonné doit fixer une heure d’arrêt pour chaque location, et toute location qui dépasserait son plafond est refusée.

## Connexion via MCP

L’endpoint MCP est `$ARRAKIS_URL/mcp`, avec le jeton de l’agent. Il utilise le transport HTTP streamable de MCP, avec des réponses en JSON simple.

Claude Code:

```sh
claude mcp add --transport http arrakis $ARRAKIS_URL/mcp --header "Authorization: Bearer ark_..."
```

Cursor (`mcp.json`) :

```json
{
  "mcpServers": {
    "arrakis": {
      "url": "$ARRAKIS_URL/mcp",
      "headers": { "Authorization": "Bearer ark_..." }
    }
  }
}
```

## Outils

| Outil | Ce qu’il fait |
|---|---|
| `search_gpus` | Trouve des machines, les meilleures d’abord, selon les capacités du GPU, son prix et la fiabilité de son hôte. Recommande une machine et explique pourquoi. Filtres : type de GPU, nombre minimal et maximal de GPU, mémoire, prix maximal par heure de GPU, pays. |
| `get_market_summary` | Prix en temps réel et disponibilité par famille de GPU. |
| `get_balance` | Ce que le solde peut payer. |
| `rent_gpu` | Loue une machine et la renvoie avec sa commande SSH. Démarre `template_id` ou n’importe quelle `image` publique. Facturable. |
| `deploy_model` | Déploie un modèle Hugging Face avec vLLM, SGLang ou llama.cpp sur une machine dimensionnée pour lui, et renvoie son endpoint et sa clé d’API ([Déployer un modèle](/fr/docs/models)). Facturable. |
| `list_images` | Les images Arrakis et celles que vous avez enregistrées, pour `template_id`. |
| `list_instances` | Vos machines. |
| `get_instance` | L’état à jour d’une machine, avec tout avis de son hôte. |
| `get_events` | Ce qui est arrivé à vos machines : prêtes, terminées et pourquoi (évincées par leur hôte ou non), ainsi que les avis de leurs hôtes. Chaque résultat d’outil contient aussi les alertes des dernières 24 heures. |
| `terminate_instance` | Arrête et supprime une machine. |
| `schedule_removal` | Fixe l’heure à laquelle une machine se supprime d’elle-même. |
| `get_partner_earnings` | Partenaires : vos codes et votre lien, les clients que vous avez apportés, ce que vous avez gagné, et si le programme partenaire est ouvert. |
| `join_partner_program` | Inscrit le compte au programme partenaire, si son propriétaire est d’accord ([/partners](/fr/partners)). |

## Une nouvelle tentative ne loue jamais deux fois

Donnez à chaque location prévue une `idempotency_key` stable. Une nouvelle tentative avec la même clé renvoie la même machine au lieu d’une seconde facture. Via MCP, un appel sans clé qui répète la même machine, le même nom et le même nombre d’heures dans un délai de 10 minutes renvoie lui aussi la première machine.

## Un bon premier prompt

> Loue une B200 pendant 3 heures, lance python eval.py, rapatrie les résultats, puis arrête la machine.

Plus : [toute la documentation](/fr/docs.md) · [OpenAPI](/openapi.json) · [llms.txt](/fr/llms.txt)
