Aller au contenu

Ironfang MCP

Référence du serveur MCP

Connectez un assistant IA à votre organisation Ironfang avec une connexion OAuth classique. Il travaille avec vos propres produits et crédits, dans un budget que vous contrôlez, et ne détient jamais de clé.

Vue d'ensemble

Le serveur MCP Ironfang est un serveur Model Context Protocol distant. Un seul endpoint sert Ironfang Render, Ironfang Audit, Ironfang Finance et Ironfang Rig :

https://mcp.ironfang.uk/mcp
ProduitSupport MCPOutilsCe qui est couvert
Ironfang RenderDisponible17, nommés render.*Captures d'écran, PDF, QR codes, rendus de modèles, clips, lots, URL de rendu signées, destinations de livraison par webhook, tâches et utilisation. Les destinations de stockage contiennent des identifiants et restent dans le portail.
Ironfang AuditDisponible9, nommés audit.*Lire les sites, les audits, les constats, les règles et l'utilisation, et lancer un audit limité d'un site. La modification d'une règle, d'un site, d'une surveillance ou d'un constat reste dans le portail et l'API REST.
Ironfang FinanceOutils de référence uniquement3, nommés finance.*Référence uniquement : ce que signifie une règle de validation et comment la corriger, et quels jeux de règles le validateur exécute. La validation et la génération de documents, les résultats et les tâches passent uniquement par REST ; l'API Ironfang Finance accepte une clé API de la plateforme et n'a pas encore de délégation OAuth.
Ironfang RigDisponible19, nommés rig.*Projets et suites, exécutions et leurs ressources, la chronologie et les attentes, le rejeu, les pannes déterministes, l'amorçage du connecteur local, les manifestes de preuves et les reçus signés.
Ironfang AnalyticsNon disponibleAucunPas encore disponible via MCP. Les sites, les enregistrements, la lecture et la suppression se trouvent dans le portail et l'API REST.
PropriétéValeur
TransportHTTP streamable. POST /mcp uniquement ; il n'y a ni flux d'événements autonome ni identifiant de session, donc n'importe quelle réplique peut répondre à n'importe quelle requête.
Révision du protocole2026-07-28 est la révision actuelle. 2025-11-25, 2025-06-18, 2025-03-26 sont acceptées et renvoyées dans initialize pendant la période de compatibilité.
CapacitésOutils, modèles de ressources et l'extension io.modelcontextprotocol/tasks pour les travaux de longue durée. Pas de prompts, de sampling, de roots ni d'apps.
AutorisationOAuth 2.1 via id.ironfang.uk. Métadonnées de ressource à /.well-known/oauth-protected-resource/mcp.
StatutBêta, référencé dans le MCP Registry sous le nom uk.ironfang/ironfang. Les noms d'outils sont un contrat de compatibilité ; tout ce qui change la sémantique reçoit un nouveau nom.

MCP n'est pas un produit distinct et n'a pas de prix distinct. C'est une autre façon sûre d'utiliser les produits que vous avez déjà : le rendu et les audits consomment les crédits habituels de l'organisation, les lectures sont gratuites et chaque connexion a son propre budget de dépenses (voir crédits et budgets).

Compatibilité des clients

Le serveur parle OAuth standard. Claude Code et claude.ai sont testés par nos soins ; les autres clients MCP se connectent grâce aux mêmes standards.

Claude Code TestéAutomatique via CIMD
claude.ai TestéAutomatique via CIMD
Autres clients MCPBasé sur les standardsCIMD, ou DCR publique avec PKCE
Vous utilisez un autre client ? Tout client MCP qui prend en charge les Client ID Metadata Documents (CIMD) ou la Dynamic Client Registration publique avec PKCE peut se connecter.

Claude Code

claude mcp add --transport http ironfang https://mcp.ironfang.uk/mcp

Ensuite, dans Claude Code, lancez /mcp, choisissez ironfang puis Authenticate. Un onglet de navigateur s'ouvre sur id.ironfang.uk : connectez-vous, choisissez l'organisation pour laquelle cette connexion agit, vérifiez les portées et autorisez. L'onglet se ferme et les outils apparaissent.

Claude Desktop et claude.ai

Settings → Connectors → Add custom connector (les libellés de l'interface en anglais), nommez le connecteur Ironfang et saisissez https://mcp.ironfang.uk/mcp. La même connexion suit.

Ne collez jamais une clé API dans une conversation. Le serveur MCP n'accepte pas les clés API Ironfang comme identifiants ; les clés restent avec l'API REST, là où elles ont leur place.

Authentification

Le serveur est une ressource protégée par OAuth 2.1. Une requête non authentifiée reçoit 401 avec un challenge WWW-Authenticate qui pointe vers le document de métadonnées de la ressource ; à partir de là, un client découvre le serveur d'autorisation et termine le flux par code avec PKCE (S256). Le déroulement, du point de vue du client :

  1. Lire https://mcp.ironfang.uk/.well-known/oauth-protected-resource/mcp.
  2. Lire https://id.ironfang.uk/.well-known/oauth-authorization-server.
  3. S'identifier : par un Client ID Metadata Document (une URL HTTPS comme identifiant client, de préférence), ou en s'enregistrant comme client public sur /oauth/register.
  4. Envoyer la personne vers /oauth/authorize avec resource=https://mcp.ironfang.uk/mcp, les portées voulues et un challenge PKCE.
  5. La personne se connecte, choisit une organisation et donne son accord. Une connexion, c'est une personne, une organisation, un client.
  6. Échanger le code sur /oauth/token. Le jeton d'accès est de courte durée et destiné uniquement à la ressource MCP ; un jeton d'actualisation tournant maintient la connexion sans redemander.

Portées

Les portées sont celles du produit. Une portée n'est accordée que si la personne détient l'autorisation correspondante dans l'organisation choisie, et elle est revérifiée en direct à chaque appel : perdre une autorisation met fin à l'accès dans la minute.

PortéeAutorisation requisePermet à l'assistant de
ironfang:mcpappartenanceSe connecter, lister les outils et consulter cette connexion et ses budgets
render:renderrenderCréer des captures, des PDF, des QR codes, des clips et des rendus de modèles, et lire ou annuler ses propres tâches
render:usage:readusage.readLire la consommation de crédits de la période
render:templates:readtemplates.readLister les modèles et leurs noms de variables (jamais le balisage)
render:signrenderCréer des URL de rendu signées qui expirent sous 24 heures
render:destinationsdestinations.manageEnregistrer et tester les destinations des rendus terminés, et désigner une destination pour une tâche ou un lot
audit:readaudit.readLire les sites, audits, constats et règles
audit:runaudit.runLancer un audit manuel d'un site, dans la limite de ses pages et du budget de la connexion
audit:evidenceaudit.evidenceVoir où se trouve le paquet de preuves signé d'un audit et comment le vérifier ; les octets ne sont jamais servis par la connexion
rig:readrig.readLire les projets, suites, exécutions, ressources, pannes et connecteurs Ironfang Rig ; lire la chronologie d'une exécution et l'attendre ; lire le manifeste de preuves
rig:writerig.writeCréer des projets et créer ou réviser des suites
rig:runrig.runLancer, terminer et annuler des exécutions, allouer des ressources, armer et désarmer des pannes, rejouer un callback
rig:connectorrig.connectorÉmettre un jeton d'amorçage pour un connecteur local ; le jeton est renvoyé une seule fois et vit dix minutes

Un outil dont la portée n'a pas été accordée reste listé, pour qu'un client puisse la demander : l'appel répond 403 avec l'ensemble complet des portées dans le challenge, et le client relance le flux pour la portée supplémentaire.

Ce que le serveur fait du jeton

Rien ne quitte le serveur MCP avec votre jeton MCP. Pour appeler un produit, il demande à id.ironfang.uk un jeton distinct de deux minutes, destiné à ce produit, limité aux portées accordées et à l'organisation choisie, et marqué comme agissant en votre nom. Les produits refusent d'emblée un jeton MCP, et le serveur MCP refuse les jetons du portail ou des produits.

Révocation

Déconnectez un client depuis la page AI clients du portail ou depuis les paramètres de votre compte sur id.ironfang.uk. La révocation met fin à la famille de jetons d'actualisation et à la connexion ; un jeton d'accès encore valide cesse de fonctionner en moins de trente secondes, sans attendre son expiration.

Outils Ironfang Render

Les entrées des outils sont des objets JSON Schema stricts : les champs inconnus sont rejetés plutôt qu'ignorés, et chaque chaîne, taille et durée est bornée. Les outils de rendu acceptent une URL publique ou du HTML brut de taille bornée. Ils n'acceptent ni cookies, ni en-têtes d'autorisation, ni en-têtes de requête personnalisés, ni paramètres de proxy, ni scripts à exécuter, ni cibles sur un réseau privé.

OutilPortéeCréditsEffetRôle
ironfang.connection.getironfang:mcpGratuitLecture seule. Répond dans la requête.The current MCP connection: the organisation it acts for, the scopes it holds, the products available and its credit budgets.
render.batch.createrender:render1 per screenshot, 2 per PDF, up to 200Modifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Submit up to 100 screenshot or PDF jobs together, with a shared default and optional delivery. Credits are reserved for every item up front - one per screenshot, two per PDF - and the reservation settles at that total; poll render.batch.get for progress and each job's result.
render.batch.getrender:renderGratuitLecture seule. Répond dans la requête.A batch's progress: counts by status, whether it is done, and every job with its state, cost and result link once succeeded.
render.clip.createrender:renderup to 1 credit per secondModifie des données; une répétition agit de nouveau; accède à l'Internet public. Longue durée : toujours une tâche durable ; demander une task ou interroger l'outil get correspondant.Render a short captioned video clip (1-60 seconds) over a public image, video or solid colour. Always a durable job; ask for a task or poll render.job.get. Costs up to one Ironfang Render credit per second depending on size.
render.destination.createrender:destinationsGratuitModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Register an https endpoint to receive signed webhook deliveries when jobs finish. The signing secret is returned once, here, and never again; hand it to whoever runs the endpoint. Storage (S3) destinations carry credentials and are registered in the portal, not through an assistant.
render.destination.deleterender:destinationsGratuitDestructif : supprime ou abandonne quelque chose; peut être répété sans risque. Répond dans la requête.Stop deliveries to a destination and forget it. Jobs already naming it keep their delivery records; nothing new is sent.
render.destination.listrender:destinationsGratuitLecture seule. Répond dans la requête.Where this account's finished renders can be delivered: webhook endpoints and storage buckets registered in the portal or through render.destination.create. Ids from here go in a create tool's delivery block.
render.destination.testrender:destinationsGratuitModifie des données; peut être répété sans risque; accède à l'Internet public. Répond dans la requête.Send a test delivery now and report what happened. A destination that does not answer is a successful call with ok=false and the reason; nothing is wrong with the request.
render.job.cancelrender:renderGratuitDestructif : supprime ou abandonne quelque chose; peut être répété sans risque. Répond dans la requête.Cooperatively cancel a queued or running render job. Queued work is refunded in full; running work is charged only if it produced a usable output.
render.job.getrender:renderGratuitLecture seule. Répond dans la requête.The state of a render job created through this connection, with its cost and, once succeeded, the result metadata and a short-lived download link.
render.pdf.createrender:render2 creditsModifie des données; une répétition agit de nouveau; accède à l'Internet public. Longue durée : une tâche durable ; une task si le client en demande une, sinon interroger l'outil get correspondant.Render a public web page or raw HTML to PDF. Queued as a durable job. Costs two Ironfang Render credits.
render.qr.createrender:renderGratuitModifie des données; peut être répété sans risque. Répond dans la requête.Generate a QR code image for text or a URL. Free on every plan; returned inline as a data URL.
render.screenshot.createrender:render1 creditModifie des données; une répétition agit de nouveau; accède à l'Internet public. Longue durée : une tâche durable ; une task si le client en demande une, sinon interroger l'outil get correspondant.Capture a public web page or raw HTML as an image. Queued as a durable job: poll render.job.get for the result. Costs one Ironfang Render credit; cached repeats are free.
render.signed_url.createrender:signcharged when fetchedModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Create a signed URL that renders a screenshot or template when fetched. Nothing is charged until the link is used. Lifetime is at most 24 hours through MCP.
render.template.getrender:templates:readGratuitLecture seule. Répond dans la requête.One template's id, name, size and variable names.
render.template.listrender:templates:readGratuitLecture seule. Répond dans la requête.The organisation's Ironfang Render templates: id, name, size and the variable names each expects. Never the template markup.
render.template.renderrender:render + render:templates:read1 creditModifie des données; une répétition agit de nouveau. Longue durée : une tâche durable ; une task si le client en demande une, sinon interroger l'outil get correspondant.Render one of the organisation's templates with variables into an image. Queued as a durable job. Costs one Ironfang Render credit.
render.usage.getrender:usage:readGratuitLecture seule. Répond dans la requête.Ironfang Render usage for the current period: credits used, the plan limit and when the period resets.

Les descriptions et les coûts sont affichés ici en anglais, tels que le serveur les renvoie dans tools/list.

Les répétitions servies depuis le cache sont gratuites, exactement comme avec l'API REST, et le marquage des résultats de l'offre gratuite est le même quelle que soit la façon de générer. Chaque outil porte des indications (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) et des métadonnées avec espace de noms indiquant sa portée, son produit, son comportement en crédits et son risque, pour qu'un client puisse montrer à une personne ce qu'un appel va faire avant qu'il ne le fasse.

Tâches, tasks MCP et résultats

Chaque outil de création met en file une tâche durable Ironfang Render et répond immédiatement avec la même enveloppe, si bien qu'une nouvelle tentative ou une connexion perdue ne perd ni ne duplique jamais de travail :

{
              "request_id": "01a0...",
              "job_id": "01a0...",
              "status": "queued",
              "product": "render",
              "kind": "screenshot",
              "cached": false,
              "credits": { "reserved": 1, "charged": 0 },
              "result": null,
              "created_at": "2026-08-27T23:09:45Z",
              "connection_id": "01a0..."
            }

Interrogez render.job.get (ou lisez la ressource de la tâche). Une fois que status vaut succeeded, result contient le type de média, la taille en octets, le SHA-256, le moment où le résultat hébergé expire et un lien de téléchargement :

  • Les résultats hébergés sont conservés 24 heures après leur réussite.
  • Les liens de téléchargement sont signés et valables 15 minutes ; chaque lecture de la tâche ou de sa ressource de résultat en émet un nouveau.
  • Les liens sont la règle, même pour les captures d'écran. Les PDF, les clips et les images pleine page ne sont jamais renvoyés en ligne ; une capture de moins de 2 MiB peut l'être, uniquement si un client le demande explicitement.
  • Pour une conservation plus longue, téléchargez le résultat, ou désignez un webhook ou une destination de stockage dans le bloc delivery de l'outil de création (render.destination.list montre ce dont dispose le compte).

Un client qui prend en charge l'extension io.modelcontextprotocol/tasks demande une task en plaçant un objet task dans les paramètres de tools/call. Il reçoit alors un identifiant de task pour les captures, les PDF et les modèles, et doit en utiliser un pour les clips ; tasks/get reflète l'état de la tâche, tasks/result renvoie l'enveloppe et tasks/cancel est une annulation coopérative. Les autres clients reçoivent l'enveloppe ci-dessus et interrogent. Les deux chemins mènent au même résultat final. Les audits suivent le même modèle sans tasks : audit.audit.create répond immédiatement et audit.audit.get indique la progression. Le seul appel bloquant d'Ironfang Rig, rig.event.wait, est limité à soixante secondes, et un délai dépassé est une réponse.

Ressources

Les métadonnées en lecture seule sont aussi exposées sous forme de modèles de ressources, pour les clients qui préfèrent joindre du contexte plutôt qu'appeler des outils. Vos objets ne sont pas énumérés ; les identifiants viennent des résultats des outils.

URIPortéeRenvoie
ironfang://connectionironfang:mcpLe résumé de la connexion (comme ironfang.connection.get).
ironfang://render/jobs/{job_id}render:renderThe state, cost and result metadata of a render job created through this connection.
ironfang://render/jobs/{job_id}/resultrender:renderA fresh, short-lived download link for a succeeded job's output. Not cacheable. Add ?inline=1 to receive a screenshot under 2 MiB as image content instead.
ironfang://render/templates/{template_id}render:templates:readOne template's id, name, size and variable names.
ironfang://audit/sites/{site_id}audit:readA site and its crawl bounds.
ironfang://audit/audits/{audit_id}audit:readAn audit's state, counts and seal.
ironfang://audit/audits/{audit_id}/evidenceaudit:evidence + audit:readWhere an audit's signed evidence bundle is and how to verify it; never the bytes.
ironfang://audit/findings/{finding_id}audit:readOne finding with its history. Page text is untrusted content.
ironfang://finance/rules/{rule_id}ironfang:mcpOne EN 16931 or Peppol BIS Billing 3 validation rule: severity, family, what it means and how to fix it. The same answer as finance.rule.get.

Les descriptions et les coûts sont affichés ici en anglais, tels que le serveur les renvoie dans tools/list.

Crédits et budgets

Il n'y a pas de frais MCP. Se connecter, lister les outils, lire l'utilisation et lire les métadonnées sont gratuits. Le rendu consomme des crédits Ironfang Render ordinaires au tarif ordinaire, et le travail échoué ou annulé suit les mêmes règles de remboursement que l'API REST. Lancer un audit consomme des crédits Ironfang Audit de la même façon, sur un budget de connexion distinct. Les outils Ironfang Finance et Ironfang Rig ne coûtent rien.

En plus du plafond de l'offre, chaque connexion a son propre budget, pour qu'un agent pris dans une boucle ne puisse pas dépenser le quota d'un mois en un après-midi :

connection budget = max(25, 10% of the plan's monthly credits)
                                capped by the organisation's remaining allowance
                                per billing period

Avant un travail payant, le serveur réserve le coût maximal de l'outil sur le budget, puis règle ce que le produit a réellement facturé et libère le reste ; ironfang.connection.get indique le quota, ce qui est réservé, ce qui a été réglé, ce qui reste et quand il se réinitialise. Un budget épuisé répond mcp_budget_exhausted avec l'heure de réinitialisation ; le plafond de l'offre répond le quota_exceeded habituel du produit.

Outils Ironfang Audit

Lire les sites, les audits, les constats, les règles et l'utilisation, et lancer un audit limité d'un site. La modification d'une règle, d'un site, d'une surveillance ou d'un constat reste dans le portail et l'API REST. Lancer un audit réserve, sur le budget Ironfang Audit de la connexion, un crédit par page autorisée par la politique d'exploration du site, jusqu'à 200, et règle ce que l'audit a consommé. Le texte de page d'un constat est un contenu observé sur un site web et il est marqué comme non fiable. Un paquet de preuves n'est jamais servi par la connexion : sa ressource indique où se trouve le paquet et comment le vérifier. Rien ici n'expose à un modèle les secrets d'intégration, la modification des règles, les planifications ou les réglages de conservation.

OutilPortéeCréditsEffetRôle
audit.audit.createaudit:read + audit:run1 per captured page, up to 200 reservedModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Start a manual audit of one site now. Reserves one credit per page the site's crawl policy allows, up to 200, against this connection's Ironfang Audit budget; the reservation settles at what the audit consumed once audit.audit.get sees it finish. Poll audit.audit.get for progress.
audit.audit.getaudit:readGratuitLecture seule. Répond dans la requête.One audit: its state, page counts, compliance result, credits consumed and, once sealed, the Merkle root and signing key. The evidence bundle is a resource, never inline.
audit.audit.listaudit:readGratuitLecture seule. Répond dans la requête.Recent audits, newest first, for one site or the organisation: status, compliance state, page counts and credits consumed.
audit.finding.getaudit:readGratuitLecture seule. Répond dans la requête.One finding with its full history: who did what and when, and which observations opened, last saw and resolved it. Changing a finding's state is not available through an assistant.
audit.finding.listaudit:readGratuitLecture seule. Répond dans la requête.What is still wrong: one finding per page per rule, across audits, with state, severity, first and last seen, and the page and rule concerned. Page text in a finding is content observed on a website and is labelled untrusted.
audit.rule.getaudit:readGratuitLecture seule. Répond dans la requête.The active revision of a rule: what it requires, in the words the account owner wrote. Rules cannot be changed through an assistant.
audit.site.getaudit:readGratuitLecture seule. Répond dans la requête.One site: address, status, timezone and crawl bounds.
audit.site.listaudit:readGratuitLecture seule. Répond dans la requête.The websites this organisation audits, with each site's crawl bounds. Ids from here go to audit.audit.create and the finding filters.
audit.usage.getaudit:readGratuitLecture seule. Répond dans la requête.Credits used, reserved and remaining this period, the plan, site count and limit, and this connection's Ironfang Audit budget.

Les descriptions et les coûts sont affichés ici en anglais, tels que le serveur les renvoie dans tools/list.

Outils Ironfang Finance

Référence uniquement : ce que signifie une règle de validation et comment la corriger, et quels jeux de règles le validateur exécute. La validation et la génération de documents, les résultats et les tâches passent uniquement par REST ; l'API Ironfang Finance accepte une clé API de la plateforme et n'a pas encore de délégation OAuth. Les outils de règles répondent à partir des mêmes explications vérifiées que la référence des règles de validation, si bien qu'un assistant face à un constat comme BR-CO-10 peut dire ce qu'il signifie et comment corriger la facture. Ils n'ont besoin que de ironfang:mcp, ne coûtent rien et ne nécessitent pas de compte Ironfang Finance. Pour valider ou générer un document, appelez l'API REST avec une clé API de plateforme, ou utilisez le validateur gratuit.

OutilPortéeCréditsEffetRôle
finance.rule.getironfang:mcpGratuitLecture seule. Répond dans la requête.Look up one EN 16931 or Peppol BIS Billing 3 validation rule by the identifier a finding names, such as BR-CO-10. Returns the layer, family and severity, the official reference and, where Ironfang has reviewed the rule, what it means, how to fix the invoice, an example fragment and the rule's documentation page. Use it to interpret a finding from the Ironfang Finance API or the free validator. Read-only, free, no Ironfang Finance account needed.
finance.rule.listironfang:mcpGratuitLecture seule. Répond dans la requête.The validation rules Ironfang Finance runs, filtered by layer, family or severity: identifier, severity, family and, for explained rules, a title and documentation page. Defaults to the rules with a reviewed explanation; set=official lists every rule in the pinned artefacts. Page with offset and next_offset. Read-only, free.
finance.ruleset.listironfang:mcpGratuitLecture seule. Répond dans la requête.The immutable rulesets Ironfang Finance validates against: identifier, document type, specification releases, validity dates, whether it is the latest, and the engine that runs it. A validation result names the ruleset it used, so this is how to read that identifier. Read-only, free. Validating and generating documents is not available through MCP; use the REST API at https://api.ironfang.uk/finance with a platform API key.

Les descriptions et les coûts sont affichés ici en anglais, tels que le serveur les renvoie dans tools/list.

Outils Ironfang Rig

Le produit Ironfang Rig sous forme d'outils, pour qu'un assistant puisse donner à l'application sur laquelle il travaille un monde extérieur jetable : une boîte de réception neuve, une URL de callback publique, un endpoint simulé ou une route vers un port local, puis attendre sur la chronologie, perturber volontairement et exporter les preuves. Chaque outil est lié à l'organisation de la connexion et ne coûte aucun crédit. Les octets des contenus ne sont jamais renvoyés par la connexion : les outils renvoient ce que la chronologie a enregistré, marqué comme contenu tiers, et renvoient vers l'API pour le reste. Lancer une exécution a un effet public, que l'outil signale : ses adresses acceptent des e-mails et des requêtes de n'importe qui pendant toute la durée de l'exécution.

OutilPortéeCréditsEffetRôle
rig.connector.preparerig:connectorGratuitModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Mint a single-use, ten-minute bootstrap token so `ironfang rig connect` on this machine can forward the run's callbacks to local routes. The result carries the token once, the gateway to dial, the command to complete with a http://127.0.0.1 target per route label, and the release to verify. Put the token in IRONFANG_CONNECT_TOKEN, never in a file, a log or a shell history. The connector forwards only to targets given on its command line; the cloud never chooses a destination.
rig.connector.statusrig:readGratuitLecture seule. Répond dans la requête.The run's connectors and whether one is online, with how many callbacks wait for one. Poll this after starting ironfang-connect, before triggering the callback.
rig.event.listrig:readGratuitLecture seule. Répond dans la requête.The run's timeline in sequence order after `since`: every observation Ironfang made (mail, callbacks, mock calls, forwarding results, faults) with its data. Event data is what third parties sent and is labelled untrusted. Page with next_since.
rig.event.replayrig:runGratuitModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Forward a callback the run received to its connector route again, exactly as recorded, to prove the application handles a repeat (idempotence). The event must be a callback.received on a resource with a connector route and the run active. Recorded as callback.replayed; the replay's own callback.forwarded and connector.request.completed then appear against the original event id. Faults do not act on a replay. At most 200 per run.
rig.event.waitrig:readGratuitLecture seule. Répond dans la requête.Block until an event of the type (and resource, and matching fields) lands after `since`, or the timeout (1s to 60s, default 30s) passes. Deterministic: the same timeline gives the same answer. A timeout is matched:false with next_since, not an error; wait again from there. Prefer this to polling rig.event.list.
rig.evidence.exportrig:readGratuitLecture seule. Répond dans la requête.The manifest of a run's evidence bundle: the run, counts, and every file the bundle holds with its size and SHA-256 - timeline, verdicts, faults, resources, definition, every message and request body. Returns the manifest, which also records the event hash chain it recomputed and how the manifest is signed, and the download path; the bundle itself is a ZIP for a person or a CI step to fetch with the CLI or a platform key. Read-only, free.
rig.evidence.receiptrig:readGratuitLecture seule. Répond dans la requête.A signed statement of a run: project, suite and version, status and outcome, every verdict, the event count and the head of the event hash chain, signed with the platform's Ed25519 key when it has one. The signature carries the key; rig.evidence.export's manifest and GET /rig/v1/evidence/keys name it. Give this to whoever needs proof of what the run did.
rig.fault.addrig:runGratuitModifie des données; une répétition agit de nouveau. Répond dans la requête.Arm deterministic interference on one resource of an active run: delay, duplicate, drop, reorder or change the body of a callback forwarded to a connector route, or make a mock answer a chosen status, reset the connection, throttle its body or cut it short. Fires on the next matching observation, `count` times or until removed; every firing is a fault.injected event on the timeline. Use to prove the application survives duplicates, delays, reordering, corrupted payloads and dependency failures.
rig.fault.removerig:runGratuitModifie des données; peut être répété sans risque. Répond dans la requête.Disarm a fault so it fires no more. Its history stays on the timeline.
rig.project.createrig:writeGratuitModifie des données; une répétition agit de nouveau. Répond dans la requête.Create a project for one application. Use when rig.project.list has none that fits; a project is permanent and costs nothing.
rig.project.listrig:readGratuitLecture seule. Répond dans la requête.Ironfang Rig projects: the persistent containers suites live in. Ids from here go to rig.suite.upsert. Free; nothing changes.
rig.resource.createrig:runGratuitModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Allocate one more resource on an active run beyond what the suite declared: an inbox, a callback URL (optionally forwarded to a connector route), a mock with rules, or a route label. Public Internet effect as for rig.run.create; lives until the run ends.
rig.run.cancelrig:runGratuitDestructif : supprime ou abandonne quelque chose; peut être répété sans risque. Répond dans la requête.End a run without an outcome, for a test that was abandoned. Same effect as finishing on the run's addresses.
rig.run.createrig:runGratuitModifie des données; une répétition agit de nouveau; accède à l'Internet public. Répond dans la requête.Start a run of a suite's current version and allocate its resources: fresh inbox addresses, public callback and mock URLs, route labels. Public Internet effect: those addresses accept mail and requests from anyone who knows them until the run ends (its ttl, default 30m, at most 24h). Idempotent per call. Free; runs count toward the organisation's limits. Finish the run when done rather than letting it expire.
rig.run.finishrig:runGratuitModifie des données; peut être répété sans risque. Répond dans la requête.End a run with an outcome (pass, fail or none). Its addresses stop accepting at once; the timeline stays readable. Use when the test is over.
rig.run.getrig:readGratuitLecture seule. Répond dans la requête.One run: status, outcome, expiry, and its resources with the address or URL each answers at. Read this for the addresses to configure in the application under test.
rig.suite.getrig:readGratuitLecture seule. Répond dans la requête.One suite with its current definition, exactly as stored.
rig.suite.listrig:readGratuitLecture seule. Répond dans la requête.Suites in a project or the organisation: id, slug, current version. A suite is a persistent, versioned definition of the resources a run receives and the expectations it is judged by.
rig.suite.upsertrig:writeGratuitModifie des données; peut être répété sans risque. Répond dans la requête.Create a suite (project_id and slug) or revise one (suite_id) with a definition. Revising stores a new immutable version only when the definition changed; runs already started keep theirs. Free. Use before rig.run.create; do not use to change what a running test observes - add resources or faults to the run instead.

Les descriptions et les coûts sont affichés ici en anglais, tels que le serveur les renvoie dans tools/list.

Découverte

Tout ce dont un registre, un scanner ou un agent de code a besoin pour comprendre le serveur peut être lu sans jeton. Appeler un outil en demande toujours un.

DocumentContenu
/.well-known/ironfang-mcp.jsonLe catalogue des capacités : chaque produit, outil, schéma d'entrée, portée, indication, coût en crédits et prise en charge des tasks, plus les ressources et la façon de s'authentifier. Généré à partir des propres définitions d'outils du serveur. Un document Ironfang, pas un standard.
/docs/mcp.mdCette référence en Markdown (en anglais), générée à partir des mêmes données.
https://mcp.ironfang.uk/.well-known/oauth-protected-resource/mcpMétadonnées de ressource protégée OAuth (RFC 9728) : le serveur d'autorisation et les portées demandées par une première connexion.
https://id.ironfang.uk/.well-known/oauth-authorization-serverMétadonnées du serveur d'autorisation (RFC 8414) : endpoints, PKCE, Client ID Metadata Documents et enregistrement dynamique.
/llms.txtLa carte de chaque produit, contrat et document Ironfang, pour un modèle.
MCP RegistryRéférencé sous le nom uk.ironfang/ironfang.

Une fois connecté, initialize renvoie de courtes instructions qui nomment chaque préfixe d'outil et indiquent par où commencer, tools/list renvoie chaque outil avec son schéma, ses indications et ses métadonnées, et ironfang.connection.get renvoie l'organisation, les portées, les produits et les budgets de cette connexion.

Noms et compatibilité

Renderwolf, Auditwolf et Financewolf sont les noms sous lesquels Ironfang Render, Ironfang Audit et Ironfang Finance ont été lancés. Ce ne sont pas des produits distincts. Un alias est le nom sous lequel un produit a été lancé. Il reste appelable pour que les configurations enregistrées continuent de fonctionner, il n'est jamais listé par tools/list et ce n'est pas un produit distinct. Les URI de ressources sous les noms d'alias sont résolues de la même façon. Utilisez les noms actuels.

Préfixe de l'époque du lancementPréfixe actuelStatut
renderwolf.*render.*Alias. Appelable, jamais listé.
auditwolf.*audit.*Alias. Appelable, jamais listé.

Les portées suivent la même règle : un jeton ou une clé émis avec une portée de l'époque du lancement comme renderwolf:render est lu comme render:render. Les nouvelles connexions ne se voient proposer que les noms actuels.

Sécurité

  • Le jeton d'accès MCP est destiné à https://mcp.ironfang.uk/mcp et à rien d'autre ; les produits le rejettent, et le serveur MCP rejette les jetons destinés au portail ou à un produit.
  • Les appels aux produits utilisent un jeton distinct de deux minutes, émis à chaque appel, limité à vos portées accordées et à votre organisation choisie, et jamais une clé stockée.
  • Les portées sont revérifiées à chaque appel par rapport à vos autorisations actuelles dans l'organisation, et le statut d'autorisation de la connexion avec un cache d'au plus trente secondes qui refuse en cas de doute.
  • L'identité d'un client est un Client ID Metadata Document récupéré en HTTPS avec des protections contre les réseaux privés, les redirections et les tailles excessives, ou un enregistrement de client public à débit limité, retiré après trente jours sans utilisation. Les enregistrements ne peuvent pas choisir leurs propres portées.
  • Les outils de rendu refusent les cookies, les en-têtes d'autorisation et personnalisés, les proxys, l'exécution de scripts et les cibles sur un réseau privé. Le HTML brut est borné et jamais journalisé.
  • Les liens de téléchargement signés expirent au bout de quinze minutes et sont liés à l'organisation de la tâche.
  • Aucun outil n'émet de clés, ne gère les membres ou les clients, ne change d'offre, ne supprime de preuves ni n'appelle une API arbitraire.
  • Des limites de concurrence par connexion et par organisation, des plafonds de coût par appel et un coupe-circuit par outil bornent les dégâts qu'un client défaillant peut causer.

Dépannage

Chaque réponse porte X-Ironfang-Request-ID ; un identifiant de requête ou l'identifiant de connexion renvoyé par ironfang.connection.get suffit au support pour retrouver un appel. Communiquez-les, jamais un jeton.

Ce que vous voyezCe que cela signifieQue faire
redirect_uri not registered for clientLe callback enregistré du client ne correspond pas à celui qu'il a utilisé. Les callbacks loopback peuvent changer de port, mais pas d'hôte ni de chemin.Mettez à jour le client ou, si vous l'avez préenregistré à la main, enregistrez exactement le callback qu'il envoie.
the client's registration changed; start againLe document de métadonnées du client a changé entre l'ouverture de la page de consentement et votre clic sur Allow.Relancez la connexion.
"requires re-authorization (token expired)"La connexion n'avait pas de jeton d'actualisation, ou son jeton d'actualisation a été révoqué.Authentifiez-vous de nouveau ; une nouvelle connexion reçoit un jeton d'actualisation. Si cela se reproduit, la connexion a été révoquée depuis le portail.
"protocol version is not supported"Le client parle une révision que le serveur n'accepte pas.Mettez à jour le client. Les révisions à partir de 2025-03-26 sont acceptées.
403 avec insufficient_scopeL'outil a besoin d'une portée qui n'a pas été accordée à cette connexion.Laissez le client se réautoriser avec la portée indiquée dans le challenge ; vous devez détenir l'autorisation correspondante dans l'organisation.
tenant_access_lostVotre appartenance ou votre autorisation dans l'organisation choisie a été retirée.Reconnectez-vous et choisissez une organisation dont vous faites toujours partie.
connection_revokedLa connexion a été déconnectée dans le portail.Reconnectez-vous si ce n'était pas voulu.
product_not_enabledLe produit auquel appartient l'outil n'est pas disponible pour cette connexion.Vérifiez que l'organisation a un compte pour ce produit et que vous en détenez l'autorisation ; la bêta n'est peut-être pas encore activée pour l'organisation.
budget_store_unavailableLe serveur ne peut pas enregistrer les dépenses, il refuse donc le travail payant plutôt que de travailler sans compteur.Réessayez sous peu ; les lectures fonctionnent toujours. Si cela persiste, contactez le support.
mcp_budget_exhaustedLe budget de cette connexion pour la période est épuisé.Attendez la réinitialisation indiquée dans le message, ou demandez à un administrateur de l'organisation d'augmenter le budget de la connexion (jamais au-delà du quota restant de l'offre).
quota_exceededLes crédits de l'offre de l'organisation sont épuisés.Passez à une offre supérieure ou attendez la réinitialisation de la période.
not_available_in_betaUne capacité qui existe dans l'API REST est volontairement retenue hors de MCP pour l'instant.Utilisez l'API REST pour cela.
target_failedLa page n'a pas pu être rendue (délai dépassé, statut d'erreur, cible bloquée).Vérifiez que l'URL est publique et qu'elle répond ; le message est assaini et n'inclut jamais de détails internes.
result_not_ready / result_too_large / inline_not_allowedLa tâche n'a pas encore réussi, ou le résultat doit être récupéré par lien.Interrogez de nouveau ; utilisez le lien de téléchargement.

Confidentialité

Pour chaque appel MCP, Ironfang enregistre l'identifiant de connexion, l'organisation, le nom de l'outil, la méthode, le résultat, la latence, la taille de la requête et l'identifiant de requête. Il n'enregistre pas les arguments des outils, les prompts, les résultats des outils ni les réponses du modèle. Les rendus produits sont stockés comme tâches Ironfang Render selon la conservation ordinaire de l'organisation (24 heures pour les résultats hébergés) et sont visibles par cette organisation dans le portail. Les écrans de consentement et les enregistrements sont consignés comme événements de sécurité sur le compte. Déconnecter un client révoque ses jetons ; cela ne supprime pas les tâches que l'organisation a déjà payées.