Aller au contenu
HodeiShield®

API, CLI et MCP : vos données de risque, en lecture seule.

Une API REST publique et versionnée sur api.hodeishield.com, un CLI en code ouvert et un serveur MCP hébergé qui la consomme. Aucune surface pour développeurs ne modifie les données de votre locataire.

  • Clés d’API avec scopes ou OAuth 2.1 avec PKCE.
  • CLI Apache-2.0 avec signature Sigstore et provenance SLSA.
Un appel, de bout en bout
curl -H "Authorization: Bearer $HODEISHIELD_API_KEY" "https://api.hodeishield.com/v1/vendors?per_page=5"
Forme de la réponse (structure, sans données)
{
  "data": [ … ],
  "pagination": {
    "page": 1, "per_page": 5,
    "total": …, "total_pages": …
  }
}

Cinq surfaces, un même contrat

Toutes lisent les données de votre locataire. Aucune n’écrit.

CLI hodeishield

Linux x86_64 et arm64 · macOS universel · Windows x86_64

Client officiel en ligne de commande, pour le terminal et les scripts.

  • Apache-2.0, version 0.3.1 (0.x : les commandes et la sortie peuvent changer).
  • Chaque version est signée avec Sigstore et dotée d’une provenance SLSA.
  • Support de 5 ans par version majeure, à compter de la 1.0.0 ; la fin de support est annoncée 12 mois à l’avance.
  • La série 0.x reçoit des correctifs de sécurité dans sa dernière version ; les mises à jour de sécurité restent disponibles après l’expiration d’un abonnement.

Portée: Lecture seule. S’installe avec Homebrew (macOS et Linux), avec Scoop (Windows) ou depuis l’archive de la version.

Serveur MCP hébergé

https://mcp.hodeishield.com/mcp

Votre assistant d’IA lit vos données via le protocole MCP, sans rien installer.

  • 11 outils en lecture seule, un par opération de /v1.
  • OAuth 2.1 avec PKCE et sessions limitées à un seul locataire.

Portée: Ne modifie rien. Les résultats sont placés dans une enveloppe contre l’injection de prompt.

Webhooks sortants

Votre endpoint HTTPS reçoit les événements du locataire selon vos règles d’acheminement, signés avec HMAC-SHA256.

  • Signature horodatée pour détecter les rejeux.
  • Jusqu’à six tentatives de livraison (cinq nouvelles tentatives) si vous ne répondez pas par 2xx.

Portée: C’est une destination d’alertes : il notifie, il n’exécute rien dans HodeiShield.

API : authentification, scopes et opérations

Chaque clé appartient à un locataire et ne porte que les scopes de lecture dont elle a besoin.

Comment on s’authentifie

Un administrateur crée la clé dans la console, avec un nom, une date d’expiration et uniquement les scopes nécessaires. Le jeton (hsk_…) n’est affiché qu’une fois. Pour agir au nom d’une personne précise, par exemple depuis le CLI ou un assistant, on utilise OAuth 2.1 avec PKCE.

supply_risk:read
Fournisseurs, alertes et risques
compliance.<framework>:read
Contrôles et posture d’un référentiel donné
evidence:read
Preuves
endpoints:read
Postes avec agent

Réponse et erreurs

Les collections acceptent page (à partir de 1) et per_page (de 1 à 200, 50 par défaut) et renvoient data et pagination. Les erreurs portent toujours la même enveloppe, avec un request_id pour le support.

Première lecture

curl -H "Authorization: Bearer $HODEISHIELD_API_KEY" "https://api.hodeishield.com/v1/vendors?per_page=5"

Document OpenAPI (sans authentification)

curl https://api.hodeishield.com/v1/openapi.json

Le document généré sur /v1/openapi.json fait foi ; il sert à générer des clients typés.

Opérations

OpérationRequêteScope
FournisseursGET /v1/vendors · /v1/vendors/{id}supply_risk:read
AlertesGET /v1/alerts · /v1/alerts/{id}supply_risk:read
RisquesGET /v1/risks · /v1/risks/{id}supply_risk:read
Contrôles de conformitéGET /v1/compliance/controls?framework=…compliance.<framework>:read
Posture d’un référentielGET /v1/compliance/frameworks/{framework}compliance.<framework>:read
PreuvesGET /v1/evidence · /v1/evidence/{id}evidence:read
EndpointsGET /v1/endpointsendpoints:read
Document OpenAPIGET /v1/openapi.jsonaucun

CLI : installer, vérifier et lire

Installez-le avec Homebrew ou Scoop, ou téléchargez l’archive de votre plateforme depuis la version publiée, vérifiez-la et placez-la dans votre PATH.

Installer

Homebrew (macOS et Linux) et Scoop (Windows x86_64) installent la version 0.3.1 depuis des dépôts publics de Hodeitek. L’exécutable Windows est signé avec Authenticode ; celui de macOS ne l’est pas encore.

Homebrew (macOS et Linux)

brew install hodeitek/hodeishield/hodeishield

Homebrew, si vous avez déjà ajouté le tap

brew trust --formula hodeitek/hodeishield/hodeishield

Scoop (Windows)

scoop bucket add hodeishield https://github.com/Hodeitek/scoop-hodeishield; scoop install hodeishield

Vérifier le téléchargement

Chaque version publie SHA256SUMS, un paquet Sigstore par archive et la provenance SLSA ; depuis la version 0.2.0, elle publie aussi un SBOM CycloneDX par archive. Les archives sont des .tar.gz sous Linux et macOS et des .zip sous Windows. Une signature cosign valide prouve que l’archive a été construite par le workflow release.yml du dépôt, lancé par le tag exact que vous attendez.

sha256sum --ignore-missing -c SHA256SUMS
cosign verify-blob hodeishield-0.3.1-x86_64-unknown-linux-musl.tar.gz --bundle hodeishield-0.3.1-x86_64-unknown-linux-musl.tar.gz.sigstore.json --certificate-identity https://github.com/Hodeitek/hodeishield-cli/.github/workflows/release.yml@refs/tags/v0.3.1 --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-github-workflow-trigger push

Plateformes

  • Linux x86_64 (musl)
  • Linux arm64 (musl)
  • macOS, Apple silicon et Intel
  • Windows x86_64

On peut aussi le compiler depuis le code source avec cargo install --locked, en fixant le tag de la version.

L’utiliser

Avec --json, il affiche la réponse de l’API sans y toucher ; avec --csv, il sort les listes en CSV ; avec --all, il parcourt toutes les pages. Les codes de sortie vont de 0 à 8 et distinguent, par exemple, un identifiant absent, un scope insuffisant, une limite d’usage ou une licence du locataire non valide.

Avec une clé d’API (scripts, CI)

export HODEISHIELD_API_KEY=hsk_...

En tant que personne (navigateur, 2FA, passkey ou SSO)

hodeishield login
hodeishield whoami
hodeishield vendors list --criticality critical
hodeishield compliance posture nis2
hodeishield alerts list --status open --all --json | jq -r '.[] | [.severity, .title] | @tsv'

MCP : connectez votre assistant

Un serveur hébergé, sans installation. L’assistant voit la même chose que vous dans le locataire que vous choisissez, et uniquement avec les scopes que vous accordez.

Comment il se connecte

Dans un client MCP prenant en charge les serveurs distants et OAuth, ajoutez un connecteur avec cette URL. Le client découvre seul le serveur d’autorisation ; vous vous connectez à app.hodeishield.com avec vos facteurs habituels et vous choisissez un seul locataire.

URL du serveur MCP

https://mcp.hodeishield.com/mcp

Onze outils en lecture seule

  • list_vendors
  • get_vendor
  • list_alerts
  • get_alert
  • list_risks
  • get_risk
  • list_compliance_controls
  • get_framework_posture
  • list_evidence
  • get_evidence
  • list_endpoints

Aucun n’accepte un identifiant de locataire en paramètre : il n’y a aucun moyen de demander les données d’un autre.

Modèle de sécurité

  • Chaque résultat est placé dans une enveloppe qui le marque comme donnée du locataire, jamais comme instruction pour l’assistant.
  • Le texte d’un fournisseur, d’une preuve ou d’une note a été écrit par une personne ou un tiers. Un modèle de langage peut le traiter comme un ordre : vérifiez avec d’autres outils toute action que l’assistant propose à partir de lui.
  • Le journal enregistre quel outil a été appelé et son résultat technique, jamais les arguments, les résultats ni votre jeton.
  • Le serveur applique sa propre limite d’usage par utilisateur.

Webhooks signés avec HMAC

Vérifiez toujours la signature avant de traiter le corps, et rejetez les horodatages anciens.

En-têtes de chaque livraison

X-HodeiShield-Timestamp
Horodatage en secondes ; change à chaque tentative.
X-HodeiShield-Signature-256
sha256= suivi du HMAC-SHA256 du secret sur "{timestamp}.{body}".
X-HodeiShield-Delivery
Identique à chaque nouvelle tentative d’une livraison ; sert à dédupliquer.
X-HodeiShield-Event
Type d’événement.

Le secret (whsec_…) n’est affiché qu’une seule fois à la création du webhook ; si vous le perdez, il est renouvelé. Si votre endpoint ne répond pas 2xx, la livraison est tentée jusqu’à six fois au total (cinq nouvelles tentatives, avec une attente de 5 minutes à 24 heures) ; une fois les tentatives épuisées, la livraison est marquée comme échouée dans la console et vous pouvez la remettre en file.

Vérification (Python)

import hashlib
import hmac

def is_valid(secret: str, timestamp: str, body: bytes, received_signature: str) -> bool:
    message = f"{timestamp}.".encode() + body
    expected = "sha256=" + hmac.new(secret.encode(), message, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, received_signature)

Vérifiez une attestation hors ligne

Le vérificateur est un script bash et Python que vous pouvez lire en entier. Il n’appelle pas HodeiShield au moment de vérifier.

Portée: Prouve l’intégrité, l’origine et le moment de ce qui est signé. Ne prouve pas que les affirmations soient vraies, ne remplace pas un audit et il n’existe pas de registre de transparence. Passez toujours --expect-slug et --expect-issuer : sans eux, l’attestation valide d’une autre organisation se vérifie aussi. Le code de sortie est 0 si la vérification réussit, 1 si elle échoue et 2 si elle n’a pas pu être effectuée. Un document authentique mais expiré sort avec 1 et sa dernière ligne commence par « EXPIRED — the signature is valid ».

Prérequis : bash 4, OpenSSL 3.5 ou supérieur et python3. Si votre machine ne les a pas (macOS, Windows ou Ubuntu 24.04), le dépôt du vérificateur documente comment exécuter le même script dans un conteneur avec Docker ou Podman ; cette voie installe OpenSSL et python3 au démarrage, elle nécessite donc un accès réseau.

curl -s https://app.hodeishield.com/api/public/attest/keys -o keys.json
./verify-attestation.sh --attestation attestation.json --jwks keys.json --expect-slug SLUG --expect-issuer https://app.hodeishield.com

Ce que ces surfaces ne font pas

Pour que vous ne le découvriez pas au moment de les intégrer.

  1. Elles n’écrivent pas

    L’API, le CLI et le MCP sont en lecture seule. Pour agir sur le locataire, on utilise la console, et ACT passe toujours par une personne.

  2. Le CLI est en 0.x

    Les commandes et la sortie peuvent changer avant la 1.0. Fixez la version dans vos scripts.

  3. Le MCP dépend de votre client

    Le serveur ne contrôle pas ce que votre client fait des résultats. Traitez comme non fiable le texte de tiers qu’ils contiennent.

  4. Accès par licence et par locataire

    La disponibilité de l’API et du MCP dépend de votre licence et se confirme par locataire ; nous le voyons pendant la démo.

  5. Pas de chiffres de performance

    Nous ne publions sur ce site ni SLA, ni temps de réponse, ni disponibilité de l’API.

  6. Les données ne sont pas en temps réel

    L’API renvoie ce que la plateforme a déjà recueilli : l’agent remonte ses informations par cycle et les analyses sont périodiques.

Questions d’intégration

Ce que demande d’ordinaire une équipe technique avant de commencer.

Puis-je écrire des données avec l’API ?

Non. L’API /v1 est en lecture seule : toute méthode autre que GET renvoie 405. Le CLI et le MCP l’utilisent, ils n’écrivent donc pas non plus.

Comment authentifier un script ou un pipeline de CI ?

Avec une clé d’API de locataire (hsk_…) créée par un administrateur avec uniquement les scopes de lecture nécessaires. Dans le CLI, il suffit d’exporter HODEISHIELD_API_KEY.

Comment savoir que le CLI que je télécharge est l’officiel ?

Chaque version publie SHA256SUMS, des paquets Sigstore et la provenance SLSA. Vérifiez avec cosign que l’archive a été construite par le workflow release.yml du dépôt pour le tag exact.

Que voit mon assistant via le MCP ?

Ce que vous verriez vous-même dans l’unique locataire que vous choisissez en accordant l’accès, et uniquement avec les scopes que vous octroyez. Aucun outil n’accepte d’identifiant de locataire.

Puis-je vérifier une attestation sans avoir de compte ?

Oui. Vous téléchargez la clé publique depuis /api/public/attest/keys et vous exécutez le vérificateur en code ouvert. Il fonctionne hors ligne avec bash 4, OpenSSL 3.5 et python3, ou dans un conteneur avec Docker ou Podman.

Intégrez HodeiShield à ce que vous avez déjà

Pendant la démo, nous voyons ce qu’il faut lire par API, CLI ou MCP, et comment cela s’articule avec vos alertes et vos pipelines.

Un échange de travail, sans engagement.