> ## Documentation Index
> Fetch the complete documentation index at: https://docs.imoria.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Connexion HTTP/SSE directe

> Appeler Imoria en HTTP direct. Pour les intégrations custom, scripts, ou clients qui ne supportent pas encore MCP.

Pour un script, une application interne, ou un client IA qui ne supporte pas MCP nativement, le serveur Imoria s'appelle directement en HTTP.

Cette page suppose une familiarité avec HTTP et JSON. C'est la voie technique. Pour la voie grand public, retourner au [hub d'installation](/demarrer/installation).

## Endpoint

| Champ        | Valeur                                               |
| ------------ | ---------------------------------------------------- |
| Base URL     | `https://mcp.imoria.net/mcp`                         |
| Méthode      | POST (JSON-RPC, supporte SSE via header `Accept`)    |
| Content-Type | `application/json`                                   |
| Auth         | Header `Authorization` selon les modalités convenues |

Le serveur implémente le profil **Streamable HTTP** du Model Context Protocol. Toutes les opérations passent par la même URL POST `/mcp` ; pas d'endpoint SSE séparé.

## Vérifier que le serveur répond

Appel JSON-RPC minimal qui retourne la liste des outils accessibles au caller :

```bash title="Liveness via tools/list" theme={null}
curl -X POST -H "Content-Type: application/json" \
     -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
     https://mcp.imoria.net/mcp
```

Réponse type :

```json title="Réponse JSON-RPC" theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      { "name": "search_ads",           "description": "...", "inputSchema": { ... } },
      { "name": "estimate_ad_value",    "description": "...", "inputSchema": { ... } },
      { "name": "analyze_location",     "description": "...", "inputSchema": { ... } }
    ]
  }
}
```

Le serveur peut aussi renvoyer `401 Unauthorized` si l'authentification est manquante : c'est attendu et signale simplement que le serveur est en ligne.

## Diagnostic rapide (GET)

Une route REST légère liste les outils visibles au caller, utile pour valider l'authentification :

```bash title="GET /mcp/tools" theme={null}
curl https://mcp.imoria.net/mcp/tools
```

```json title="Réponse" theme={null}
{ "email": "...", "tools": ["search_ads", "estimate_ad_value", "..."] }
```

## Appeler un outil

Exemple : chercher les T2 sous-cotés à Nancy sous 180 k€ via `find_undervalued_ads`.

```bash title="Appel d'outil" theme={null}
curl -X POST -H "Content-Type: application/json" \
     -d '{
       "jsonrpc": "2.0",
       "id": 2,
       "method": "tools/call",
       "params": {
         "name": "find_undervalued_ads",
         "arguments": {
           "archetype": "appartement",
           "city": "Nancy",
           "minBedrooms": 1,
           "maxBedrooms": 2,
           "maxPrice": 180000
         }
       }
     }' \
     https://mcp.imoria.net/mcp
```

Le serveur répond avec un payload JSON-RPC contenant les annonces classées par décote, leur `dealScorePct` et leur `confidence`.

## Flux SSE (Server-Sent Events)

Pour les outils qui streament leur réponse (analyses longues), ajouter le header `Accept: text/event-stream` au même endpoint POST. Le serveur upgrade la connexion en stream SSE.

```bash title="POST /mcp en mode SSE" theme={null}
curl -N -X POST \
     -H "Content-Type: application/json" \
     -H "Accept: text/event-stream" \
     -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{...}}' \
     https://mcp.imoria.net/mcp
```

Chaque événement arrive sous la forme `data: {...}\n\n` jusqu'à la fin de la session.

## Exemple Python

```python title="Exemple Python" theme={null}
import requests

BASE = "https://mcp.imoria.net/mcp"

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "estimate_ad_value",
        "arguments": {"adId": "11111111-1111-1111-1111-111111111111"},
    },
}

response = requests.post(BASE, json=payload, timeout=30)
response.raise_for_status()
print(response.json())
```

## Pour aller plus loin

* La [Référence outils](/ressources/reference-outils) liste tous les outils MCP publics et leurs paramètres principaux.
