Properties
| Name | Type | Description |
|---|---|---|
| proposal | object | Complete projection rows are paged within 80,000 JSON bytes, accounting for both MCP representations. Defaults are bounded. Follow next_cursor with the same scope and filters. One oversized row is exp |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/plainrouter/main/json-schema/plainrouter-action-proposal-read-schema.json",
"title": "ActionProposalRead",
"x-generated": "2026-10-18",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/plainrouter-openapi.json#/components/schemas/ActionProposalRead",
"type": "object",
"properties": {
"proposal": {
"type": "object",
"description": "Complete projection rows are paged within 80,000 JSON bytes, accounting for both MCP representations. Defaults are bounded. Follow next_cursor with the same scope and filters. One oversized row is explicitly refused; fields are never silently clipped.",
"properties": {
"id": {
"type": "string"
},
"scope": {},
"evidence_provenance": {},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"approved_without_execution",
"auto_approved",
"rejected",
"executing",
"executed_pending_verification",
"compensating",
"measuring",
"completed",
"failed",
"rolled_back",
"rollback_incomplete",
"blocked",
"halted"
]
},
"policy_decision": {
"type": "string",
"enum": [
"allow",
"require_approval",
"block"
]
},
"policy_reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"approval_required": {
"type": "boolean"
},
"inbox_url": {
"type": "string"
},
"approval_queue_url": {
"type": "string"
},
"rationale": {
"type": "string"
},
"proposed_by": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"required": [
"type",
"id",
"name"
]
},
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"increase_budget",
"decrease_budget",
"pause",
"resume",
"replace_creative",
"shift_spend",
"rollback",
"create_campaign",
"create_ad_set",
"create_ad",
"upload_asset",
"adjust_budget",
"set_status",
"duplicate_ad_with_creative",
"duplicate_adset",
"duplicate_ad_with_creative_v2"
]
},
"target_entity": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"required": [
"type",
"id",
"name"
]
},
"params": {
"anyOf": [
{
"type": "object",
"additionalProperties": {}
},
{
"type": "array",
"items": {}
}
]
},
"rationale": {
"type": "string"
},
"proposed_by": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"required": [
"type",
"id",
"name"
]
},
"policy_decision": {
"type": "string",
"enum": [
"allow",
"require_approval",
"block"
]
},
"policy_reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"policy_evidence": {}
},
"required": [
"id",
"type",
"target_entity",
"params",
"rationale",
"proposed_by",
"policy_decision",
"policy_reasons",
"policy_evidence"
]
}
},
"next_cursor": {
"type": [
"integer",
"null"
]
},
"truncated": {
"type": "boolean"
},
"continuation": {
"type": "string"
},
"total": {
"type": "integer"
}
},
"required": [
"id",
"scope",
"evidence_provenance",
"status",
"policy_decision",
"policy_reasons",
"approval_required",
"inbox_url",
"approval_queue_url",
"rationale",
"proposed_by",
"actions"
]
}
},
"required": [
"proposal"
]
}
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
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/plainrouter-action-proposal-read"
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.