IntegrationOS · Schema

AiAgentView

`Eq` is absent for the same reason as on the record: `guardrails` carries a fractional dollar amount.

Artificial IntelligenceTrustLayerIntegrationPlatformDeveloper Tools

Properties

Name Type Description
active boolean
channels object
createdAt string
description stringnull
environment object
guardrails object
id string
memory object
model object
modelId stringnull
modelProvider object
name string
organizationId stringnull
projectId stringnull
runnerStatus object
runnerStopReason object
runtime object
status object
tags array
tools object
trialSeat booleannull Whether this agent occupies the owner's free-trial seat. Worth surfacing because it decides what happens when the trial ends: this is the agent stopped first, ahead of the least recently used. It is a
triggers object
updatedAt string
userId string
version string
volumeId stringnull
View JSON Schema on GitHub

JSON Schema

picaos-ai-agent-view-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/picaos/main/json-schema/picaos-ai-agent-view-schema.json",
  "title": "AiAgentView",
  "description": "`Eq` is absent for the same reason as on the record: `guardrails` carries a\nfractional dollar amount.",
  "x-generated": "2026-10-21",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/picaos-api-openapi.json#/components/schemas/AiAgentView",
  "properties": {
    "active": {
      "type": "boolean"
    },
    "channels": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/AiAgentChannels"
        }
      ]
    },
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "environment": {
      "$ref": "#/$defs/SecretKeyEnvironment"
    },
    "guardrails": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/AiAgentGuardrails"
        }
      ]
    },
    "id": {
      "format": "uuid",
      "type": "string"
    },
    "memory": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/AiAgentMemory"
        }
      ]
    },
    "model": {
      "$ref": "#/$defs/AiAgentModelType"
    },
    "modelId": {
      "type": [
        "string",
        "null"
      ]
    },
    "modelProvider": {
      "$ref": "#/$defs/AiModelProviderType"
    },
    "name": {
      "type": "string"
    },
    "organizationId": {
      "format": "uuid",
      "type": [
        "string",
        "null"
      ]
    },
    "projectId": {
      "format": "uuid",
      "type": [
        "string",
        "null"
      ]
    },
    "runnerStatus": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/PodStatusType",
          "description": "The state of this agent's runner, when it has one.\n\nThe agent's own lifecycle and its pod's are separate, and this field is\nwhat lets a caller see the second without conflating it into the first.\nAn agent that has never been run has no pod and reports `None`; one\nwhose pod was stopped - by the owner, or by a lapsed seat culling it -\nreports [`PodStatusType::Terminated`], which is what a console renders\nas paused.\n\nPopulated only by the read paths that opt in through\n[`ViewWithCtxExt::into_view_with_ctx`], so the write paths pay nothing\nfor it.\nAbsent from the wire rather than null when there is no runner, so a\nresponse for an agent that has never run is byte-identical to before."
        }
      ]
    },
    "runnerStopReason": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/PodStopReasonType",
          "description": "What stopped the runner, when it is stopped.\n\n`runnerStatus` alone cannot say: a pause the owner performed and a stop\nbilling performed both read `terminated`, which is the whole reason this\nexists. Absent while the runner is live, and on pods stopped before it\nwas recorded.\n\n**A cause, not a prediction.** It records the stop that happened and\nnothing re-derives it afterwards, so entitlement can move underneath it\nin both directions: an owner-paused agent stays `user_requested` when\nits seat later lapses, because the cull only counts what is running,\nyet `ensure` counts every undeleted agent and will refuse it; and a\nculled agent stays `seat_lapsed` after a replacement seat is bought,\nuntil a resume clears it. Use it to explain what happened - and ask\n`ensure` whether the agent can start, rather than guessing from\nthis."
        }
      ]
    },
    "runtime": {
      "$ref": "#/$defs/AiRuntimeType"
    },
    "status": {
      "$ref": "#/$defs/AiAgentStatusType"
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "tools": {
      "$ref": "#/$defs/AiAgentTools"
    },
    "trialSeat": {
      "description": "Whether this agent occupies the owner's free-trial seat.\n\nWorth surfacing because it decides what happens when the trial ends:\nthis is the agent stopped first, ahead of the least recently used. It\nis also the only way a caller learns whether a `useTrial` create took\neffect, since that flag is ignored rather than rejected when there is\nno live trial or another agent already holds the seat.\n\nAbsent from the wire rather than `false` on the paths that do not\nresolve it, so \"not on the trial seat\" is never confused with \"not\nasked\".",
      "type": [
        "boolean",
        "null"
      ]
    },
    "triggers": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/AiAgentTriggers"
        }
      ]
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "userId": {
      "format": "uuid",
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "volumeId": {
      "format": "uuid",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "userId",
    "name",
    "model",
    "status",
    "tools",
    "environment",
    "runtime",
    "modelProvider",
    "createdAt",
    "updatedAt",
    "version",
    "tags",
    "active"
  ],
  "type": "object",
  "$defs": {
    "AiAgentActionPolicy": {
      "description": "How much of an action surface an agent may exercise. The wire strings are\nkebab-case because that is how the console has always persisted them.",
      "enum": [
        "read-only",
        "read-write",
        "all"
      ],
      "type": "string"
    },
    "AiAgentApiChannel": {
      "description": "The agent's own HTTP surface. It carries no API key: that credential is\nissued and held elsewhere, never on the record.",
      "properties": {
        "enabled": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "rateLimit": {
          "default": null,
          "format": "int32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentChannels": {
      "description": "The messaging surfaces an agent answers on, and their settings.\n\nNo channel here carries a credential. Slack and Telegram bot tokens live in\nthe agent's pod secret (`channel-slack` / `channel-telegram`), encrypted at\nrest, so the fields do not exist on this type and serde drops them from\nwhatever a client sends. That is the guarantee, not a strip step a writer\nhas to remember.",
      "properties": {
        "api": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentApiChannel"
            }
          ]
        },
        "slack": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentSlackChannel"
            }
          ]
        },
        "telegram": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentTelegramChannel"
            }
          ]
        },
        "whatsapp": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentWhatsAppChannel"
            }
          ]
        },
        "widget": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentWidgetChannel"
            }
          ]
        }
      },
      "type": "object"
    },
    "AiAgentChatTrigger": {
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ],
      "type": "object"
    },
    "AiAgentConnections": {
      "description": "Which connections an agent may reach: every one its tenant holds, or a\nnamed list of connection keys.",
      "oneOf": [
        {
          "$ref": "#/$defs/EveryConnection"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ]
    },
    "AiAgentCronSchedule": {
      "properties": {
        "deliverTo": {
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "enabled": {
          "type": "boolean"
        },
        "expression": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "instructions": {
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": "string"
        },
        "timezone": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "label",
        "enabled",
        "expression"
      ],
      "type": "object"
    },
    "AiAgentDmPolicy": {
      "description": "Who may open a direct conversation with the agent on a channel.",
      "enum": [
        "open",
        "allowlist"
      ],
      "type": "string"
    },
    "AiAgentGroupPolicy": {
      "description": "Whether the agent answers every message in a group, or only when named.",
      "enum": [
        "always",
        "mention"
      ],
      "type": "string"
    },
    "AiAgentGuardrails": {
      "description": "The limits applied to an agent's behaviour.",
      "properties": {
        "actionPolicy": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentActionPolicy"
            }
          ]
        },
        "blockedActions": {
          "default": null,
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "maxBudgetUsd": {
          "default": null,
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "maxTurns": {
          "default": null,
          "format": "int32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentHandScope": {
      "description": "How much of a platform's surface a framework agent's One \"hands\" may use.",
      "enum": [
        "read",
        "write"
      ],
      "type": "string"
    },
    "AiAgentMcpServer": {
      "description": "An MCP server the agent may call.\n\nIt carries no headers: a header map is where an MCP server's bearer token\nwould sit, and a credential does not belong on the record. One that a\nclient sends is dropped, the way the channel bot tokens are.",
      "properties": {
        "name": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentMemory": {
      "description": "The console's session settings for the agent.\n\n`runtime`, `model_provider` and `model_id` are the copies the console wrote\nbefore each became a column of its own. The typed columns are what core\nreads; these are kept so a console still writing them round-trips.",
      "properties": {
        "maxSessionMessages": {
          "default": null,
          "format": "int32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "mode": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentMemoryMode"
            }
          ]
        },
        "modelId": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "modelProvider": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiModelProviderType"
            }
          ]
        },
        "runtime": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiRuntimeType"
            }
          ]
        },
        "sessionTimeout": {
          "default": null,
          "format": "int32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentMemoryMode": {
      "description": "How much of a conversation the agent carries between messages. The wire\nstrings are kebab-case because that is how the console has always persisted\nthem.",
      "enum": [
        "stateless",
        "per-session",
        "per-user"
      ],
      "type": "string"
    },
    "AiAgentModelType": {
      "enum": [
        "haiku",
        "sonnet",
        "opus",
        "fable"
      ],
      "type": "string"
    },
    "AiAgentSlackChannel": {
      "properties": {
        "channelPolicies": {
          "additionalProperties": {
            "$ref": "#/$defs/AiAgentGroupPolicy"
          },
          "default": null,
          "propertyNames": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "enabled": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "respondToMentions": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "workspaceName": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentStatusType": {
      "enum": [
        "active",
        "paused",
        "disabled"
      ],
      "type": "string"
    },
    "AiAgentSystemTools": {
      "description": "The runtime's own tools the agent may call.",
      "properties": {
        "bash": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "codeExecution": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "fileRead": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "fileWrite": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "webFetch": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "webSearch": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentTelegramChannel": {
      "properties": {
        "allowedChatIds": {
          "default": null,
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "botUsername": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "dmPolicy": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentDmPolicy"
            }
          ]
        },
        "enabled": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "groupPolicy": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentGroupPolicy"
            }
          ]
        }
      },
      "type": "object"
    },
    "AiAgentTools": {
      "description": "What the agent may reach: its connections, the actions and methods it is\nheld to on each, and the system tools it may call.\n\nEvery field is optional and the struct defaults, so a record written before\na field existed still reads back.",
      "properties": {
        "allowedActions": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "default": null,
          "propertyNames": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "allowedMethods": {
          "additionalProperties": {
            "items": {
              "$ref": "#/$defs/Method"
            },
            "type": "array"
          },
          "default": null,
          "propertyNames": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "connections": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentConnections"
            }
          ]
        },
        "handScopes": {
          "additionalProperties": {
            "$ref": "#/$defs/AiAgentHandScope"
          },
          "default": null,
          "propertyNames": {
            "type": "string"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "mcpServers": {
          "default": null,
          "items": {
            "$ref": "#/$defs/AiAgentMcpServer"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "skillIds": {
          "default": null,
          "items": {
            "$ref": "#/$defs/AiSkillId"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "systemTools": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentSystemTools"
            }
          ]
        }
      },
      "type": "object"
    },
    "AiAgentTriggers": {
      "properties": {
        "chat": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentChatTrigger"
            }
          ]
        },
        "cronSchedules": {
          "items": {
            "$ref": "#/$defs/AiAgentCronSchedule"
          },
          "type": "array"
        },
        "webhookSubscriptions": {
          "items": {
            "$ref": "#/$defs/AiAgentWebhookSubscription"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "AiAgentWebhookSubscription": {
      "properties": {
        "actionId": {
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "enabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "id": {
          "type": [
            "string",
            "null"
          ]
        },
        "instructions": {
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "relayId": {
          "type": [
            "string",
            "null"
          ]
        },
        "relayUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "thirdPartyWebhookId": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentWhatsAppChannel": {
      "properties": {
        "allowedNumbers": {
          "default": null,
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "dmPolicy": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentDmPolicy"
            }
          ]
        },
        "enabled": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "phoneNumber": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiAgentWidgetChannel": {
      "properties": {
        "allowedOrigins": {
          "default": null,
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "enabled": {
          "default": null,
          "type": [
            "boolean",
            "null"
          ]
        },
        "publicKey": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "theme": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentWidgetTheme"
            }
          ]
        }
      },
      "type": "object"
    },
    "AiAgentWidgetPosition": {
      "enum": [
        "bottom-right",
        "bottom-left"
      ],
      "type": "string"
    },
    "AiAgentWidgetTheme": {
      "properties": {
        "placeholder": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "position": {
          "default": null,
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/AiAgentWidgetPosition"
            }
          ]
        },
        "primaryColor": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        },
        "welcomeMessage": {
          "default": null,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "AiModelProviderType": {
      "description": "The model provider powering a framework agent's brain. Values mirror the\nwire ids the console has always written into `memory.modelProvider`\n(`openai-api`, not `openai`) so the typed column and the historical\nmarker can never disagree. Stored as text (the `Role` pattern) — the\nclosed set lives here in Rust, so admitting a provider is a code change,\nnever a Postgres enum migration.",
      "enum": [
        "anthropic",
        "openai-api",
        "gemini"
      ],
      "type": "string"
    },
    "AiRuntimeType": {
      "enum": [
        "claude",
        "hermes",
        "openclaw",
        "clockwork"
      ],
      "type": "string"
    },
    "AiSkillId": {
      "description": "Prefixed ID with 'ai_skill' prefix (e.g., 'ai_skill_1C'), also accepts raw integer",
      "type": "string"
    },
    "EveryConnection": {
      "description": "The `\"*\"` the console writes when an agent is held to no particular\nconnection.",
      "enum": [
        "*"
      ],
      "type": "string"
    },
    "Method": {
      "enum": [
        "OPTIONS",
        "GET",
        "POST",
        "PUT",
        "DELETE",
        "HEAD",
        "TRACE",
        "CONNECT",
        "PATCH"
      ],
      "type": "string"
    },
    "PodStatusType": {
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "terminated"
      ],
      "type": "string"
    },
    "PodStopReasonType": {
      "description": "Why a pod was stopped. The same operation reached two ways, and the\ndifference matters after the fact: a user pausing their runner and billing\nculling it for a lapsed seat leave an identical `terminated` row, and mean\ncompletely different things to whoever is asking why an agent went quiet -\none is \"I did that\", the other is \"resume will not help until you pay\".\n\nNull on a pod that has not been stopped, and on rows written before this was\nrecorded.\n\nDeliberately has no `Default`. \"Why did this stop\" has no sensible fallback:\nthe column is nullable precisely because *unknown* is the honest answer for\na pod stopped before it existed, and any default would answer that question\nwith a guess. `user_requested` in particular is the one value that makes a\nconsole offer a restart.",
      "enum": [
        "user_requested",
        "seat_lapsed"
      ],
      "type": "string"
    },
    "SecretKeyEnvironment": {
      "enum": [
        "test",
        "live"
      ],
      "type": "string"
    }
  }
}

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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/picaos-ai-agent-view"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.