What an AI client will be able to do
const url = 'https://api.flotera.com/api/v1/mcp/tools';const options = { method: 'GET', headers: {cookie: '__Host-erm_session=<__Host-erm_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.flotera.com/api/v1/mcp/tools \ --cookie __Host-erm_session=<__Host-erm_session>The tool catalog: name, what it does, its risk class and whether it is wired or only declared.
Readable BEFORE any client is connected, and deliberately so. Deciding whether to hand an AI access to a fleet requires seeing the exact list of what it could do — a page that only says “not available yet” gives no basis for that decision.
Write tools are listed with status: stub: they exist in the catalog
and change nothing when called. Hiding them would be worse — a model
that cannot find a tool starts looking for workarounds.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Tool catalog.
object
Where an MCP client points. Empty when the gateway is not published.
Scopes a personal access token needs for the read-only and the full tool set. Authorization is the token’s scopes intersected with the plan — there is no separate MCP permission model to keep in sync.
object
object
stub means the tool is declared and does nothing when called.
Domain scopes the tool needs. A grant never exceeds the scopes of the person who issued it.
What is not merely unbuilt but will never be exposed: money, identity, secrets, arbitrary execution.
Whether an AI client can be connected. False means the gateway address is not configured for this deployment.
Example
{ "tools": [ { "risk": "R0", "status": "ready", "entitlement": "mcp.read" } ]}Missing/invalid credentials (code=unauthorized).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}A dependency the endpoint needs is not configured or is temporarily unavailable (code=unavailable). The rest of the API keeps working — an absent external integration must not take the service down.
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}