AuxiliaryGatewayInventoryDetailResponse
The MCP Gateway Inventory read of one auxiliary gateway (MCPG-1880): the stored configuration the read-only detail view renders (PRD section 6). It carries the gateway settings, its applications, and per application only the tools and skills that gateway includes (PRD D2), with enabled state (PRD D5). It never carries credential material, a connection state, or a per-connection identifier: the gateway's `SharedCredentials` binding map is not even loaded on this path. `AuxiliaryGatewayInventoryContractTests` pins the whole graph, so adding a property here means updating that allowlist in the same PR, under review.
Properties
| Name | Type | Description |
|---|---|---|
| tenantId | string | Gets or sets the tenant the read was scoped to (always the caller's tenant). |
| gatewayId | string | Gets or sets the gateway identifier. |
| name | string | Gets or sets the gateway name. |
| scope | object | Gets or sets the gateway scope: `Tenant` or `Personal` (PRD 5.1). Named and typed to match the MCPG-1879 listing row, which the detail view is opened from. |
| ownerUserId | string | Gets or sets the user who owns the gateway. On a Personal gateway this is the user whose gateway it is; on a Tenant gateway it is whoever created it. |
| assignedUserIds | nullarray | Gets or sets the user principals granted access (MCPG-1706). Two states on the GET response (MCPG-2123 baked access assignments always on): an empty list means UNRESTRICTED, and a populated list means |
| assignedGroupIds | nullarray | Gets or sets the group principals granted access, with the same two-state reading as IReadOnlyList<Guid>? AuxiliaryGatewayInventoryDetailResponse.AssignedUserIds. |
| radarEnabled | boolean | Gets or sets a value indicating whether the gateway is surfaced through Radar in the UI. |
| allowedToolsAll | boolean | Gets or sets a value indicating whether the gateway includes every tool its apps serve. When true, every app's tool listing is one of the `all` forms. |
| instructions | nullstring | Gets or sets the gateway-wide markdown instructions, or null. Admin-authored guidance text, rendered as an input on the Gateway Settings panel (PRD A3). |
| instructionsToolDescription | nullstring | Gets or sets the custom description for the instructions tool, or null for the default. |
| updatedAt | string | Gets or sets when the gateway was last changed. |
| apps | array | Gets or sets the applications included in the gateway, in the stored order. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/stormmcp/json-schema/stormmcp-auxiliary-gateway-inventory-detail-response-schema.json",
"title": "AuxiliaryGatewayInventoryDetailResponse",
"description": "The MCP Gateway Inventory read of one auxiliary gateway (MCPG-1880): the stored configuration\nthe read-only detail view renders (PRD section 6). It carries the gateway settings, its\napplications, and per application only the tools and skills that gateway includes (PRD D2), with\nenabled state (PRD D5). It never carries credential material, a connection state, or a\nper-connection identifier: the gateway's `SharedCredentials` binding map is not even loaded\non this path. `AuxiliaryGatewayInventoryContractTests` pins the whole graph, so adding a\nproperty here means updating that allowlist in the same PR, under review.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/stormmcp-mcpgatewayinventory-api-openapi.yml#/components/schemas/AuxiliaryGatewayInventoryDetailResponse",
"type": "object",
"properties": {
"tenantId": {
"type": "string",
"description": "Gets or sets the tenant the read was scoped to (always the caller's tenant).",
"format": "uuid"
},
"gatewayId": {
"type": "string",
"description": "Gets or sets the gateway identifier.",
"format": "uuid"
},
"name": {
"type": "string",
"description": "Gets or sets the gateway name."
},
"scope": {
"description": "Gets or sets the gateway scope: `Tenant` or `Personal` (PRD 5.1). Named and typed\nto match the MCPG-1879 listing row, which the detail view is opened from.",
"$ref": "#/$defs/Level"
},
"ownerUserId": {
"type": "string",
"description": "Gets or sets the user who owns the gateway. On a Personal gateway this is the user whose\ngateway it is; on a Tenant gateway it is whoever created it.",
"format": "uuid"
},
"assignedUserIds": {
"type": [
"null",
"array"
],
"items": {
"type": "string",
"format": "uuid"
},
"description": "Gets or sets the user principals granted access (MCPG-1706). Two states on the GET\nresponse (MCPG-2123 baked access assignments always on): an empty list means UNRESTRICTED,\nand a populated list means restricted to those users. `null` is not a GET-response arm."
},
"assignedGroupIds": {
"type": [
"null",
"array"
],
"items": {
"type": "string",
"format": "uuid"
},
"description": "Gets or sets the group principals granted access, with the same two-state reading as\nIReadOnlyList<Guid>? AuxiliaryGatewayInventoryDetailResponse.AssignedUserIds."
},
"radarEnabled": {
"type": "boolean",
"description": "Gets or sets a value indicating whether the gateway is surfaced through Radar in the UI."
},
"allowedToolsAll": {
"type": "boolean",
"description": "Gets or sets a value indicating whether the gateway includes every tool its apps serve. When\ntrue, every app's tool listing is one of the `all` forms."
},
"instructions": {
"type": [
"null",
"string"
],
"description": "Gets or sets the gateway-wide markdown instructions, or null. Admin-authored guidance text,\nrendered as an input on the Gateway Settings panel (PRD A3)."
},
"instructionsToolDescription": {
"type": [
"null",
"string"
],
"description": "Gets or sets the custom description for the instructions tool, or null for the default."
},
"updatedAt": {
"type": "string",
"description": "Gets or sets when the gateway was last changed.",
"format": "date-time"
},
"apps": {
"type": "array",
"items": {
"$ref": "#/$defs/AuxiliaryGatewayInventoryAppResponse"
},
"description": "Gets or sets the applications included in the gateway, in the stored order."
}
},
"$defs": {
"AuxiliaryGatewayInventoryAppResponse": {
"type": "object",
"properties": {
"libraryId": {
"type": "string",
"description": "Gets or sets the library identifier.",
"format": "uuid"
},
"name": {
"type": [
"null",
"string"
],
"description": "Gets or sets the app display name, or null when the library is no longer on the tenant's\nlist. A null name is still a real inclusion and is rendered, not dropped: a gateway pointing\nat a library the tenant has since removed is something an audit should see."
},
"description": {
"type": [
"null",
"string"
],
"description": "Gets or sets the app description, or null when the library is unresolvable."
},
"longDescription": {
"type": [
"null",
"string"
],
"description": "Gets or sets the long-form app description backing the About App panel (PRD A4), or null."
},
"iconUrl": {
"type": [
"null",
"string"
],
"description": "Gets or sets the app icon URL."
},
"type": {
"oneOf": [
{
"type": "null"
},
{
"description": "Gets or sets the server type, or null when the library is unresolvable.",
"$ref": "#/$defs/McpServerType"
}
]
},
"toolListing": {
"type": "string",
"description": "Gets or sets how to read IReadOnlyList<AuxiliaryGatewayInventoryToolResponse> AuxiliaryGatewayInventoryAppResponse.Tools. One of\nAuxiliaryGatewayInventoryToolListings."
},
"tools": {
"type": "array",
"items": {
"$ref": "#/$defs/AuxiliaryGatewayInventoryToolResponse"
},
"description": "Gets or sets the tools this gateway includes for this app. Never the app's full catalog\n(PRD D2). Read it together with string AuxiliaryGatewayInventoryAppResponse.ToolListing, under which an empty array\nmeans \"not knowable here\" (`all_not_enumerable`), \"the gateway observed none\"\n(`all`, reachable only from a stamped authoritative-empty snapshot), or \"the admin\nchose none\" (`selected` and `selected_flat`)."
},
"toolsProvenance": {
"oneOf": [
{
"type": "null"
},
{
"description": "Gets or sets where IReadOnlyList<AuxiliaryGatewayInventoryToolResponse> AuxiliaryGatewayInventoryAppResponse.Tools was observed, or null when the stored snapshot did\nnot supply its membership. Non-null only under an `all` string AuxiliaryGatewayInventoryAppResponse.ToolListing.",
"$ref": "#/$defs/AuxiliaryGatewayInventoryProvenanceResponse"
}
]
},
"skillListing": {
"type": "string",
"description": "Gets or sets how to read IReadOnlyList<AuxiliaryGatewayInventorySkillResponse> AuxiliaryGatewayInventoryAppResponse.Skills. One of\nAuxiliaryGatewayInventorySkillListings."
},
"skills": {
"type": "array",
"items": {
"$ref": "#/$defs/AuxiliaryGatewayInventorySkillResponse"
},
"description": "Gets or sets the skills this gateway includes for this app. Read it through\nstring AuxiliaryGatewayInventoryAppResponse.SkillListing, under which an empty array means three different things:\n`not_skill_source` (this app contributes no skills at all, much the most common),\n`selected` (the admin deliberately chose none) and `all_not_enumerable` (the\ngateway includes them but nothing stored here can name them). It is never empty under\n`all`, which requires at least one readable row."
},
"skillsProvenance": {
"oneOf": [
{
"type": "null"
},
{
"description": "Gets or sets where IReadOnlyList<AuxiliaryGatewayInventorySkillResponse> AuxiliaryGatewayInventoryAppResponse.Skills was observed, or null when the stored snapshot did\nnot supply its membership. Non-null only under an `all` string AuxiliaryGatewayInventoryAppResponse.SkillListing.",
"$ref": "#/$defs/AuxiliaryGatewayInventoryProvenanceResponse"
}
]
}
},
"description": "One application included in the gateway, with the tools and skills that gateway includes."
},
"AuxiliaryGatewayInventoryProvenanceResponse": {
"type": "object",
"properties": {
"isStamped": {
"type": "boolean",
"description": "Gets or sets a value indicating whether the snapshot entry carries the complete MCPG-1832\nstamp. When false, every nullable property here is null and the rows cannot be dated;\nbool AuxiliaryGatewayInventoryProvenanceResponse.RevisionIsDerived is not nullable and is simply false, since there is no\nrevision for it to qualify."
},
"catalogVersion": {
"type": [
"null",
"string"
],
"description": "Gets or sets the content-derived catalog version of the observation, or null when unstamped."
},
"sourceRevision": {
"type": [
"null",
"string"
],
"description": "Gets or sets the source revision of the observation, or null when unstamped. Qualify it with\nbool AuxiliaryGatewayInventoryProvenanceResponse.RevisionIsDerived before treating it as one the source itself reported."
},
"sourceCoordinate": {
"type": [
"null",
"string"
],
"description": "Gets or sets the exact coordinate the observation was taken from, or null when unstamped.\nThis is what goes stale when an app is repointed: rows taken from a coordinate the app no\nlonger serves are the case this whole type exists to make visible."
},
"catalogGeneration": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"description": "Gets or sets the catalog generation the observation matched, or null when unstamped.",
"format": "int64"
},
"revisionIsDerived": {
"type": "boolean",
"description": "Gets or sets a value indicating whether string? AuxiliaryGatewayInventoryProvenanceResponse.SourceRevision was derived rather than\nreported by the source."
}
},
"description": "Where a stored list came from, so an auditor can tell a current observation from a stale one."
},
"AuxiliaryGatewayInventorySkillResponse": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Gets or sets the skill URL, which is its identity in the SEP-2640 index."
},
"name": {
"type": "string",
"description": "Gets or sets the skill display name, falling back to the url when the stored inventory\ncarries no name. Never identity: a name is display-derived and not unique across an index\n(MCPG-2072 S3)."
},
"description": {
"type": [
"null",
"string"
],
"description": "Gets or sets the skill description as the gateway observed it, or null when the stored\ninventory carries none. PRD A5 asks the detail page to show skills with their descriptions."
},
"enabled": {
"type": "boolean",
"description": "Gets or sets a value indicating whether the skill is enabled in this gateway. True for every\nrow, for the same reason as the tool sibling."
}
},
"description": "One skill the gateway includes for an app, drawn from the gateway's own stored selection\n(`AllowedSkillsByLibrary`) and described from the inventory it observed at save time\n(`StoredSkillDefinitions`), both added by MCPG-2072. No upstream is contacted, so PRD D2\nholds. Read the rows through the app's `skillListing`, which says whether they are the\nadmin's selection, everything the gateway observed, or a set it cannot enumerate."
},
"AuxiliaryGatewayInventoryToolResponse": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Gets or sets the upstream tool name."
},
"enabled": {
"type": "boolean",
"description": "Gets or sets a value indicating whether the tool is enabled in this gateway. True for every\nrow today, by construction: PRD D2 lists only the included set, so an excluded tool has no\nrow rather than a row with a false. The field is here because the read-only page renders a\ngreyed-out toggle whose position must be real (PRD D5), and because a future selection shape\nthat carries a per-tool disable would otherwise be invisible."
}
},
"description": "One tool the gateway includes for an app."
},
"Level": {
"enum": [
"Personal",
"Tenant"
]
},
"McpServerType": {
"type": "integer",
"description": "An mcp server type enumeration."
}
}
}
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/stormmcp-auxiliary-gateway-inventory-detail-response"
curl "https://apis.io/api/v1/json-schemas?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.