fixRAgent Triage API

The diagnosis door.

GitHub OpenAPI

Operations 2

POST /api/triage Triage one photo #
OPTIONS /api/triage CORS preflight #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fixragent-com:fixragent-com-triage-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fixragent-com-triage-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: fixRAgent Triage API
  version: engine-v2-triage-door-1.0.0
  summary: 'One photo in, one triage out: what it is, whether it is broken, how urgent, and a link to tell us whether the answer was right.'
  description: 'POST a photo. You get back a CONTRACT v1 CORE triage of 20 fields, a server-assigned

    severity and tier, a `diagnosis_id`, and a `callback_url` for reporting what actually fixed it.


    **Severity and tier are assigned by the server, from the rubric, in code.** The model is asked for

    observations — four axis values and two photo-grounded booleans — and the server derives P1..P4 from

    them and the tier from P. A model''s own opinion of severity is recorded as

    `provenance.model_proposed_severity` and then overwritten, and the overwrite is recorded too.


    **Criterion 1.** Visible wiring in the photo, or water near anything electrical, is EMERGENCY by

    definition — no other axis can lower it. Where either fact is uncertain the engine answers false and

    the decision table decides instead; that is deliberate, so a dim photo of a basement is not an

    emergency.


    **This is a demo door.** Three guards stand in front of it, in this order:

    1. 20 requests per IP per 1 hour (the same scheme /api/diagnose uses) for callers without a key of their own; an issued key is judged by the key instead (a per-minute burst and its daily limit, counted in that server-only ledger).

    2. Your own key in the `x-triage-key` header, 60 requests per UTC day per key. A free key is emailed to you from https://fixragent.com/docs#key; each person gets their own.

    3. A daily spend brake at $250, counted from a call ledger only the server writes, so every server instance sees the same count (a key with its own cap is bounded by that cap instead). Past it the endpoint answers 503 with a plain-English message and

    spends nothing — the fuse is checked before the body is read.


    **About the spend figure.** Every dollar amount this API reports is COMPUTED from token counts and a

    declared price table. It is not metered and it is not a bill. It is labelled that way in the payload

    (`basis`), and it should be labelled that way anywhere it is quoted.


    **The core is checked, not just shaped.** Every emitted core is validated against all eight of CONTRACT-v1.json''s semantic rules before it leaves the handler, and the result rides in `contract_validation` on every 200. Violations are repaired and named, never silently fixed; a repair that moves severity says so in the payload, the warnings and a response header; a violation that survives repair refuses the whole response (502 `contract_unrepairable`).


    **Photos.** Every uploaded photo has its metadata stripped before it is hashed, sent to the engine, or

    stored. A photo whose metadata cannot be stripped is refused (415 or 500) rather than processed — there

    is no pass-through fallback, because a photo that still carries GPS looks identical to one that was

    cleaned. The cleaned photo is kept with its Triage Profile (a private store, shown to anyone with the

    profile''s link) unless the request sends `keep_photo: false`; the SHA-256 of the stripped image is always kept.'
  contact:
    name: AR Logic LLC
    url: https://fixragent.com
servers:
- url: https://fixragent.com
  description: Production. Same origin as the Triage Profile on the home page.
- url: /
  description: Same origin as the app.
tags:


# --- truncated at 32 KB (72 KB total) ---
# Full source: https://artifacts.apis.io/fixragent-com/openapi/fixragent-com-triage-api-openapi.yml