application · active

Socialize

Social publishing and campaign tooling with brand-scoped workflows, Nexus-authoritative connected-provider state, and local reference-only target selection.

Documentation map

  • Socialize — Public overview of the social publishing platform, brand-scoped resource bindings, and content operations.

Authority and runtime

System ID
socialize
App IDs
app_topolo_socialize
Owners
socialize
Repositories
apps/TopoloSocialize
Hosts
https://socialize.topolo.app, https://socialize-api.topolo.app, https://socialize.stg.topolo.us, https://socialize-api.stg.topolo.us
Dependencies
topolo-auth, topolo-brand, topolo-nexus, topolo-one, applications-packages

Security and data ownership

Risk tier
high
Tenant isolation
organization_scoped
Privacy classification
restricted
Storage
d1, external_provider, kv, r2
Export and deletion
planned
Enterprise ready
no

Source-derived capability inventory

Source revisions: apps/TopoloSocialize@8a2994cc3a2d7b517df53e4a14f0fdb503ce8fe5

Declared actions: 173 · API routes: 198 · UI routes: 38

{
  "id": "socialize",
  "name": "Socialize",
  "slug": "socialize",
  "kind": "application",
  "visibility": "public",
  "repo_paths": [
    "apps/TopoloSocialize"
  ],
  "source_revisions": [
    {
      "source_path": "apps/TopoloSocialize",
      "repository": "apps/TopoloSocialize",
      "revision": "8a2994cc3a2d7b517df53e4a14f0fdb503ce8fe5",
      "ref": "origin/staging"
    }
  ],
  "source_counts": {
    "source_files": 445,
    "test_files": 151,
    "test_cases": 0,
    "migration_files": 17,
    "database_tables": 0,
    "manifests": 1,
    "deploy_targets": 3,
    "actions": 173,
    "mobile_contracts": 1,
    "notifications": 9,
    "package_manifests": 8,
    "deployment_configs": 0
  },
  "manifests": [
    {
      "source_path": "apps/TopoloSocialize/topolo.app.json",
      "service_slug": "socialize",
      "name": "socialize",
      "app_id": "app_topolo_socialize",
      "compatibility_date": "2026-04-10",
      "primary_target": null,
      "environments": [
        "development",
        "production",
        "staging"
      ],
      "targets": [
        {
          "name": "web",
          "kind": "worker",
          "directory": "apps/web",
          "main": "src/worker.ts",
          "worker_name": "topolo-socialize",
          "subdomain": "socialize",
          "healthcheck_path": null,
          "variable_names": [
            "AUTH_API_URL",
            "INSIGHTS_SITE_KEY"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "services",
              "binding": "API",
              "target": null
            },
            {
              "kind": "services",
              "binding": "API",
              "target": null
            },
            {
              "kind": "services",
              "binding": "API",
              "target": null
            }
          ]
        },
        {
          "name": "api",
          "kind": "worker",
          "directory": "apps/api",
          "main": "dist/index.js",
          "worker_name": "topolo-socialize-api",
          "subdomain": "socialize-api",
          "healthcheck_path": "/health",
          "variable_names": [
            "API_URL",
            "APP_URL",
            "ENVIRONMENT",
            "NEXUS_GATEWAY_URL",
            "ORG_SLUG",
            "TIKTOK_USE_SANDBOX",
            "TOPOLO_NOTIFY_URL",
            "TOPOLO_SEED_APP_ID"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "d1",
              "binding": "SOCIALIZE_BRANDS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_CONTENT_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_INTEGRATIONS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_ANALYTICS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_AI_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_AUDIT_DB",
              "target": null
            },
            {
              "kind": "r2",
              "binding": "MEDIA_BUCKET",
              "target": null
            },
            {
              "kind": "r2",
              "binding": "BACKUP_BUCKET",
              "target": null
            },
            {
              "kind": "kv",
              "binding": "SESSIONS_KV",
              "target": null
            },
            {
              "kind": "kv",
              "binding": "CACHE_KV",
              "target": null
            },
            {
              "kind": "vectorize",
              "binding": "VOICE_CONTEXT_INDEX",
              "target": null
            },
            {
              "kind": "services",
              "binding": "BRAND_API",
              "target": null
            }
          ]
        },
        {
          "name": "jobs",
          "kind": "worker",
          "directory": "apps/scheduler",
          "main": "dist/index.js",
          "worker_name": "topolo-socialize-scheduler",
          "subdomain": null,
          "healthcheck_path": "/health",
          "variable_names": [
            "API_URL",
            "APP_URL",
            "ENVIRONMENT",
            "NEXUS_GATEWAY_URL",
            "TOPOLO_NOTIFY_URL"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "d1",
              "binding": "SOCIALIZE_BRANDS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_CONTENT_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_INTEGRATIONS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_ANALYTICS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_AI_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "SOCIALIZE_AUDIT_DB",
              "target": null
            },
            {
              "kind": "r2",
              "binding": "MEDIA_BUCKET",
              "target": null
            },
            {
              "kind": "kv",
              "binding": "SESSIONS_KV",
              "target": null
            },
            {
              "kind": "kv",
              "binding": "CACHE_KV",
              "target": null
            }
          ]
        }
      ],
      "notifications": [
        "socialize.brand.invitation.created",
        "socialize.campaign.completed",
        "socialize.campaign.scheduled",
        "socialize.integration.disconnected",
        "socialize.join_request.created",
        "socialize.post.approval_requested",
        "socialize.post.manual_publish_due",
        "socialize.post.publish_failed",
        "socialize.post.published"
      ],
      "notification_contract": {
        "source_path": "topolo.notification-contracts.json",
        "role": "producer",
        "schema_version": 1,
        "owner_app_id": "app_topolo_socialize",
        "events": [
          {
            "type": "socialize.brand.invitation.created",
            "version": 1,
            "description": "An external collaborator was invited to a Socialize brand.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "recipient_email",
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "actor_id": {
                  "type": "string"
                },
                "actor_display_name": {
                  "type": "string"
                },
                "recipient_email": {
                  "type": "string",
                  "format": "email"
                },
                "thread_key": {
                  "type": "string"
                },
                "expires_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "action_context": {
                  "type": "object"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "recipient_email": "collaborator@example.com",
                "title": "An external collaborator was invited to a Socialize brand.",
                "body": "Open the owning app to review this event.",
                "object_id": "object_123",
                "occurred_at": "2026-07-17T00:00:00.000Z"
              }
            ],
            "dataClassification": "confidential",
            "recipients": {
              "modes": [
                "external"
              ],
              "externalAddress": "required"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:brand-invite:"
            },
            "sensitiveFields": [
              "recipient_email",
              "cta_url"
            ]
          },
          {
            "type": "socialize.campaign.completed",
            "version": 1,
            "description": "Socialize recorded the durable campaign completed transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Campaign completed",
                "body": "The campaign reached its durable completed state.",
                "object_type": "campaign",
                "object_id": "campaign_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:campaign:completed:"
            }
          },
          {
            "type": "socialize.campaign.scheduled",
            "version": 1,
            "description": "Socialize recorded the durable campaign scheduled transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Campaign scheduled",
                "body": "The campaign schedule and its post runs were persisted.",
                "object_type": "campaign",
                "object_id": "campaign_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:campaign:scheduled:"
            }
          },
          {
            "type": "socialize.integration.disconnected",
            "version": 1,
            "description": "Socialize recorded the durable integration disconnected transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Social account disconnected",
                "body": "A connected social account was durably disconnected.",
                "object_type": "integration",
                "object_id": "connection_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:integration:disconnected:"
            }
          },
          {
            "type": "socialize.join_request.created",
            "version": 1,
            "description": "Socialize recorded the durable join request created transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "New brand join request",
                "body": "A new request to join the brand was persisted.",
                "object_type": "join_request",
                "object_id": "join_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "confidential",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:join-request:created:"
            },
            "sensitiveFields": [
              "requester_email"
            ]
          },
          {
            "type": "socialize.post.approval_requested",
            "version": 1,
            "description": "Socialize recorded the durable post approval requested transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Post ready for approval",
                "body": "A persisted post suggestion is ready for review.",
                "object_type": "post",
                "object_id": "post_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:post:approval-requested:"
            }
          },
          {
            "type": "socialize.post.manual_publish_due",
            "version": 1,
            "description": "A post set to manual publishing reached its scheduled time. Socialize will not publish it — the Instagram Content Publishing API cannot attach sticker-based stories — so the operator is reminded to post it by hand.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                },
                "placement": {
                  "type": "string"
                },
                "scheduled_for": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Post ready for you to publish",
                "body": "An instagram story is scheduled now and is set to manual publishing. Post it on the platform yourself.",
                "object_type": "post",
                "object_id": "post_123",
                "occurred_at": "2026-09-01T03:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:post:manual-publish-due:"
            }
          },
          {
            "type": "socialize.post.publish_failed",
            "version": 1,
            "description": "Socialize recorded the durable post publish failed transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Post publishing failed",
                "body": "The publish failure was persisted and needs attention.",
                "object_type": "post",
                "object_id": "post_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:post:publish-failed:"
            }
          },
          {
            "type": "socialize.post.published",
            "version": 1,
            "description": "Socialize recorded the durable post published transition.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "occurred_at"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "surface": {
                  "enum": [
                    "notification",
                    "action"
                  ]
                },
                "action_kind": {
                  "enum": [
                    "open",
                    "review",
                    "approve",
                    "resolve",
                    "complete"
                  ]
                },
                "action_status": {
                  "type": "string"
                },
                "priority": {
                  "enum": [
                    "low",
                    "normal",
                    "high",
                    "urgent"
                  ]
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                },
                "cta_label": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "severity": {
                  "enum": [
                    "info",
                    "success",
                    "warning",
                    "critical"
                  ]
                },
                "object_type": {
                  "type": "string"
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "thread_key": {
                  "type": "string"
                },
                "campaign_name": {
                  "type": "string"
                },
                "window_start_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "window_end_date": {
                  "type": "string",
                  "format": "date-time"
                },
                "platform": {
                  "type": "string"
                },
                "platform_post_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disconnect_event_id": {
                  "type": "string"
                },
                "requester_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requester_email": {
                  "type": "string",
                  "format": "email"
                },
                "source_type": {
                  "type": "string"
                },
                "failure_code": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "examples": [
              {
                "title": "Post published",
                "body": "The post reached its durable published state.",
                "object_type": "post",
                "object_id": "post_123",
                "occurred_at": "2026-07-20T00:00:00.000Z"
              }
            ],
            "dataClassification": "internal",
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^socialize:post:published:"
            }
          }
        ]
      },
      "actions": [
        {
          "name": "widget.get",
          "title": "Get widget summary",
          "description": "Get the TopoloOne widget summary for this service.",
          "method": "GET",
          "path": "/api/widget",
          "permission": "dashboard:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "target": "api",
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/widget",
              "body": null
            },
            "effects": "Reads state through GET /api/widget without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/widget",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "analytics.summary",
          "title": "Get analytics summary",
          "description": "Get social analytics summary.",
          "method": "GET",
          "path": "/api/analytics/summary",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "startDate": {
                "type": "string",
                "minLength": 1
              },
              "endDate": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get analytics summary.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "days": 1,
              "startDate": "example",
              "endDate": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/analytics/summary",
              "body": null
            },
            "effects": "Reads state through GET /api/analytics/summary without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/analytics/summary",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.list",
          "title": "List posts",
          "description": "List social posts.",
          "method": "GET",
          "path": "/api/posts",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "authorId": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "enum": [
                  "draft",
                  "scheduled",
                  "published",
                  "failed",
                  "cancelled",
                  "archived"
                ]
              },
              "platform": {
                "type": "string",
                "enum": [
                  "twitter",
                  "x",
                  "linkedin",
                  "linkedin_company",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ]
              },
              "campaignId": {
                "type": "string",
                "minLength": 1
              },
              "threadId": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List posts.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "authorId": "example",
              "status": "draft",
              "platform": "twitter"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/posts",
              "body": null
            },
            "effects": "Reads state through GET /api/posts without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/posts",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.create",
          "title": "Create post",
          "description": "Create a social post.",
          "method": "POST",
          "path": "/api/posts",
          "permission": "posts:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 63206
              },
              "platform": {
                "type": "string",
                "enum": [
                  "twitter",
                  "x",
                  "linkedin",
                  "linkedin_company",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ]
              },
              "scheduledFor": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              "publishNow": {
                "type": "boolean"
              },
              "mediaUrl": {
                "type": "string",
                "format": "uri"
              },
              "mediaType": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "gif"
                ]
              },
              "placement": {
                "type": "string",
                "enum": [
                  "feed",
                  "story"
                ]
              },
              "publishMode": {
                "type": "string",
                "enum": [
                  "auto",
                  "manual"
                ]
              },
              "metadata": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "content",
              "platform"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string"
              },
              "authorId": {
                "type": "string",
                "minLength": 1
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "scheduledFor": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failureCode": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failureMessage": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastPublishAttemptAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastPublishResultAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaType": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaThumbnailUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "metadata": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "content",
              "authorId",
              "brandId",
              "platform",
              "status",
              "scheduledFor",
              "publishedAt",
              "failedAt",
              "failureCode",
              "failureMessage",
              "lastPublishAttemptAt",
              "lastPublishResultAt",
              "mediaUrl",
              "mediaType",
              "mediaThumbnailUrl",
              "metadata",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "agentAccess": "confirm",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/applications/socialize#posts",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "effects": [
              "Creates one draft or scheduled social post for the active brand."
            ],
            "errors": [
              {
                "status": 403,
                "code": "forbidden",
                "recovery": "Select a brand bound to the credential and retry."
              }
            ],
            "verify": [
              "Call posts.get with the returned id and confirm status, platform, and scheduledFor."
            ],
            "nextActionIds": [
              "app_topolo_socialize.posts.get"
            ],
            "examples": [
              {
                "title": "Schedule an X post",
                "description": "Use an ISO timestamp in the future for the active brand.",
                "input": {
                  "content": "A concise launch update.",
                  "platform": "twitter",
                  "scheduledFor": "2026-08-01T09:00:00.000Z"
                }
              }
            ]
          },
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "content": "A concise launch update.",
              "platform": "twitter",
              "scheduledFor": "2026-08-01T09:00:00.000Z"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/posts",
              "body": {
                "content": "A concise launch update.",
                "platform": "twitter",
                "scheduledFor": "2026-08-01T09:00:00.000Z"
              }
            },
            "effects": "Creates one draft or scheduled social post for the active brand.",
            "verification": [
              "Call posts.get with the returned id and confirm status, platform, and scheduledFor."
            ],
            "recovery": [
              "403 forbidden: Select a brand bound to the credential and retry."
            ],
            "docs_url": "https://docs.topolo.app/applications/socialize#posts",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "next_action_ids": [
              "app_topolo_socialize.posts.get"
            ],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/posts",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.get",
          "title": "Posts Get",
          "description": "Call GET /api/posts/{id}.",
          "method": "GET",
          "path": "/api/posts/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string"
              },
              "authorId": {
                "type": "string",
                "minLength": 1
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "scheduledFor": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failureCode": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "failureMessage": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastPublishAttemptAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastPublishResultAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaType": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaThumbnailUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "metadata": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "content",
              "authorId",
              "brandId",
              "platform",
              "status",
              "scheduledFor",
              "publishedAt",
              "failedAt",
              "failureCode",
              "failureMessage",
              "lastPublishAttemptAt",
              "lastPublishResultAt",
              "mediaUrl",
              "mediaType",
              "mediaThumbnailUrl",
              "metadata",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/posts/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/posts/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.update",
          "title": "Posts Update",
          "description": "Call PUT /api/posts/{id}.",
          "method": "PUT",
          "path": "/api/posts/{id}",
          "permission": "posts:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 10000
              },
              "scheduledFor": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "draft",
                  "scheduled",
                  "published",
                  "failed",
                  "cancelled"
                ]
              },
              "unschedule": {
                "type": "boolean"
              },
              "platform": {
                "type": "string",
                "enum": [
                  "twitter",
                  "x",
                  "linkedin",
                  "linkedin_company",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ]
              },
              "metadata": {
                "anyOf": [
                  {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaType": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "placement": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "feed",
                      "story"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishMode": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "auto",
                      "manual"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Posts Update.",
            "additionalProperties": true
          },
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/posts/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/posts/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.delete",
          "title": "Posts Delete",
          "description": "Call DELETE /api/posts/{id}.",
          "method": "DELETE",
          "path": "/api/posts/{id}",
          "permission": "posts:write",
          "readOnly": false,
          "destructive": true,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Posts Delete.",
            "additionalProperties": true
          },
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/posts/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/posts/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.publish",
          "title": "Posts Publish",
          "description": "Call POST /api/posts/{id}/publish.",
          "method": "POST",
          "path": "/api/posts/{id}/publish",
          "permission": "posts:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Posts Publish.",
            "additionalProperties": true
          },
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000/publish",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/posts/{id}/publish. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/posts/*/publish",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.list",
          "title": "List campaigns",
          "description": "List social campaigns.",
          "method": "GET",
          "path": "/api/campaigns",
          "permission": "calendar:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "createdBy": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "enum": [
                  "draft",
                  "scheduled",
                  "active",
                  "completed",
                  "cancelled"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List campaigns.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "createdBy": "example",
              "status": "draft",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/campaigns",
              "body": null
            },
            "effects": "Reads state through GET /api/campaigns without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/campaigns",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.create",
          "title": "Create campaign",
          "description": "Create a social campaign.",
          "method": "POST",
          "path": "/api/campaigns",
          "permission": "calendar:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 1000
              },
              "platforms": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "twitter",
                    "linkedin",
                    "facebook",
                    "instagram",
                    "tiktok",
                    "threads",
                    "youtube"
                  ]
                }
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "weight": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "postId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "content": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 63206
                        },
                        "mediaUrls": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hashtags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "text"
                      ],
                      "additionalProperties": false
                    },
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "name",
                    "weight"
                  ],
                  "additionalProperties": false
                }
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "windowStartDate": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              "windowEndDate": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              "timezone": {
                "type": "string"
              },
              "scheduleDays": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "monday",
                    "tuesday",
                    "wednesday",
                    "thursday",
                    "friday",
                    "saturday",
                    "sunday"
                  ]
                }
              },
              "scheduleTimes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^\\d{2}:\\d{2}$"
                }
              },
              "status": {
                "type": "string",
                "enum": [
                  "draft",
                  "scheduled"
                ]
              }
            },
            "required": [
              "name",
              "platforms"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "createdBy": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string"
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "platform": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "settings": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "platform",
                    "enabled",
                    "settings"
                  ],
                  "additionalProperties": false
                }
              },
              "timezone": {
                "type": "string"
              },
              "scheduleDays": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scheduleTimes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "windowStartDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "windowEndDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "paused": {
                "type": "boolean"
              },
              "pausedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "resumedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "name": {
                      "type": "string"
                    },
                    "weight": {
                      "type": "number"
                    },
                    "postId": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "weight",
                    "postId"
                  ],
                  "additionalProperties": false
                }
              },
              "scheduledPosts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "platform": {
                      "type": "string"
                    },
                    "scheduledFor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "platform",
                    "scheduledFor",
                    "status"
                  ],
                  "additionalProperties": false
                }
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "createdBy",
              "status",
              "windowStartDate",
              "windowEndDate",
              "paused",
              "pausedAt",
              "resumedAt",
              "variants",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "agentAccess": "confirm",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/applications/socialize#campaigns",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "effects": [
              "Creates campaign variants for the active brand.",
              "When status=scheduled, materializes one durable post per cadence slot and enabled platform."
            ],
            "errors": [
              {
                "status": 400,
                "code": "validation_error",
                "recovery": "Correct platform, variant weights, window, timezone, days, and times."
              }
            ],
            "verify": [
              "Call campaigns.get and posts.list with campaignId; scheduled campaigns must return concrete scheduled posts."
            ],
            "nextActionIds": [
              "app_topolo_socialize.campaigns.get",
              "app_topolo_socialize.posts.list"
            ],
            "examples": [
              {
                "title": "Create and schedule a launch campaign",
                "description": "Materialize weekday posts at 09:00 in the campaign timezone.",
                "input": {
                  "name": "Launch campaign",
                  "status": "scheduled",
                  "platforms": [
                    "twitter",
                    "linkedin"
                  ],
                  "variants": [
                    {
                      "name": "Primary",
                      "weight": 100,
                      "content": {
                        "text": "Launch update"
                      }
                    }
                  ],
                  "windowStartDate": "2026-08-01T00:00:00.000Z",
                  "windowEndDate": "2026-08-08T23:59:59.000Z",
                  "timezone": "Asia/Dubai",
                  "scheduleDays": [
                    "monday",
                    "wednesday",
                    "friday"
                  ],
                  "scheduleTimes": [
                    "09:00"
                  ]
                }
              }
            ]
          },
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "Launch campaign",
              "status": "scheduled",
              "platforms": [
                "twitter",
                "linkedin"
              ],
              "variants": [
                {
                  "name": "Primary",
                  "weight": 100,
                  "content": {
                    "text": "Launch update"
                  }
                }
              ],
              "windowStartDate": "2026-08-01T00:00:00.000Z",
              "windowEndDate": "2026-08-08T23:59:59.000Z",
              "timezone": "Asia/Dubai",
              "scheduleDays": [
                "monday",
                "wednesday",
                "friday"
              ],
              "scheduleTimes": [
                "09:00"
              ]
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns",
              "body": {
                "name": "Launch campaign",
                "status": "scheduled",
                "platforms": [
                  "twitter",
                  "linkedin"
                ],
                "variants": [
                  {
                    "name": "Primary",
                    "weight": 100,
                    "content": {
                      "text": "Launch update"
                    }
                  }
                ],
                "windowStartDate": "2026-08-01T00:00:00.000Z",
                "windowEndDate": "2026-08-08T23:59:59.000Z",
                "timezone": "Asia/Dubai",
                "scheduleDays": [
                  "monday",
                  "wednesday",
                  "friday"
                ],
                "scheduleTimes": [
                  "09:00"
                ]
              }
            },
            "effects": "Creates campaign variants for the active brand. When status=scheduled, materializes one durable post per cadence slot and enabled platform.",
            "verification": [
              "Call campaigns.get and posts.list with campaignId; scheduled campaigns must return concrete scheduled posts."
            ],
            "recovery": [
              "400 validation_error: Correct platform, variant weights, window, timezone, days, and times."
            ],
            "docs_url": "https://docs.topolo.app/applications/socialize#campaigns",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "next_action_ids": [
              "app_topolo_socialize.campaigns.get",
              "app_topolo_socialize.posts.list"
            ],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.schedule",
          "title": "Campaigns Schedule",
          "description": "Call POST /api/campaigns/{id}/schedule.",
          "method": "POST",
          "path": "/api/campaigns/{id}/schedule",
          "permission": "calendar:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "windowStartDate": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              "windowEndDate": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              }
            },
            "required": [
              "id",
              "windowStartDate",
              "windowEndDate"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "createdBy": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string"
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "platform": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "settings": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "platform",
                    "enabled",
                    "settings"
                  ],
                  "additionalProperties": false
                }
              },
              "timezone": {
                "type": "string"
              },
              "scheduleDays": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scheduleTimes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "windowStartDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "windowEndDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "paused": {
                "type": "boolean"
              },
              "pausedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "resumedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "name": {
                      "type": "string"
                    },
                    "weight": {
                      "type": "number"
                    },
                    "postId": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "weight",
                    "postId"
                  ],
                  "additionalProperties": false
                }
              },
              "scheduledPosts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "platform": {
                      "type": "string"
                    },
                    "scheduledFor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "platform",
                    "scheduledFor",
                    "status"
                  ],
                  "additionalProperties": false
                }
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "createdBy",
              "status",
              "windowStartDate",
              "windowEndDate",
              "paused",
              "pausedAt",
              "resumedAt",
              "variants",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "agentAccess": "confirm",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/applications/socialize#campaigns",
            "resource": {
              "kind": "campaign",
              "idPath": "id"
            },
            "effects": [
              "Transitions a draft campaign to scheduled and idempotently materializes its publish occurrences."
            ],
            "errors": [
              {
                "status": 400,
                "code": "validation_error",
                "recovery": "Ensure the campaign has content variants, enabled platforms, and cadence slots inside the window."
              },
              {
                "status": 403,
                "code": "forbidden",
                "recovery": "Use a campaign owned by the credential-bound brand."
              }
            ],
            "verify": [
              "Confirm scheduledPosts is non-empty and call posts.list with campaignId."
            ],
            "nextActionIds": [
              "app_topolo_socialize.posts.list",
              "app_topolo_socialize.brands.publishing_readiness.get"
            ],
            "examples": [
              {
                "title": "Schedule a prepared campaign",
                "description": "Use the campaign id returned by campaigns.create.",
                "input": {
                  "id": "campaign_example",
                  "windowStartDate": "2026-08-01T00:00:00.000Z",
                  "windowEndDate": "2026-08-08T23:59:59.000Z"
                }
              }
            ]
          },
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "campaign_example",
              "windowStartDate": "2026-08-01T00:00:00.000Z",
              "windowEndDate": "2026-08-08T23:59:59.000Z"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/campaign_example/schedule",
              "body": {
                "id": "campaign_example",
                "windowStartDate": "2026-08-01T00:00:00.000Z",
                "windowEndDate": "2026-08-08T23:59:59.000Z"
              }
            },
            "effects": "Transitions a draft campaign to scheduled and idempotently materializes its publish occurrences.",
            "verification": [
              "Confirm scheduledPosts is non-empty and call posts.list with campaignId."
            ],
            "recovery": [
              "400 validation_error: Ensure the campaign has content variants, enabled platforms, and cadence slots inside the window.",
              "403 forbidden: Use a campaign owned by the credential-bound brand."
            ],
            "docs_url": "https://docs.topolo.app/applications/socialize#campaigns",
            "resource": {
              "kind": "campaign",
              "idPath": "id"
            },
            "next_action_ids": [
              "app_topolo_socialize.posts.list",
              "app_topolo_socialize.brands.publishing_readiness.get"
            ],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/schedule",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.list",
          "title": "List brands",
          "description": "List social brands/accounts.",
          "method": "GET",
          "path": "/api/brands",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List brands.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands",
              "body": null
            },
            "effects": "Reads state through GET /api/brands without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.create",
          "title": "Create brand",
          "description": "Create a social brand/account.",
          "method": "POST",
          "path": "/api/brands",
          "permission": "workspace:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 500
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": "string"
                  },
                  "logoUrl": {
                    "type": "string"
                  },
                  "memberCount": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "organizationId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "createdAt": {
                    "type": "string"
                  },
                  "updatedAt": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "description",
                  "logoUrl",
                  "memberCount",
                  "organizationId",
                  "createdAt",
                  "updatedAt"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "data"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/platform/workspaces/",
            "resource": {
              "kind": "workspace",
              "idPath": "data.id"
            },
            "effects": [
              "Creates canonical workspace identity in Topolo Auth for Socialize.",
              "Creates the Socialize-owned brand profile mirror for that workspace."
            ],
            "errors": [
              {
                "status": 403,
                "code": "forbidden",
                "recovery": "Confirm the caller has workspace:write for Socialize and the organization can create another workspace."
              },
              {
                "status": 409,
                "code": "workspace_creation_conflict",
                "recovery": "List Socialize brands before retrying so a successful creation is not duplicated."
              }
            ],
            "verify": [
              "Call brands.list and confirm the returned workspace id appears exactly once."
            ],
            "nextActionIds": [
              "app_topolo_socialize.brands.list"
            ],
            "rollbackActionId": "app_topolo_socialize.workspaces.delete",
            "examples": [
              {
                "title": "Create a founder brand",
                "description": "Auth generates the stable workspace slug; Socialize stores only its app-owned profile.",
                "input": {
                  "name": "Ashley Lane - Topolo Founder",
                  "description": "Founder-led social presence for Topolo."
                }
              }
            ]
          },
          "documentation": {
            "example_input": {
              "name": "Ashley Lane - Topolo Founder",
              "description": "Founder-led social presence for Topolo."
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brands",
              "body": {
                "name": "Ashley Lane - Topolo Founder",
                "description": "Founder-led social presence for Topolo."
              }
            },
            "effects": "Creates canonical workspace identity in Topolo Auth for Socialize. Creates the Socialize-owned brand profile mirror for that workspace.",
            "verification": [
              "Call brands.list and confirm the returned workspace id appears exactly once."
            ],
            "recovery": [
              "403 forbidden: Confirm the caller has workspace:write for Socialize and the organization can create another workspace.",
              "409 workspace_creation_conflict: List Socialize brands before retrying so a successful creation is not duplicated."
            ],
            "docs_url": "https://docs.topolo.app/platform/workspaces/",
            "resource": {
              "kind": "workspace",
              "idPath": "data.id"
            },
            "next_action_ids": [
              "app_topolo_socialize.brands.list"
            ],
            "rollback_action_id": "app_topolo_socialize.workspaces.delete"
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brands",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "workspaces.delete",
          "title": "Delete workspace",
          "description": "Delete an empty non-default Socialize workspace.",
          "method": "DELETE",
          "path": "/api/workspaces/{id}",
          "permission": "workspace:delete",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "target": "api",
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/workspaces/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/workspaces/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/workspaces/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.get",
          "title": "Get brand",
          "description": "Get a brand by id.",
          "method": "GET",
          "path": "/api/brands/{id}",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/brands/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.generate_content",
          "title": "Generate content",
          "description": "Generate social content with AI.",
          "method": "POST",
          "path": "/api/ai/generate-content",
          "permission": "posts:write",
          "readOnly": false,
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "prompt": {
                "type": "string",
                "minLength": 10,
                "maxLength": 10000
              },
              "contentTypeId": {
                "type": "string",
                "minLength": 1
              },
              "maxTokens": {
                "type": "number",
                "minimum": 100,
                "maximum": 4000
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "channel": {
                "type": "string",
                "enum": [
                  "twitter",
                  "x",
                  "linkedin",
                  "linkedin_company",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ]
              },
              "audience": {
                "type": "string",
                "maxLength": 500
              },
              "objective": {
                "type": "string",
                "maxLength": 500
              },
              "claimIds": {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "ctaId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "prompt"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Generate content.",
            "additionalProperties": true
          },
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "prompt": "examplexxx"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/generate-content",
              "body": {
                "prompt": "examplexxx"
              }
            },
            "effects": "May change state through POST /api/ai/generate-content. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/generate-content",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.archive",
          "title": "Archive post",
          "description": "Archive a Socialize post.",
          "method": "POST",
          "path": "/api/posts/{id}/archive",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Archive post.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000/archive",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/posts/{id}/archive. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/posts/*/archive",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.reschedule",
          "title": "Reschedule post",
          "description": "Reschedule a Socialize post.",
          "method": "PATCH",
          "path": "/api/posts/{id}/reschedule",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "scheduledFor": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "scheduledFor"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Reschedule post.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "scheduledFor": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PATCH",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000/reschedule",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "scheduledFor": "example"
              }
            },
            "effects": "May change state through PATCH /api/posts/{id}/reschedule. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PATCH /api/posts/*/reschedule",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "posts.toggle_pause",
          "title": "Toggle post pause",
          "description": "Toggle pause on a Socialize post.",
          "method": "PATCH",
          "path": "/api/posts/{id}/toggle-pause",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "paused": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "paused"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Toggle post pause.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "paused": true
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PATCH",
              "path": "/api/posts/00000000-0000-4000-8000-000000000000/toggle-pause",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "paused": true
              }
            },
            "effects": "May change state through PATCH /api/posts/{id}/toggle-pause. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PATCH /api/posts/*/toggle-pause",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.queue.get",
          "title": "Get content ops queue",
          "description": "Get the Socialize content ops queue.",
          "method": "GET",
          "path": "/api/content-ops/queue",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "channel": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "minLength": 1
              },
              "approval_state": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get content ops queue.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "channel": "example",
              "status": "example",
              "approval_state": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-ops/queue",
              "body": null
            },
            "effects": "Reads state through GET /api/content-ops/queue without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-ops/queue",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.daily.get",
          "title": "Get daily content ops",
          "description": "Get Socialize daily content ops summary.",
          "method": "GET",
          "path": "/api/content-ops/daily",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "minLength": 1
              },
              "utc_offset": {
                "type": "string",
                "minLength": 1
              },
              "queue_limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get daily content ops.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "date": "example",
              "utc_offset": "example",
              "queue_limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-ops/daily",
              "body": null
            },
            "effects": "Reads state through GET /api/content-ops/daily without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-ops/daily",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.events.list",
          "title": "List content ops events",
          "description": "List Socialize content ops events.",
          "method": "GET",
          "path": "/api/content-ops/events",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "date": {
                "type": "string",
                "minLength": 1
              },
              "utc_offset": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List content ops events.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "date": "example",
              "utc_offset": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-ops/events",
              "body": null
            },
            "effects": "Reads state through GET /api/content-ops/events without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-ops/events",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.deck.get",
          "title": "Get content ops deck",
          "description": "Get the Socialize content ops deck.",
          "method": "GET",
          "path": "/api/content-ops/deck",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "platform": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get content ops deck.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "platform": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-ops/deck",
              "body": null
            },
            "effects": "Reads state through GET /api/content-ops/deck without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-ops/deck",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.get",
          "title": "Get content ops item",
          "description": "Get a Socialize content ops item.",
          "method": "GET",
          "path": "/api/content-ops/items/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get content ops item.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/content-ops/items/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-ops/items/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.update",
          "title": "Update content ops item",
          "description": "Update a Socialize content ops item.",
          "method": "PATCH",
          "path": "/api/content-ops/items/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "content"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update content ops item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "content": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PATCH",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "content": "example"
              }
            },
            "effects": "May change state through PATCH /api/content-ops/items/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PATCH /api/content-ops/items/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.approve",
          "title": "Approve content ops item",
          "description": "Approve a Socialize content ops item.",
          "method": "POST",
          "path": "/api/content-ops/items/{id}/approve",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Approve content ops item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000/approve",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/content-ops/items/{id}/approve. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-ops/items/*/approve",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.reject",
          "title": "Reject content ops item",
          "description": "Reject a Socialize content ops item.",
          "method": "POST",
          "path": "/api/content-ops/items/{id}/reject",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Reject content ops item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000/reject",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/content-ops/items/{id}/reject. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-ops/items/*/reject",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.reschedule",
          "title": "Reschedule content ops item",
          "description": "Reschedule a Socialize content ops item.",
          "method": "POST",
          "path": "/api/content-ops/items/{id}/reschedule",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "scheduled_at": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "scheduled_at"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Reschedule content ops item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "scheduled_at": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000/reschedule",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "scheduled_at": "example"
              }
            },
            "effects": "May change state through POST /api/content-ops/items/{id}/reschedule. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-ops/items/*/reschedule",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_ops.items.retry",
          "title": "Retry content ops item",
          "description": "Retry a Socialize content ops item.",
          "method": "POST",
          "path": "/api/content-ops/items/{id}/retry",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Retry content ops item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-ops/items/00000000-0000-4000-8000-000000000000/retry",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/content-ops/items/{id}/retry. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-ops/items/*/retry",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.get",
          "title": "Get campaign",
          "description": "Get a Socialize campaign.",
          "method": "GET",
          "path": "/api/campaigns/{id}",
          "permission": "calendar:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "createdBy": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string"
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "platform": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "settings": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "platform",
                    "enabled",
                    "settings"
                  ],
                  "additionalProperties": false
                }
              },
              "timezone": {
                "type": "string"
              },
              "scheduleDays": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scheduleTimes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "windowStartDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "windowEndDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "paused": {
                "type": "boolean"
              },
              "pausedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "resumedAt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "name": {
                      "type": "string"
                    },
                    "weight": {
                      "type": "number"
                    },
                    "postId": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "weight",
                    "postId"
                  ],
                  "additionalProperties": false
                }
              },
              "scheduledPosts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "platform": {
                      "type": "string"
                    },
                    "scheduledFor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "platform",
                    "scheduledFor",
                    "status"
                  ],
                  "additionalProperties": false
                }
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "createdBy",
              "status",
              "windowStartDate",
              "windowEndDate",
              "paused",
              "pausedAt",
              "resumedAt",
              "variants",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/campaigns/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/campaigns/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.update",
          "title": "Update campaign",
          "description": "Update a Socialize campaign.",
          "method": "PUT",
          "path": "/api/campaigns/{id}",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "platform": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "settings": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "platform",
                    "enabled",
                    "settings"
                  ],
                  "additionalProperties": false
                }
              },
              "windowStartDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "windowEndDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "timezone": {
                "type": "string"
              },
              "scheduleDays": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scheduleTimes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "weight": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "postId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "content": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 63206
                        },
                        "mediaUrls": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hashtags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "text"
                      ],
                      "additionalProperties": false
                    },
                    "hashtags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "name",
                    "weight"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/campaigns/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/campaigns/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.delete",
          "title": "Delete campaign",
          "description": "Delete a Socialize campaign.",
          "method": "DELETE",
          "path": "/api/campaigns/{id}",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/campaigns/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/campaigns/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.activate",
          "title": "Activate campaign",
          "description": "Activate a Socialize campaign.",
          "method": "POST",
          "path": "/api/campaigns/{id}/activate",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Activate campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/activate",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/campaigns/{id}/activate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/activate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.complete",
          "title": "Complete campaign",
          "description": "Complete a Socialize campaign.",
          "method": "POST",
          "path": "/api/campaigns/{id}/complete",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Complete campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/complete",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/campaigns/{id}/complete. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/complete",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.cancel",
          "title": "Cancel campaign",
          "description": "Cancel a Socialize campaign.",
          "method": "POST",
          "path": "/api/campaigns/{id}/cancel",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Cancel campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/cancel",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/campaigns/{id}/cancel. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/cancel",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.pause",
          "title": "Pause campaign",
          "description": "Pause a Socialize campaign.",
          "method": "POST",
          "path": "/api/campaigns/{id}/pause",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Pause campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/pause",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/campaigns/{id}/pause. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/pause",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.resume",
          "title": "Resume campaign",
          "description": "Resume a Socialize campaign.",
          "method": "POST",
          "path": "/api/campaigns/{id}/resume",
          "permission": "calendar:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Resume campaign.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/resume",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/campaigns/{id}/resume. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/campaigns/*/resume",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.analytics.get",
          "title": "Get campaign analytics",
          "description": "Get Socialize campaign analytics.",
          "method": "GET",
          "path": "/api/campaigns/{id}/analytics",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "startDate": {
                "type": "string",
                "minLength": 1
              },
              "endDate": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get campaign analytics.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/analytics",
              "body": null
            },
            "effects": "Reads state through GET /api/campaigns/{id}/analytics without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/campaigns/*/analytics",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.analytics_engine.get",
          "title": "Get campaign analytics engine",
          "description": "Get Socialize campaign analytics engine data.",
          "method": "GET",
          "path": "/api/campaigns/{id}/analytics/engine",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "startDate": {
                "type": "string",
                "minLength": 1
              },
              "endDate": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get campaign analytics engine.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/analytics/engine",
              "body": null
            },
            "effects": "Reads state through GET /api/campaigns/{id}/analytics/engine without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/campaigns/*/analytics/engine",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "campaigns.variants.analytics.get",
          "title": "Get campaign variant analytics",
          "description": "Get Socialize campaign variant analytics.",
          "method": "GET",
          "path": "/api/campaigns/{id}/analytics/variants/{variantId}",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "variantId": {
                "type": "string",
                "minLength": 1
              },
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "startDate": {
                "type": "string",
                "minLength": 1
              },
              "endDate": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "variantId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get campaign variant analytics.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "variantId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/campaigns/00000000-0000-4000-8000-000000000000/analytics/variants/example",
              "body": null
            },
            "effects": "Reads state through GET /api/campaigns/{id}/analytics/variants/{variantId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/campaigns/*/analytics/variants/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "scheduler.process",
          "title": "Process scheduler",
          "description": "Process Socialize scheduled posts.",
          "method": "POST",
          "path": "/api/scheduler/process",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Process scheduler.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/scheduler/process",
              "body": {}
            },
            "effects": "May change state through POST /api/scheduler/process. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/scheduler/process",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "scheduler.status.get",
          "title": "Get scheduler status",
          "description": "Get Socialize scheduler status.",
          "method": "GET",
          "path": "/api/scheduler/status",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get scheduler status.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/scheduler/status",
              "body": null
            },
            "effects": "Reads state through GET /api/scheduler/status without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/scheduler/status",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "scheduler.drafts.from_trend",
          "title": "Create draft from trend",
          "description": "Create a Socialize scheduler draft from a trend.",
          "method": "POST",
          "path": "/api/scheduler/drafts/from-trend",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "trendId": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "enum": [
                  "linkedin",
                  "x",
                  "instagram",
                  "tiktok",
                  "youtube"
                ]
              },
              "content": {
                "type": "string",
                "minLength": 1
              },
              "hashtags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scheduledFor": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "trendId",
              "platform",
              "content"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create draft from trend.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "trendId": "example",
              "platform": "linkedin",
              "content": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/scheduler/drafts/from-trend",
              "body": {
                "trendId": "example",
                "platform": "linkedin",
                "content": "example"
              }
            },
            "effects": "May change state through POST /api/scheduler/drafts/from-trend. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/scheduler/drafts/from-trend",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.upload_url.create",
          "title": "Create media upload URL",
          "description": "Create a Socialize media upload URL.",
          "method": "POST",
          "path": "/api/media/upload",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "filename": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              "contentType": {
                "type": "string",
                "minLength": 1
              },
              "size": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 524288000
              },
              "width": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "height": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "key": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "filename",
              "contentType",
              "size"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create media upload URL.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "agentContract": {
            "upload": {
              "profile": "url-session",
              "fileNameField": "filename",
              "contentTypeField": "contentType",
              "sizeField": "size",
              "maxBytes": 524288000,
              "acceptedContentTypes": [
                "image/jpeg",
                "image/png",
                "image/gif",
                "image/webp",
                "video/mp4",
                "video/webm",
                "video/quicktime"
              ],
              "uploadUrlPath": "uploadUrl",
              "uploadMethod": "PUT",
              "complete": {
                "actionId": "app_topolo_socialize.media.upload.complete",
                "inputField": "id",
                "responsePath": "mediaId"
              }
            }
          },
          "documentation": {
            "example_input": {
              "filename": "example",
              "contentType": "example",
              "size": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/upload",
              "body": {
                "filename": "example",
                "contentType": "example",
                "size": 1
              }
            },
            "effects": "May change state through POST /api/media/upload. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/upload",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.list",
          "title": "List media",
          "description": "List Socialize media.",
          "method": "GET",
          "path": "/api/media/list",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "search": {
                "type": "string",
                "minLength": 1
              },
              "collection": {
                "type": "string",
                "minLength": 1
              },
              "tag": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "all",
                  "image",
                  "video",
                  "audio",
                  "document"
                ]
              },
              "sort": {
                "type": "string",
                "enum": [
                  "date",
                  "name",
                  "size",
                  "type"
                ]
              },
              "order": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived",
                  "deleted"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List media.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "search": "example",
              "collection": "example",
              "tag": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/media/list",
              "body": null
            },
            "effects": "Reads state through GET /api/media/list without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/media/list",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.bulk",
          "title": "Run bulk media operation",
          "description": "Run a Socialize bulk media operation.",
          "method": "POST",
          "path": "/api/media/bulk",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "mediaIds": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "action": {
                "type": "string",
                "enum": [
                  "delete",
                  "archive",
                  "restore",
                  "tag",
                  "move"
                ]
              },
              "tagId": {
                "type": "string",
                "minLength": 1
              },
              "collectionId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "mediaIds",
              "action"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Run bulk media operation.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "mediaIds": [
                "example"
              ],
              "action": "delete"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/bulk",
              "body": {
                "mediaIds": [
                  "example"
                ],
                "action": "delete"
              }
            },
            "effects": "May change state through POST /api/media/bulk. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/bulk",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.tags.list",
          "title": "List media tags",
          "description": "List Socialize media tags.",
          "method": "GET",
          "path": "/api/media/tags",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List media tags.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/media/tags",
              "body": null
            },
            "effects": "Reads state through GET /api/media/tags without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/media/tags",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.tags.create",
          "title": "Create media tag",
          "description": "Create a Socialize media tag.",
          "method": "POST",
          "path": "/api/media/tags",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50
              },
              "color": {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create media tag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/tags",
              "body": {
                "name": "example"
              }
            },
            "effects": "May change state through POST /api/media/tags. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/tags",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.tags.delete",
          "title": "Delete media tag",
          "description": "Delete a Socialize media tag.",
          "method": "DELETE",
          "path": "/api/media/tags/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete media tag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/media/tags/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/media/tags/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/media/tags/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.collections.list",
          "title": "List media collections",
          "description": "List Socialize media collections.",
          "method": "GET",
          "path": "/api/media/collections",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List media collections.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/media/collections",
              "body": null
            },
            "effects": "Reads state through GET /api/media/collections without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/media/collections",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.collections.create",
          "title": "Create media collection",
          "description": "Create a Socialize media collection.",
          "method": "POST",
          "path": "/api/media/collections",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 500
              },
              "parentId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create media collection.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/collections",
              "body": {
                "name": "example"
              }
            },
            "effects": "May change state through POST /api/media/collections. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/collections",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.collections.delete",
          "title": "Delete media collection",
          "description": "Delete a Socialize media collection.",
          "method": "DELETE",
          "path": "/api/media/collections/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete media collection.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/media/collections/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/media/collections/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/media/collections/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.metadata.get",
          "title": "Get media metadata",
          "description": "Get Socialize media metadata.",
          "method": "GET",
          "path": "/api/media/{id}/metadata",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get media metadata.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/media/00000000-0000-4000-8000-000000000000/metadata",
              "body": null
            },
            "effects": "Reads state through GET /api/media/{id}/metadata without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/media/*/metadata",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.upload.complete",
          "title": "Complete media upload",
          "description": "Complete a Socialize media upload.",
          "method": "POST",
          "path": "/api/media/{id}/complete",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Complete media upload.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/00000000-0000-4000-8000-000000000000/complete",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/media/{id}/complete. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/*/complete",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "media.metadata.bulk_get",
          "title": "Bulk get media metadata",
          "description": "Bulk get Socialize media metadata.",
          "method": "POST",
          "path": "/api/media/metadata",
          "permission": "posts:read",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "mediaIds": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "mediaIds"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Bulk get media metadata.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "mediaIds": [
                "example"
              ]
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/media/metadata",
              "body": {
                "mediaIds": [
                  "example"
                ]
              }
            },
            "effects": "May change state through POST /api/media/metadata. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/media/metadata",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.list",
          "title": "List flags",
          "description": "List Socialize flags.",
          "method": "GET",
          "path": "/api/flags",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List flags.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/flags",
              "body": null
            },
            "effects": "Reads state through GET /api/flags without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/flags",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.create",
          "title": "Create flag",
          "description": "Create a Socialize flag.",
          "method": "POST",
          "path": "/api/flags",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string",
                "minLength": 1
              },
              "enabled": {
                "type": "boolean"
              },
              "rolloutPercentage": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "targetRoles": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "targetEmails": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "environments": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "name",
              "description"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create flag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "name": "example",
              "description": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/flags",
              "body": {
                "name": "example",
                "description": "example"
              }
            },
            "effects": "May change state through POST /api/flags. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/flags",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.me.list",
          "title": "List my flags",
          "description": "List current-user Socialize flags.",
          "method": "GET",
          "path": "/api/flags/me",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List my flags.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/flags/me",
              "body": null
            },
            "effects": "Reads state through GET /api/flags/me without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/flags/me",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.user.list",
          "title": "List user flags",
          "description": "List Socialize flags for a user.",
          "method": "GET",
          "path": "/api/flags/user/{id}",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "email": {
                "type": "string",
                "format": "email",
                "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              },
              "role": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List user flags.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/flags/user/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/flags/user/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/flags/user/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.user.set",
          "title": "Set user flag",
          "description": "Set a Socialize flag for a user.",
          "method": "PUT",
          "path": "/api/flags/{flagId}/users/{userId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "flagId": {
                "type": "string",
                "minLength": 1
              },
              "userId": {
                "type": "string",
                "minLength": 1
              },
              "enabled": {
                "type": "boolean"
              }
            },
            "required": [
              "flagId",
              "userId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Set user flag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "flagId": "example",
              "userId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/flags/example/users/example",
              "body": {
                "flagId": "example",
                "userId": "example"
              }
            },
            "effects": "May change state through PUT /api/flags/{flagId}/users/{userId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/flags/*/users/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.user.remove",
          "title": "Remove user flag",
          "description": "Remove a Socialize flag for a user.",
          "method": "DELETE",
          "path": "/api/flags/{flagId}/users/{userId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "flagId": {
                "type": "string",
                "minLength": 1
              },
              "userId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "flagId",
              "userId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Remove user flag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "flagId": "example",
              "userId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/flags/example/users/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/flags/{flagId}/users/{userId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/flags/*/users/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.get",
          "title": "Get flag",
          "description": "Get a Socialize flag.",
          "method": "GET",
          "path": "/api/flags/{id}",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get flag.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/flags/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/flags/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/flags/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.update",
          "title": "Update flag",
          "description": "Update a Socialize flag.",
          "method": "PATCH",
          "path": "/api/flags/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string",
                "minLength": 1
              },
              "enabled": {
                "type": "boolean"
              },
              "rolloutPercentage": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "targetRoles": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "targetEmails": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "environments": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update flag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PATCH",
              "path": "/api/flags/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PATCH /api/flags/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PATCH /api/flags/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "flags.delete",
          "title": "Delete flag",
          "description": "Delete a Socialize flag.",
          "method": "DELETE",
          "path": "/api/flags/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete flag.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "runtime",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/flags/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/flags/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/flags/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organization.create",
          "title": "Create organization brand",
          "description": "Create a Socialize organization brand.",
          "method": "POST",
          "path": "/api/organization",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 500
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create organization brand.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/organization",
              "body": {
                "name": "example"
              }
            },
            "effects": "May change state through POST /api/organization. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/organization",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organization.get",
          "title": "Get organization brand",
          "description": "Get the Socialize organization brand.",
          "method": "GET",
          "path": "/api/organization",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get organization brand.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organization",
              "body": null
            },
            "effects": "Reads state through GET /api/organization without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organization",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organization.accept_invite",
          "title": "Accept organization invite",
          "description": "Accept a Socialize organization invite.",
          "method": "POST",
          "path": "/api/organization/accept-invite",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "token": {
                "type": "string",
                "minLength": 10,
                "maxLength": 100
              }
            },
            "required": [
              "token"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Accept organization invite.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "token": "examplexxx"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/organization/accept-invite",
              "body": {
                "token": "examplexxx"
              }
            },
            "effects": "May change state through POST /api/organization/accept-invite. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/organization/accept-invite",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.update",
          "title": "Update brand",
          "description": "Update a Socialize brand.",
          "method": "PUT",
          "path": "/api/brands/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 500
              },
              "logoUrl": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update brand.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/brands/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/brands/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.transfer_organization",
          "title": "Transfer brand organization",
          "description": "Transfer a Socialize brand organization.",
          "method": "POST",
          "path": "/api/brands/{id}/transfer-organization",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "targetOrganizationId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              }
            },
            "required": [
              "id",
              "targetOrganizationId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Transfer brand organization.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "targetOrganizationId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000/transfer-organization",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "targetOrganizationId": "example"
              }
            },
            "effects": "May change state through POST /api/brands/{id}/transfer-organization. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brands/*/transfer-organization",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.members.list",
          "title": "List brand members",
          "description": "List Socialize brand members.",
          "method": "GET",
          "path": "/api/brands/{id}/members",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List brand members.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000/members",
              "body": null
            },
            "effects": "Reads state through GET /api/brands/{id}/members without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*/members",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.join_requests.list",
          "title": "List brand join requests",
          "description": "List Socialize brand join requests.",
          "method": "GET",
          "path": "/api/brands/{id}/join-requests",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List brand join requests.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000/join-requests",
              "body": null
            },
            "effects": "Reads state through GET /api/brands/{id}/join-requests without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*/join-requests",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "join_requests.approve",
          "title": "Approve join request",
          "description": "Approve a Socialize join request.",
          "method": "PUT",
          "path": "/api/join-requests/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Approve join request.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/join-requests/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/join-requests/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/join-requests/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "join_requests.reject",
          "title": "Reject join request",
          "description": "Reject a Socialize join request.",
          "method": "DELETE",
          "path": "/api/join-requests/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Reject join request.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/join-requests/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/join-requests/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/join-requests/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.get",
          "title": "Get organization",
          "description": "Get a Socialize organization.",
          "method": "GET",
          "path": "/api/organizations/{id}",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get organization.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.update",
          "title": "Update organization",
          "description": "Update a Socialize organization.",
          "method": "PUT",
          "path": "/api/organizations/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "description": {
                "type": "string",
                "maxLength": 500
              },
              "logoUrl": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update organization.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/organizations/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/organizations/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.members.list",
          "title": "List organization members",
          "description": "List Socialize organization members.",
          "method": "GET",
          "path": "/api/organizations/{id}/members",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List organization members.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/members",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{id}/members without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*/members",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.members.invite",
          "title": "Invite organization member",
          "description": "Invite a Socialize organization member.",
          "method": "POST",
          "path": "/api/organizations/{id}/members",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "email": {
                "type": "string",
                "maxLength": 255,
                "format": "email",
                "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              },
              "role": {
                "type": "string",
                "enum": [
                  "admin",
                  "member",
                  "viewer"
                ]
              },
              "expiresInDays": {
                "type": "integer",
                "minimum": 1,
                "maximum": 30
              }
            },
            "required": [
              "id",
              "email",
              "role"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Invite organization member.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "email": "user@example.com",
              "role": "admin"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/members",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "email": "user@example.com",
                "role": "admin"
              }
            },
            "effects": "May change state through POST /api/organizations/{id}/members. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/organizations/*/members",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.members.remove",
          "title": "Remove organization member",
          "description": "Remove a Socialize organization member.",
          "method": "DELETE",
          "path": "/api/organizations/{id}/members/{userId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "userId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "userId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Remove organization member.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "userId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/members/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/organizations/{id}/members/{userId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/organizations/*/members/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.members.update_role",
          "title": "Update organization member role",
          "description": "Update a Socialize organization member role.",
          "method": "PUT",
          "path": "/api/organizations/{id}/members/{userId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "userId": {
                "type": "string",
                "minLength": 1
              },
              "role": {
                "type": "string",
                "enum": [
                  "admin",
                  "member",
                  "viewer"
                ]
              }
            },
            "required": [
              "id",
              "userId",
              "role"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update organization member role.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "userId": "example",
              "role": "admin"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/members/example",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "userId": "example",
                "role": "admin"
              }
            },
            "effects": "May change state through PUT /api/organizations/{id}/members/{userId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/organizations/*/members/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.invites.list",
          "title": "List organization invites",
          "description": "List Socialize organization invites.",
          "method": "GET",
          "path": "/api/organizations/{id}/invites",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List organization invites.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/invites",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{id}/invites without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*/invites",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.invites.cancel",
          "title": "Cancel organization invite",
          "description": "Cancel a Socialize organization invite.",
          "method": "DELETE",
          "path": "/api/organizations/{id}/invites/{inviteId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "inviteId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "inviteId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Cancel organization invite.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "inviteId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/invites/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/organizations/{id}/invites/{inviteId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/organizations/*/invites/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.activity.list",
          "title": "List organization activity",
          "description": "List Socialize organization activity.",
          "method": "GET",
          "path": "/api/organizations/{id}/activity",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List organization activity.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/activity",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{id}/activity without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*/activity",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.data.export",
          "title": "Export organization data",
          "description": "Export organization-authored Socialize data without provider credentials or media binaries.",
          "method": "GET",
          "path": "/api/organizations/{id}/data",
          "permission": "privacy:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/data",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{id}/data without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.data.erase",
          "title": "Erase organization data",
          "description": "Erase organization-authored Socialize data, provider connections, and media objects after active publishing work is cleared.",
          "method": "DELETE",
          "path": "/api/organizations/{id}/data",
          "permission": "privacy:write",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "confirmation": {
                "type": "string",
                "const": "ERASE"
              }
            },
            "required": [
              "id",
              "confirmation"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "confirmation": "ERASE"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/organizations/00000000-0000-4000-8000-000000000000/data",
              "body": null
            },
            "effects": "May change state through DELETE /api/organizations/{id}/data. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/organizations/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "preferences.get",
          "title": "Get user preferences",
          "description": "Get Socialize user preferences.",
          "method": "GET",
          "path": "/api/user/preferences",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get user preferences.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/user/preferences",
              "body": null
            },
            "effects": "Reads state through GET /api/user/preferences without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/user/preferences",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "preferences.update",
          "title": "Update user preferences",
          "description": "Update Socialize user preferences.",
          "method": "PUT",
          "path": "/api/user/preferences",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "theme": {
                "type": "string"
              },
              "language": {
                "type": "string"
              },
              "timezone": {
                "type": "string"
              },
              "notifications": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "dashboard": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "calendar": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "analytics": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update user preferences.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "theme": "example",
              "language": "example",
              "timezone": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/user/preferences",
              "body": {
                "theme": "example",
                "language": "example",
                "timezone": "example"
              }
            },
            "effects": "May change state through PUT /api/user/preferences. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/user/preferences",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.list",
          "title": "List integrations",
          "description": "List Socialize integrations.",
          "method": "GET",
          "path": "/api/integrations",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List integrations.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/integrations",
              "body": null
            },
            "effects": "Reads state through GET /api/integrations without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/integrations",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.connect",
          "title": "Connect integration",
          "description": "Start a Socialize integration connection.",
          "method": "POST",
          "path": "/api/integrations/{platform}/connect",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "platform": {
                "type": "string",
                "minLength": 1
              },
              "callbackUrl": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "platform"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "authUrl": {
                "type": "string",
                "format": "uri"
              },
              "state": {
                "type": "string",
                "minLength": 1
              },
              "expiresAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              }
            },
            "required": [
              "authUrl",
              "state",
              "expiresAt"
            ],
            "additionalProperties": false
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/applications/socialize#integrations",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "effects": [
              "Creates a short-lived OAuth state and returns the provider authorization URL; it does not complete the connection."
            ],
            "errors": [
              {
                "status": 400,
                "code": "unsupported_platform",
                "recovery": "Call integrations.list and choose a connectable provider id."
              },
              {
                "status": 409,
                "code": "integration_misconfigured",
                "recovery": "Configure the provider OAuth credential in Nexus for Socialize and this environment."
              },
              {
                "status": 503,
                "code": "integration_dependency_unavailable",
                "recovery": "Retry the action. If it continues, inspect Auth service-token exchange and Nexus availability using the request ID."
              }
            ],
            "verify": [
              "Open authUrl for the user, complete provider consent, then call integrations.list and confirm an active connection for the selected provider."
            ],
            "nextActionIds": [
              "app_topolo_socialize.integrations.list"
            ],
            "examples": [
              {
                "title": "Begin a personal LinkedIn connection",
                "description": "Returns the LinkedIn consent URL for the active Socialize brand.",
                "input": {
                  "platform": "linkedin"
                }
              }
            ]
          },
          "documentation": {
            "example_input": {
              "platform": "linkedin"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/integrations/linkedin/connect",
              "body": {
                "platform": "linkedin"
              }
            },
            "effects": "Creates a short-lived OAuth state and returns the provider authorization URL; it does not complete the connection.",
            "verification": [
              "Open authUrl for the user, complete provider consent, then call integrations.list and confirm an active connection for the selected provider."
            ],
            "recovery": [
              "400 unsupported_platform: Call integrations.list and choose a connectable provider id.",
              "409 integration_misconfigured: Configure the provider OAuth credential in Nexus for Socialize and this environment.",
              "503 integration_dependency_unavailable: Retry the action. If it continues, inspect Auth service-token exchange and Nexus availability using the request ID."
            ],
            "docs_url": "https://docs.topolo.app/applications/socialize#integrations",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "next_action_ids": [
              "app_topolo_socialize.integrations.list"
            ],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/integrations/*/connect",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.linkedin_organization.update",
          "title": "Update LinkedIn organization",
          "description": "Update Socialize LinkedIn organization.",
          "method": "PUT",
          "path": "/api/integrations/linkedin/organization",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "organizationId": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "organizationId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update LinkedIn organization.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "organizationId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/integrations/linkedin/organization",
              "body": {
                "organizationId": "example"
              }
            },
            "effects": "May change state through PUT /api/integrations/linkedin/organization. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/integrations/linkedin/organization",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.facebook_page.update",
          "title": "Update Facebook page",
          "description": "Update Socialize Facebook page.",
          "method": "PUT",
          "path": "/api/integrations/facebook/page",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "pageId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "pageId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update Facebook page.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "pageId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/integrations/facebook/page",
              "body": {
                "pageId": "example"
              }
            },
            "effects": "May change state through PUT /api/integrations/facebook/page. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/integrations/facebook/page",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.nickname.update",
          "title": "Update integration nickname",
          "description": "Update a Socialize integration nickname.",
          "method": "PUT",
          "path": "/api/integrations/{id}/nickname",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "nickname": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "nickname"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update integration nickname.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "nickname": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/integrations/00000000-0000-4000-8000-000000000000/nickname",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "nickname": "example"
              }
            },
            "effects": "May change state through PUT /api/integrations/{id}/nickname. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/integrations/*/nickname",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.disconnect",
          "title": "Disconnect integration",
          "description": "Disconnect a Socialize integration.",
          "method": "DELETE",
          "path": "/api/integrations/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Disconnect integration.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/integrations/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/integrations/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/integrations/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.generate_image",
          "title": "Generate image",
          "description": "Generate a Socialize image.",
          "method": "POST",
          "path": "/api/ai/generate-image",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "prompt": {
                "type": "string",
                "minLength": 10,
                "maxLength": 1000
              },
              "negativePrompt": {
                "type": "string",
                "maxLength": 500
              },
              "aspectRatio": {
                "type": "string",
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4"
                ]
              },
              "numberOfImages": {
                "type": "number",
                "minimum": 1,
                "maximum": 4
              },
              "style": {
                "type": "string",
                "enum": [
                  "photorealistic",
                  "digital_art",
                  "watercolor",
                  "oil_painting",
                  "sketch"
                ]
              },
              "preprocessPrompt": {
                "type": "boolean"
              },
              "postContent": {
                "type": "string",
                "maxLength": 2000
              },
              "provider": {
                "type": "string",
                "enum": [
                  "openai",
                  "google",
                  "xai",
                  "cloudflare"
                ]
              },
              "model": {
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "prompt"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Generate image.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "prompt": "examplexxx"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/generate-image",
              "body": {
                "prompt": "examplexxx"
              }
            },
            "effects": "May change state through POST /api/ai/generate-image. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/generate-image",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.generate_programmatic_image",
          "title": "Generate programmatic image",
          "description": "Generate a Socialize programmatic image.",
          "method": "POST",
          "path": "/api/ai/generate-programmatic-image",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "template": {
                "type": "string",
                "enum": [
                  "quote",
                  "stat",
                  "comparison",
                  "announcement",
                  "list",
                  "pricing",
                  "thread_hook",
                  "milestone"
                ]
              },
              "aspectRatio": {
                "type": "string",
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "4:5"
                ]
              },
              "channel": {
                "type": "string",
                "enum": [
                  "twitter",
                  "x",
                  "linkedin",
                  "linkedin_company",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ]
              },
              "claimIds": {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "ctaId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "content"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Generate programmatic image.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "content": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/generate-programmatic-image",
              "body": {
                "content": "example"
              }
            },
            "effects": "May change state through POST /api/ai/generate-programmatic-image. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/generate-programmatic-image",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.programmatic_config.get",
          "title": "Get programmatic config",
          "description": "Get Socialize programmatic image config.",
          "method": "GET",
          "path": "/api/ai/programmatic-config",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get programmatic config.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/programmatic-config",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/programmatic-config without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/programmatic-config",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.update_image",
          "title": "Update image",
          "description": "Update a Socialize item image.",
          "method": "POST",
          "path": "/api/ai/update-image",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "itemType": {
                "type": "string",
                "enum": [
                  "suggestion",
                  "post"
                ]
              },
              "itemId": {
                "type": "string",
                "minLength": 1
              },
              "imageUrl": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "itemType",
              "itemId",
              "imageUrl"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Update image.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "itemType": "suggestion",
              "itemId": "example",
              "imageUrl": "https://example.com"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/update-image",
              "body": {
                "itemType": "suggestion",
                "itemId": "example",
                "imageUrl": "https://example.com"
              }
            },
            "effects": "May change state through POST /api/ai/update-image. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/update-image",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.config.get",
          "title": "Get AI config",
          "description": "Get Socialize AI config.",
          "method": "GET",
          "path": "/api/ai/config",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get AI config.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/config",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/config without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/config",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.images.list",
          "title": "List AI images",
          "description": "List Socialize AI images.",
          "method": "GET",
          "path": "/api/ai/images",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "contentTypeId": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "favoritesOnly": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List AI images.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "contentTypeId": "example",
              "limit": 1,
              "offset": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/images",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/images without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/images",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.library.list",
          "title": "List AI library",
          "description": "List Socialize AI library items.",
          "method": "GET",
          "path": "/api/ai/library",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "contentTypeId": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "favoritesOnly": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List AI library.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "contentTypeId": "example",
              "limit": 1,
              "offset": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/library",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/library without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/library",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.library.create",
          "title": "Create AI library item",
          "description": "Create a Socialize AI library item.",
          "method": "POST",
          "path": "/api/ai/library",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "contentTypeId": {
                "type": "string",
                "minLength": 1
              },
              "inputs": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "output": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "tone": {
                "type": "string",
                "minLength": 1
              },
              "length": {
                "type": "string",
                "minLength": 1
              },
              "brandVoiceSnapshot": {},
              "authenticityControlsSnapshot": {},
              "aiLikenessScore": {},
              "tags": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "isFavorite": {
                "type": "boolean"
              },
              "mediaUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mediaType": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "contentTypeId",
              "inputs",
              "output",
              "tone",
              "length"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Create AI library item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "contentTypeId": "example",
              "inputs": {},
              "output": {},
              "tone": "example",
              "length": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/library",
              "body": {
                "contentTypeId": "example",
                "inputs": {},
                "output": {},
                "tone": "example",
                "length": "example"
              }
            },
            "effects": "May change state through POST /api/ai/library. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/library",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.library.delete",
          "title": "Delete AI library item",
          "description": "Delete a Socialize AI library item.",
          "method": "DELETE",
          "path": "/api/ai/library/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete AI library item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/ai/library/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/ai/library/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/ai/library/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.library.favorite",
          "title": "Favorite AI library item",
          "description": "Toggle favorite on a Socialize AI library item.",
          "method": "PATCH",
          "path": "/api/ai/library/{id}/favorite",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Favorite AI library item.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PATCH",
              "path": "/api/ai/library/00000000-0000-4000-8000-000000000000/favorite",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PATCH /api/ai/library/{id}/favorite. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PATCH /api/ai/library/*/favorite",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.list",
          "title": "List AI trends",
          "description": "List Socialize AI trends.",
          "method": "GET",
          "path": "/api/ai/trends",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "platforms": {
                "type": "string"
              },
              "region": {
                "type": "string",
                "enum": [
                  "global",
                  "us",
                  "uk",
                  "eu",
                  "uae",
                  "india",
                  "asia-pacific",
                  "latam"
                ]
              },
              "language": {
                "type": "string",
                "maxLength": 10
              },
              "topics": {
                "type": "string"
              },
              "timeWindow": {
                "type": "string",
                "enum": [
                  "24h",
                  "7d"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              },
              "forceRefresh": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List AI trends.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "platforms": "example",
              "region": "global",
              "language": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/trends",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/trends without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/trends",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.saved.list",
          "title": "List saved AI trends",
          "description": "List saved Socialize AI trends.",
          "method": "GET",
          "path": "/api/ai/trends/saved",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List saved AI trends.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/trends/saved",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/trends/saved without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/trends/saved",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.save",
          "title": "Save AI trend",
          "description": "Save a Socialize AI trend.",
          "method": "POST",
          "path": "/api/ai/trends/save",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "trendId": {
                "type": "string",
                "minLength": 1
              },
              "notes": {
                "type": "string",
                "maxLength": 500
              }
            },
            "required": [
              "trendId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Save AI trend.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "trendId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/trends/save",
              "body": {
                "trendId": "example"
              }
            },
            "effects": "May change state through POST /api/ai/trends/save. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/trends/save",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.health.get",
          "title": "Get trend provider health",
          "description": "Get Socialize trend provider health.",
          "method": "GET",
          "path": "/api/ai/trends/health",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get trend provider health.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/trends/health",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/trends/health without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/trends/health",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.x_research.get",
          "title": "Get X research",
          "description": "Get Socialize X research.",
          "method": "GET",
          "path": "/api/ai/x-research",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "handle": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 30
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get X research.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "handle": "example",
              "limit": 1,
              "days": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/x-research",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/x-research without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/x-research",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "trends.list",
          "title": "List trends",
          "description": "List Socialize content strategy trends.",
          "method": "GET",
          "path": "/api/trends",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "source": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List trends.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "source": "example",
              "limit": 1,
              "offset": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/trends",
              "body": null
            },
            "effects": "Reads state through GET /api/trends without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/trends",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.get",
          "title": "Get AI trend",
          "description": "Get a Socialize AI trend.",
          "method": "GET",
          "path": "/api/ai/trends/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Get AI trend.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/trends/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/trends/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/trends/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.generate",
          "title": "Generate from AI trend",
          "description": "Generate Socialize content from an AI trend.",
          "method": "POST",
          "path": "/api/ai/trends/{id}/generate",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "enum": [
                  "linkedin",
                  "x",
                  "instagram",
                  "tiktok",
                  "youtube"
                ]
              },
              "selectedAngleIndex": {
                "type": "number"
              },
              "selectedHookIndex": {
                "type": "number"
              },
              "tone": {
                "type": "string"
              },
              "length": {
                "type": "string"
              },
              "brandVoice": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "id",
              "platform"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Generate from AI trend.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000",
              "platform": "linkedin"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/ai/trends/00000000-0000-4000-8000-000000000000/generate",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000",
                "platform": "linkedin"
              }
            },
            "effects": "May change state through POST /api/ai/trends/{id}/generate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/ai/trends/*/generate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.trends.saved.delete",
          "title": "Delete saved AI trend",
          "description": "Delete a saved Socialize AI trend.",
          "method": "DELETE",
          "path": "/api/ai/trends/saved/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Delete saved AI trend.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/ai/trends/saved/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/ai/trends/saved/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/ai/trends/saved/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.list",
          "title": "List brand voice presets",
          "description": "List Socialize brand voice presets.",
          "method": "GET",
          "path": "/api/brand-voice/presets",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by List brand voice presets.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand-voice/presets",
              "body": null
            },
            "effects": "Reads state through GET /api/brand-voice/presets without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand-voice/presets",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "integrations.linkedin_company_organization.update",
          "title": "Integrations Linkedin Company Organization Update",
          "description": "Call PUT /api/integrations/linkedin_company/organization.",
          "method": "PUT",
          "path": "/api/integrations/linkedin_company/organization",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "organizationId": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "organizationId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Integrations Linkedin Company Organization Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "organizationId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/integrations/linkedin_company/organization",
              "body": {
                "organizationId": "example"
              }
            },
            "effects": "May change state through PUT /api/integrations/linkedin_company/organization. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/integrations/linkedin_company/organization",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.builtin.list",
          "title": "Brand Voice Presets Builtin List",
          "description": "Call GET /api/brand-voice/presets/builtin.",
          "method": "GET",
          "path": "/api/brand-voice/presets/builtin",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Builtin List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand-voice/presets/builtin",
              "body": null
            },
            "effects": "Reads state through GET /api/brand-voice/presets/builtin without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand-voice/presets/builtin",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.default.get",
          "title": "Brand Voice Presets Default Get",
          "description": "Call GET /api/brand-voice/presets/default.",
          "method": "GET",
          "path": "/api/brand-voice/presets/default",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Default Get.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand-voice/presets/default",
              "body": null
            },
            "effects": "Reads state through GET /api/brand-voice/presets/default without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand-voice/presets/default",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.create",
          "title": "Brand Voice Presets Create",
          "description": "Call POST /api/brand-voice/presets.",
          "method": "POST",
          "path": "/api/brand-voice/presets",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "tone": {
                "type": "string"
              },
              "audience": {
                "type": "string"
              },
              "styleRules": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "examples": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brand-voice/presets",
              "body": {
                "name": "example"
              }
            },
            "effects": "May change state through POST /api/brand-voice/presets. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brand-voice/presets",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.set_default",
          "title": "Brand Voice Presets Set Default",
          "description": "Call POST /api/brand-voice/presets/{id}/default.",
          "method": "POST",
          "path": "/api/brand-voice/presets/{id}/default",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Set Default.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000/default",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/brand-voice/presets/{id}/default. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brand-voice/presets/*/default",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.duplicate",
          "title": "Brand Voice Presets Duplicate",
          "description": "Call POST /api/brand-voice/presets/{id}/duplicate.",
          "method": "POST",
          "path": "/api/brand-voice/presets/{id}/duplicate",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Duplicate.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000/duplicate",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through POST /api/brand-voice/presets/{id}/duplicate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brand-voice/presets/*/duplicate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.get",
          "title": "Brand Voice Presets Get",
          "description": "Call GET /api/brand-voice/presets/{id}.",
          "method": "GET",
          "path": "/api/brand-voice/presets/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Get.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/brand-voice/presets/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand-voice/presets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.update",
          "title": "Brand Voice Presets Update",
          "description": "Call PUT /api/brand-voice/presets/{id}.",
          "method": "PUT",
          "path": "/api/brand-voice/presets/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "tone": {
                "type": "string"
              },
              "audience": {
                "type": "string"
              },
              "styleRules": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "examples": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/brand-voice/presets/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/brand-voice/presets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.presets.delete",
          "title": "Brand Voice Presets Delete",
          "description": "Call DELETE /api/brand-voice/presets/{id}.",
          "method": "DELETE",
          "path": "/api/brand-voice/presets/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Presets Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/brand-voice/presets/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/brand-voice/presets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand_voice.audit.list",
          "title": "Brand Voice Audit List",
          "description": "Call GET /api/brand-voice/audit.",
          "method": "GET",
          "path": "/api/brand-voice/audit",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Voice Audit List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand-voice/audit",
              "body": null
            },
            "effects": "Reads state through GET /api/brand-voice/audit without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand-voice/audit",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.ctas.list",
          "title": "Brand Ctas List",
          "description": "Call GET /api/brand/ctas.",
          "method": "GET",
          "path": "/api/brand/ctas",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Ctas List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand/ctas",
              "body": null
            },
            "effects": "Reads state through GET /api/brand/ctas without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand/ctas",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.ctas.create",
          "title": "Brand Ctas Create",
          "description": "Call POST /api/brand/ctas.",
          "method": "POST",
          "path": "/api/brand/ctas",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "label": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "category": {
                "type": "string"
              },
              "keywords": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "priority": {
                "type": "number"
              }
            },
            "required": [
              "label",
              "url"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Ctas Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "label": "example",
              "url": "https://example.com"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brand/ctas",
              "body": {
                "label": "example",
                "url": "https://example.com"
              }
            },
            "effects": "May change state through POST /api/brand/ctas. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brand/ctas",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.ctas.update",
          "title": "Brand Ctas Update",
          "description": "Call PUT /api/brand/ctas/{id}.",
          "method": "PUT",
          "path": "/api/brand/ctas/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "label": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "category": {
                "type": "string"
              },
              "keywords": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "priority": {
                "type": "number"
              },
              "isActive": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Ctas Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/brand/ctas/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/brand/ctas/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/brand/ctas/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.ctas.delete",
          "title": "Brand Ctas Delete",
          "description": "Call DELETE /api/brand/ctas/{id}.",
          "method": "DELETE",
          "path": "/api/brand/ctas/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand Ctas Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/brand/ctas/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/brand/ctas/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/brand/ctas/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.x_mentions.list",
          "title": "Brand X Mentions List",
          "description": "Call GET /api/brand/x-mentions.",
          "method": "GET",
          "path": "/api/brand/x-mentions",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand X Mentions List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brand/x-mentions",
              "body": null
            },
            "effects": "Reads state through GET /api/brand/x-mentions without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brand/x-mentions",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.x_mentions.create",
          "title": "Brand X Mentions Create",
          "description": "Call POST /api/brand/x-mentions.",
          "method": "POST",
          "path": "/api/brand/x-mentions",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "entityName": {
                "type": "string",
                "minLength": 1
              },
              "xHandle": {
                "type": "string",
                "minLength": 1
              },
              "entityType": {
                "type": "string"
              },
              "relationship": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              },
              "autoTag": {
                "type": "boolean"
              }
            },
            "required": [
              "entityName",
              "xHandle"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand X Mentions Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "entityName": "example",
              "xHandle": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brand/x-mentions",
              "body": {
                "entityName": "example",
                "xHandle": "example"
              }
            },
            "effects": "May change state through POST /api/brand/x-mentions. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brand/x-mentions",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.x_mentions.update",
          "title": "Brand X Mentions Update",
          "description": "Call PUT /api/brand/x-mentions/{id}.",
          "method": "PUT",
          "path": "/api/brand/x-mentions/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "entityName": {
                "type": "string",
                "minLength": 1
              },
              "xHandle": {
                "type": "string",
                "minLength": 1
              },
              "entityType": {
                "type": "string"
              },
              "relationship": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              },
              "autoTag": {
                "type": "boolean"
              },
              "isVerified": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand X Mentions Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/brand/x-mentions/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/brand/x-mentions/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/brand/x-mentions/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brand.x_mentions.delete",
          "title": "Brand X Mentions Delete",
          "description": "Call DELETE /api/brand/x-mentions/{id}.",
          "method": "DELETE",
          "path": "/api/brand/x-mentions/{id}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brand X Mentions Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/brand/x-mentions/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/brand/x-mentions/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/brand/x-mentions/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_targets.list",
          "title": "Content Strategy Engagement Targets List",
          "description": "Call GET /api/content-strategy/engagement-targets.",
          "method": "GET",
          "path": "/api/content-strategy/engagement-targets",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "activeOnly": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Targets List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "activeOnly": "true",
              "brandId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/engagement-targets",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/engagement-targets without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/engagement-targets",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_targets.create",
          "title": "Content Strategy Engagement Targets Create",
          "description": "Call POST /api/content-strategy/engagement-targets.",
          "method": "POST",
          "path": "/api/content-strategy/engagement-targets",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "platform": {
                "type": "string"
              },
              "username": {
                "type": "string",
                "minLength": 1
              },
              "displayName": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              },
              "priority": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "platform",
              "username"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Targets Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "platform": "example",
              "username": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/engagement-targets",
              "body": {
                "platform": "example",
                "username": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/engagement-targets. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/engagement-targets",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_targets.get",
          "title": "Content Strategy Engagement Targets Get",
          "description": "Call GET /api/content-strategy/engagement-targets/{id}.",
          "method": "GET",
          "path": "/api/content-strategy/engagement-targets/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Targets Get.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/engagement-targets/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/engagement-targets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_targets.update",
          "title": "Content Strategy Engagement Targets Update",
          "description": "Call PUT /api/content-strategy/engagement-targets/{id}.",
          "method": "PUT",
          "path": "/api/content-strategy/engagement-targets/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string"
              },
              "username": {
                "type": "string",
                "minLength": 1
              },
              "displayName": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              },
              "priority": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Targets Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/content-strategy/engagement-targets/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/content-strategy/engagement-targets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_targets.delete",
          "title": "Content Strategy Engagement Targets Delete",
          "description": "Call DELETE /api/content-strategy/engagement-targets/{id}.",
          "method": "DELETE",
          "path": "/api/content-strategy/engagement-targets/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Targets Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/content-strategy/engagement-targets/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/content-strategy/engagement-targets/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.topics.list",
          "title": "Content Strategy Topics List",
          "description": "Call GET /api/content-strategy/topics.",
          "method": "GET",
          "path": "/api/content-strategy/topics",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "activeOnly": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Topics List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "activeOnly": "true",
              "brandId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/topics",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/topics without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/topics",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.topics.create",
          "title": "Content Strategy Topics Create",
          "description": "Call POST /api/content-strategy/topics.",
          "method": "POST",
          "path": "/api/content-strategy/topics",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "topic": {
                "type": "string",
                "minLength": 1
              },
              "weight": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "topic"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Topics Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "topic": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/topics",
              "body": {
                "topic": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/topics. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/topics",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.topics.update",
          "title": "Content Strategy Topics Update",
          "description": "Call PUT /api/content-strategy/topics/{id}.",
          "method": "PUT",
          "path": "/api/content-strategy/topics/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "topic": {
                "type": "string",
                "minLength": 1
              },
              "weight": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Topics Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/content-strategy/topics/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/content-strategy/topics/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/content-strategy/topics/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.topics.delete",
          "title": "Content Strategy Topics Delete",
          "description": "Call DELETE /api/content-strategy/topics/{id}.",
          "method": "DELETE",
          "path": "/api/content-strategy/topics/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Topics Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/content-strategy/topics/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/content-strategy/topics/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/content-strategy/topics/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.pillars.list",
          "title": "Content Strategy Pillars List",
          "description": "Call GET /api/content-strategy/pillars.",
          "method": "GET",
          "path": "/api/content-strategy/pillars",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "activeOnly": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Pillars List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "activeOnly": "true",
              "brandId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/pillars",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/pillars without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/pillars",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.pillars.create",
          "title": "Content Strategy Pillars Create",
          "description": "Call POST /api/content-strategy/pillars.",
          "method": "POST",
          "path": "/api/content-strategy/pillars",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "weight": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Pillars Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "name": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/pillars",
              "body": {
                "name": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/pillars. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/pillars",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.pillars.update",
          "title": "Content Strategy Pillars Update",
          "description": "Call PUT /api/content-strategy/pillars/{id}.",
          "method": "PUT",
          "path": "/api/content-strategy/pillars/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "weight": {
                "type": "number"
              },
              "active": {
                "type": "boolean"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Pillars Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/content-strategy/pillars/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/content-strategy/pillars/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/content-strategy/pillars/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.pillars.delete",
          "title": "Content Strategy Pillars Delete",
          "description": "Call DELETE /api/content-strategy/pillars/{id}.",
          "method": "DELETE",
          "path": "/api/content-strategy/pillars/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Pillars Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/content-strategy/pillars/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/content-strategy/pillars/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/content-strategy/pillars/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.platform_preferences.list",
          "title": "Content Strategy Platform Preferences List",
          "description": "Call GET /api/content-strategy/platform-preferences.",
          "method": "GET",
          "path": "/api/content-strategy/platform-preferences",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Platform Preferences List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/platform-preferences",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/platform-preferences without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/platform-preferences",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.platform_preferences.create",
          "title": "Content Strategy Platform Preferences Create",
          "description": "Call POST /api/content-strategy/platform-preferences.",
          "method": "POST",
          "path": "/api/content-strategy/platform-preferences",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "platform": {
                "type": "string"
              },
              "enabled": {
                "type": "boolean"
              },
              "postingFrequency": {
                "type": "string"
              },
              "tone": {
                "type": "string"
              },
              "settings": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "platform"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Platform Preferences Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "platform": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/platform-preferences",
              "body": {
                "platform": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/platform-preferences. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/platform-preferences",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.generate",
          "title": "Content Strategy Generate",
          "description": "Call POST /api/content-strategy/generate.",
          "method": "POST",
          "path": "/api/content-strategy/generate",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "goals": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "prompt": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Generate.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "goals": [
                "example"
              ],
              "platforms": [
                "example"
              ]
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/generate",
              "body": {
                "brandId": "example",
                "goals": [
                  "example"
                ],
                "platforms": [
                  "example"
                ]
              }
            },
            "effects": "May change state through POST /api/content-strategy/generate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/generate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.list",
          "title": "Content Strategy Suggestions List",
          "description": "Call GET /api/content-strategy/suggestions.",
          "method": "GET",
          "path": "/api/content-strategy/suggestions",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "minLength": 1
              },
              "platform": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "brandId": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "status": "example",
              "platform": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/suggestions",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/suggestions without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/suggestions",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.generate",
          "title": "Content Strategy Suggestions Generate",
          "description": "Call POST /api/content-strategy/suggestions/generate.",
          "method": "POST",
          "path": "/api/content-strategy/suggestions/generate",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "platform": {
                "type": "string",
                "minLength": 1
              },
              "topic": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Generate.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "count": 1,
              "platform": "example",
              "topic": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/suggestions/generate",
              "body": {
                "count": 1,
                "platform": "example",
                "topic": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/suggestions/generate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/suggestions/generate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.generate_batch",
          "title": "Content Strategy Suggestions Generate Batch",
          "description": "Call POST /api/content-strategy/suggestions/generate-batch.",
          "method": "POST",
          "path": "/api/content-strategy/suggestions/generate-batch",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "platforms": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "topics": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Generate Batch.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "count": 1,
              "platforms": [
                "example"
              ],
              "topics": [
                "example"
              ]
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/suggestions/generate-batch",
              "body": {
                "count": 1,
                "platforms": [
                  "example"
                ],
                "topics": [
                  "example"
                ]
              }
            },
            "effects": "May change state through POST /api/content-strategy/suggestions/generate-batch. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/suggestions/generate-batch",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.generate_from_trends",
          "title": "Content Strategy Suggestions Generate From Trends",
          "description": "Call POST /api/content-strategy/suggestions/generate-from-trends.",
          "method": "POST",
          "path": "/api/content-strategy/suggestions/generate-from-trends",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "trendIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Generate From Trends.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "trendIds": [
                "example"
              ],
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/suggestions/generate-from-trends",
              "body": {
                "trendIds": [
                  "example"
                ],
                "limit": 1
              }
            },
            "effects": "May change state through POST /api/content-strategy/suggestions/generate-from-trends. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/suggestions/generate-from-trends",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.engagement_feed.list",
          "title": "Content Strategy Engagement Feed List",
          "description": "Call GET /api/content-strategy/engagement-feed.",
          "method": "GET",
          "path": "/api/content-strategy/engagement-feed",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "suggestions": {
                "type": "string",
                "enum": [
                  "true",
                  "false"
                ]
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Engagement Feed List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "limit": 1,
              "suggestions": "true"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/engagement-feed",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/engagement-feed without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/engagement-feed",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.get",
          "title": "Content Strategy Suggestions Get",
          "description": "Call GET /api/content-strategy/suggestions/{id}.",
          "method": "GET",
          "path": "/api/content-strategy/suggestions/{id}",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Get.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/suggestions/{id} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/suggestions/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.update",
          "title": "Content Strategy Suggestions Update",
          "description": "Call PUT /api/content-strategy/suggestions/{id}.",
          "method": "PUT",
          "path": "/api/content-strategy/suggestions/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string"
              },
              "imageUrl": {
                "type": "string"
              },
              "deferredUntil": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "notes": {
                "type": "string"
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
              "body": {
                "id": "00000000-0000-4000-8000-000000000000"
              }
            },
            "effects": "May change state through PUT /api/content-strategy/suggestions/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/content-strategy/suggestions/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.suggestions.delete",
          "title": "Content Strategy Suggestions Delete",
          "description": "Call DELETE /api/content-strategy/suggestions/{id}.",
          "method": "DELETE",
          "path": "/api/content-strategy/suggestions/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Suggestions Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/content-strategy/suggestions/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/content-strategy/suggestions/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.feedback.list",
          "title": "Content Strategy Feedback List",
          "description": "Call GET /api/content-strategy/feedback.",
          "method": "GET",
          "path": "/api/content-strategy/feedback",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Feedback List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "type": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/content-strategy/feedback",
              "body": null
            },
            "effects": "Reads state through GET /api/content-strategy/feedback without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/content-strategy/feedback",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.feedback.create",
          "title": "Content Strategy Feedback Create",
          "description": "Call POST /api/content-strategy/feedback.",
          "method": "POST",
          "path": "/api/content-strategy/feedback",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "minLength": 1
              },
              "message": {
                "type": "string",
                "minLength": 1
              },
              "metadata": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "type",
              "message"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Feedback Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "type": "example",
              "message": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/content-strategy/feedback",
              "body": {
                "type": "example",
                "message": "example"
              }
            },
            "effects": "May change state through POST /api/content-strategy/feedback. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/content-strategy/feedback",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "content_strategy.feedback.delete",
          "title": "Content Strategy Feedback Delete",
          "description": "Call DELETE /api/content-strategy/feedback/{id}.",
          "method": "DELETE",
          "path": "/api/content-strategy/feedback/{id}",
          "permission": "posts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Content Strategy Feedback Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/content-strategy/feedback/00000000-0000-4000-8000-000000000000",
              "body": null
            },
            "effects": "May change state through DELETE /api/content-strategy/feedback/{id}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/content-strategy/feedback/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.publishing_readiness.get",
          "title": "Brands Publishing Readiness Get",
          "description": "Call GET /api/brands/{id}/publishing-readiness.",
          "method": "GET",
          "path": "/api/brands/{id}/publishing-readiness",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "platforms": {
                "type": "object",
                "properties": {
                  "x": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "linkedin": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "facebook": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "instagram": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "threads": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "tiktok": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  },
                  "youtube": {
                    "type": "object",
                    "properties": {
                      "connected": {
                        "type": "boolean"
                      },
                      "canSchedule": {
                        "type": "boolean"
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_not_connected",
                          "connection_error",
                          "token_expired",
                          "connection_unavailable"
                        ]
                      }
                    },
                    "required": [
                      "connected",
                      "canSchedule"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "x",
                  "linkedin",
                  "facebook",
                  "instagram",
                  "threads",
                  "tiktok",
                  "youtube"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "brandId",
              "platforms"
            ],
            "additionalProperties": false
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "agentContract": {
            "docsUrl": "https://docs.topolo.app/applications/socialize#publishing-readiness",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "effects": [
              "Reads provider connection and token readiness without changing state."
            ],
            "errors": [
              {
                "status": 404,
                "code": "brand_not_found",
                "recovery": "Resolve a brand id through brands.list in the same organization before checking publishing readiness."
              }
            ],
            "verify": [
              "Require canSchedule=true for every target platform before scheduling or publishing."
            ],
            "nextActionIds": [
              "app_topolo_socialize.posts.create",
              "app_topolo_socialize.campaigns.create"
            ]
          },
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "id": "00000000-0000-4000-8000-000000000000"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/00000000-0000-4000-8000-000000000000/publishing-readiness",
              "body": null
            },
            "effects": "Reads provider connection and token readiness without changing state.",
            "verification": [
              "Require canSchedule=true for every target platform before scheduling or publishing."
            ],
            "recovery": [
              "404 brand_not_found: Resolve a brand id through brands.list in the same organization before checking publishing readiness."
            ],
            "docs_url": "https://docs.topolo.app/applications/socialize#publishing-readiness",
            "resource": {
              "kind": "brand",
              "idPath": "brandId"
            },
            "next_action_ids": [
              "app_topolo_socialize.posts.create",
              "app_topolo_socialize.campaigns.create"
            ],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*/publishing-readiness",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.list",
          "title": "Brands Voice Context List",
          "description": "Call GET /api/brands/{brandId}/voice-context.",
          "method": "GET",
          "path": "/api/brands/{brandId}/voice-context",
          "permission": "accounts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "document",
                  "sample",
                  "guideline",
                  "faq",
                  "competitor",
                  "other"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "brandId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context List.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/example/voice-context",
              "body": null
            },
            "effects": "Reads state through GET /api/brands/{brandId}/voice-context without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*/voice-context",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.create",
          "title": "Brands Voice Context Create",
          "description": "Call POST /api/brands/{brandId}/voice-context.",
          "method": "POST",
          "path": "/api/brands/{brandId}/voice-context",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "document",
                  "sample",
                  "guideline",
                  "faq",
                  "competitor",
                  "other"
                ]
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string",
                "minLength": 1
              },
              "metadata": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "brandId",
              "title",
              "content"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "title": "example",
              "content": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brands/example/voice-context",
              "body": {
                "brandId": "example",
                "title": "example",
                "content": "example"
              }
            },
            "effects": "May change state through POST /api/brands/{brandId}/voice-context. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brands/*/voice-context",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.bulk_create",
          "title": "Brands Voice Context Bulk Create",
          "description": "Call POST /api/brands/{brandId}/voice-context/bulk.",
          "method": "POST",
          "path": "/api/brands/{brandId}/voice-context/bulk",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "contexts": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "document",
                        "sample",
                        "guideline",
                        "faq",
                        "competitor",
                        "other"
                      ]
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "content": {
                      "type": "string",
                      "minLength": 1
                    },
                    "metadata": {
                      "type": "object",
                      "propertyNames": {
                        "type": "string"
                      },
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "title",
                    "content"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "brandId",
              "contexts"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Bulk Create.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "contexts": [
                {
                  "title": "example",
                  "content": "example"
                }
              ]
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brands/example/voice-context/bulk",
              "body": {
                "brandId": "example",
                "contexts": [
                  {
                    "title": "example",
                    "content": "example"
                  }
                ]
              }
            },
            "effects": "May change state through POST /api/brands/{brandId}/voice-context/bulk. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brands/*/voice-context/bulk",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.retrieve",
          "title": "Brands Voice Context Retrieve",
          "description": "Call POST /api/brands/{brandId}/voice-context/retrieve.",
          "method": "POST",
          "path": "/api/brands/{brandId}/voice-context/retrieve",
          "permission": "accounts:read",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "query": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "type": {
                "type": "string",
                "enum": [
                  "document",
                  "sample",
                  "guideline",
                  "faq",
                  "competitor",
                  "other"
                ]
              }
            },
            "required": [
              "brandId",
              "query"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Retrieve.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "query": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/brands/example/voice-context/retrieve",
              "body": {
                "brandId": "example",
                "query": "example"
              }
            },
            "effects": "May change state through POST /api/brands/{brandId}/voice-context/retrieve. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/brands/*/voice-context/retrieve",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.stats.get",
          "title": "Brands Voice Context Stats Get",
          "description": "Call GET /api/brands/{brandId}/voice-context/stats.",
          "method": "GET",
          "path": "/api/brands/{brandId}/voice-context/stats",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "document",
                  "sample",
                  "guideline",
                  "faq",
                  "competitor",
                  "other"
                ]
              }
            },
            "required": [
              "brandId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Stats Get.",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/brands/example/voice-context/stats",
              "body": null
            },
            "effects": "Reads state through GET /api/brands/{brandId}/voice-context/stats without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/brands/*/voice-context/stats",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.update",
          "title": "Brands Voice Context Update",
          "description": "Call PUT /api/brands/{brandId}/voice-context/{contextId}.",
          "method": "PUT",
          "path": "/api/brands/{brandId}/voice-context/{contextId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "contextId": {
                "type": "string",
                "minLength": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "document",
                  "sample",
                  "guideline",
                  "faq",
                  "competitor",
                  "other"
                ]
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "content": {
                "type": "string",
                "minLength": 1
              },
              "metadata": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "brandId",
              "contextId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Update.",
            "additionalProperties": true
          },
          "readOnly": false,
          "destructive": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "contextId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/brands/example/voice-context/example",
              "body": {
                "brandId": "example",
                "contextId": "example"
              }
            },
            "effects": "May change state through PUT /api/brands/{brandId}/voice-context/{contextId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/brands/*/voice-context/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "brands.voice_context.delete",
          "title": "Brands Voice Context Delete",
          "description": "Call DELETE /api/brands/{brandId}/voice-context/{contextId}.",
          "method": "DELETE",
          "path": "/api/brands/{brandId}/voice-context/{contextId}",
          "permission": "accounts:write",
          "requiresConfirmation": true,
          "destructive": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "brandId": {
                "type": "string",
                "minLength": 1
              },
              "contextId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "brandId",
              "contextId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "description": "Response returned by Brands Voice Context Delete.",
            "additionalProperties": true
          },
          "readOnly": false,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "brandId": "example",
              "contextId": "example"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/brands/example/voice-context/example",
              "body": null
            },
            "effects": "May change state through DELETE /api/brands/{brandId}/voice-context/{contextId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/brands/*/voice-context/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.get",
          "title": "Get AI usage",
          "description": "Get AI usage statistics for the selected brand.",
          "method": "GET",
          "path": "/api/ai/usage",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/usage",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/usage without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/usage",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.history",
          "title": "Get AI usage history",
          "description": "Get AI usage history for the selected brand.",
          "method": "GET",
          "path": "/api/ai/usage/history",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "days": {
                "type": "integer",
                "minimum": 1,
                "maximum": 365
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "days": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/usage/history",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/usage/history without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/usage/history",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.limits.get",
          "title": "Get AI usage limits",
          "description": "Get AI usage limits for the selected brand.",
          "method": "GET",
          "path": "/api/ai/usage/limits",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/usage/limits",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/usage/limits without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/usage/limits",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.limits.update",
          "title": "Update AI usage limits",
          "description": "Update AI usage limits for the selected brand.",
          "method": "PUT",
          "path": "/api/ai/usage/limits",
          "permission": "accounts:write",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "monthlyTokenLimit": {
                "type": "number",
                "minimum": 0
              },
              "dailyTokenLimit": {
                "type": "number",
                "minimum": 0
              },
              "monthlyCostLimitUsd": {
                "type": "number",
                "minimum": 0
              },
              "dailyCostLimitUsd": {
                "type": "number",
                "minimum": 0
              },
              "monthlyRequestLimit": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "dailyRequestLimit": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "contentGenerationsPerDay": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "trendSearchesPerDay": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "imageGenerationsPerDay": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "suggestionsPerDay": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "notifyAtPercentage": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "notificationEmail": {
                "type": "string",
                "format": "email",
                "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              },
              "hardLimit": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "monthlyTokenLimit": 1,
              "dailyTokenLimit": 1,
              "monthlyCostLimitUsd": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/ai/usage/limits",
              "body": {
                "monthlyTokenLimit": 1,
                "dailyTokenLimit": 1,
                "monthlyCostLimitUsd": 1
              }
            },
            "effects": "May change state through PUT /api/ai/usage/limits. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/ai/usage/limits",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.check",
          "title": "Check AI usage limits",
          "description": "Check whether an AI event is within the selected brand limits.",
          "method": "GET",
          "path": "/api/ai/usage/check",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "eventType": {
                "type": "string",
                "enum": [
                  "content_generation",
                  "trend_search",
                  "image_generation",
                  "suggestion",
                  "brand_voice",
                  "strategy_generation"
                ]
              }
            },
            "required": [
              "eventType"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "eventType": "content_generation"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/usage/check",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/usage/check without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/usage/check",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "ai.usage.events.list",
          "title": "List AI usage events",
          "description": "List AI usage events for the selected brand.",
          "method": "GET",
          "path": "/api/ai/usage/events",
          "permission": "analytics:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "eventType": {
                "type": "string",
                "enum": [
                  "content_generation",
                  "trend_search",
                  "image_generation",
                  "suggestion",
                  "brand_voice",
                  "strategy_generation"
                ]
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "limit": 1,
              "offset": 1,
              "eventType": "content_generation"
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/ai/usage/events",
              "body": null
            },
            "effects": "Reads state through GET /api/ai/usage/events without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/ai/usage/events",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "seeds.list",
          "title": "List shared seeds",
          "description": "List shared content-strategy seeds for the selected brand.",
          "method": "GET",
          "path": "/api/seeds",
          "permission": "posts:read",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "limit": 1,
              "offset": 1
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/seeds",
              "body": null
            },
            "effects": "Reads state through GET /api/seeds without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/seeds",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "seeds.share",
          "title": "Share seed",
          "description": "Share a content-strategy seed and generate brand suggestions.",
          "method": "POST",
          "path": "/api/seeds/share",
          "permission": "posts:write",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "source": {
                "type": "object",
                "properties": {
                  "platform": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "sharedText": {
                    "type": "string"
                  },
                  "sharedAt": {
                    "type": "string"
                  }
                },
                "required": [
                  "platform"
                ],
                "additionalProperties": false
              },
              "targeting": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "one",
                      "selected",
                      "all"
                    ]
                  },
                  "brandIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "additionalProperties": false
              },
              "priority": {
                "type": "string",
                "enum": [
                  "urgent",
                  "normal"
                ]
              },
              "userContext": {
                "type": "object",
                "properties": {
                  "note": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "source"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "authorizationMode": "static",
          "documentation": {
            "example_input": {
              "source": {
                "platform": "example"
              }
            },
            "cli_example": [
              "topolo actions --service socialize --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/seeds/share",
              "body": {
                "source": {
                  "platform": "example"
                }
              }
            },
            "effects": "May change state through POST /api/seeds/share. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/seeds/share",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        }
      ],
      "action_coverage": {
        "status": "ok",
        "served_routes": 215,
        "matched_actions": 173,
        "declared_unserved_actions": [],
        "coverage_excluded_actions": [],
        "uncatalogued_routes": [],
        "ignored_routes": 42,
        "configured_exclusions": 39,
        "configuration_findings": [],
        "notes": [
          "analyzed source for api (manifest points at dist build)",
          "analyzed source for jobs (manifest points at dist build)",
          "3 manually-declared route(s)"
        ]
      },
      "runtime_contract_audit": {
        "status": "verified",
        "actions": 173,
        "contracts": 173,
        "contract_module": "topolo.action-contracts.mjs",
        "validator_sources": [
          "apps/api/src/index.ts"
        ],
        "authorization_sources": [
          "apps/api/src/index.ts"
        ],
        "findings": []
      }
    }
  ],
  "mobile_contracts": [
    {
      "source_path": "apps/TopoloSocialize/topolo.mobile-experience.json",
      "contract": {
        "version": "2026-06-29",
        "status": "approved",
        "mode": "native_capability",
        "appId": "app_topolo_socialize",
        "localizationNamespace": "socialize",
        "permissions": [
          "posts:read",
          "posts:write",
          "calendar:read",
          "calendar:write",
          "accounts:read",
          "accounts:write"
        ],
        "offlinePolicy": "read_through_cache",
        "fallbackPath": "/posts",
        "auth": {
          "audience": "topolo-socialize",
          "scopes": [
            "posts:read",
            "posts:write",
            "calendar:read",
            "calendar:write",
            "accounts:read",
            "accounts:write"
          ]
        },
        "routes": [
          {
            "path": "/posts",
            "apiPath": "/api/posts",
            "title": "Posts",
            "titleKey": "socialize.mobile.routes.posts.title",
            "template": "record.list",
            "dataSource": "socialize.posts.list",
            "detailRoute": "/posts/:id",
            "actions": [
              {
                "id": "socialize.posts.create",
                "title": "Create post",
                "type": "record.create",
                "permission": "posts:write",
                "method": "POST",
                "path": "/api/posts",
                "fields": [
                  {
                    "key": "content",
                    "label": "Content",
                    "type": "textarea",
                    "required": true
                  },
                  {
                    "key": "platform",
                    "label": "Platform",
                    "type": "text",
                    "required": true
                  },
                  {
                    "key": "scheduledFor",
                    "label": "Scheduled for",
                    "type": "datetime"
                  },
                  {
                    "key": "publishNow",
                    "label": "Publish now",
                    "type": "boolean"
                  },
                  {
                    "key": "status",
                    "label": "Status",
                    "type": "text"
                  }
                ],
                "titleKey": "socialize.mobile.actions.posts.create.title"
              },
              {
                "id": "socialize.posts.update",
                "title": "Update post",
                "type": "record.update",
                "permission": "posts:write",
                "method": "PUT",
                "path": "/api/posts/:id",
                "fields": [
                  {
                    "key": "content",
                    "label": "Content",
                    "type": "textarea"
                  },
                  {
                    "key": "platform",
                    "label": "Platform",
                    "type": "text"
                  },
                  {
                    "key": "scheduledFor",
                    "label": "Scheduled for",
                    "type": "datetime"
                  },
                  {
                    "key": "publishNow",
                    "label": "Publish now",
                    "type": "boolean"
                  },
                  {
                    "key": "status",
                    "label": "Status",
                    "type": "text"
                  }
                ],
                "titleKey": "socialize.mobile.actions.posts.update.title"
              },
              {
                "id": "socialize.posts.delete",
                "title": "Delete post",
                "type": "record.delete",
                "permission": "posts:write",
                "method": "DELETE",
                "path": "/api/posts/:id",
                "titleKey": "socialize.mobile.actions.posts.delete.title"
              }
            ]
          },
          {
            "path": "/posts/:id",
            "apiPath": "/api/posts/:id",
            "title": "Posts",
            "titleKey": "socialize.mobile.routes.posts.title",
            "template": "record.detail",
            "dataSource": "socialize.posts.detail"
          },
          {
            "path": "/campaigns",
            "apiPath": "/api/campaigns",
            "title": "Campaigns",
            "titleKey": "socialize.mobile.routes.campaigns.title",
            "template": "record.list",
            "dataSource": "socialize.campaigns.list",
            "detailRoute": "/campaigns/:id",
            "actions": [
              {
                "id": "socialize.campaigns.update",
                "title": "Update campaign",
                "type": "record.update",
                "permission": "calendar:write",
                "method": "PUT",
                "path": "/api/campaigns/:id",
                "fields": [
                  {
                    "key": "name",
                    "label": "Name",
                    "type": "text"
                  },
                  {
                    "key": "description",
                    "label": "Description",
                    "type": "textarea"
                  },
                  {
                    "key": "status",
                    "label": "Status",
                    "type": "text"
                  },
                  {
                    "key": "windowStartDate",
                    "label": "Window start",
                    "type": "datetime"
                  },
                  {
                    "key": "windowEndDate",
                    "label": "Window end",
                    "type": "datetime"
                  }
                ],
                "titleKey": "socialize.mobile.actions.campaigns.update.title"
              },
              {
                "id": "socialize.campaigns.delete",
                "title": "Delete campaign",
                "type": "record.delete",
                "permission": "calendar:write",
                "method": "DELETE",
                "path": "/api/campaigns/:id",
                "titleKey": "socialize.mobile.actions.campaigns.delete.title"
              }
            ]
          },
          {
            "path": "/campaigns/:id",
            "apiPath": "/api/campaigns/:id",
            "title": "Campaigns",
            "titleKey": "socialize.mobile.routes.campaigns.title",
            "template": "record.detail",
            "dataSource": "socialize.campaigns.detail"
          },
          {
            "path": "/brands",
            "apiPath": "/api/brands",
            "title": "Brands",
            "titleKey": "socialize.mobile.routes.brands.title",
            "template": "record.list",
            "dataSource": "socialize.brands.list",
            "detailRoute": "/brands/:id",
            "actions": [
              {
                "id": "socialize.brands.create",
                "title": "Create brand",
                "type": "record.create",
                "permission": "accounts:write",
                "method": "POST",
                "path": "/api/brands",
                "fields": [
                  {
                    "key": "name",
                    "label": "Name",
                    "type": "text",
                    "required": true
                  },
                  {
                    "key": "description",
                    "label": "Description",
                    "type": "textarea"
                  }
                ],
                "titleKey": "socialize.mobile.actions.brands.create.title"
              },
              {
                "id": "socialize.brands.update",
                "title": "Update brand",
                "type": "record.update",
                "permission": "accounts:write",
                "method": "PUT",
                "path": "/api/brands/:id",
                "fields": [
                  {
                    "key": "name",
                    "label": "Name",
                    "type": "text"
                  },
                  {
                    "key": "description",
                    "label": "Description",
                    "type": "textarea"
                  }
                ],
                "titleKey": "socialize.mobile.actions.brands.update.title"
              }
            ]
          },
          {
            "path": "/brands/:id",
            "apiPath": "/api/brands/:id",
            "title": "Brands",
            "titleKey": "socialize.mobile.routes.brands.title",
            "template": "record.detail",
            "dataSource": "socialize.brands.detail"
          }
        ]
      }
    }
  ],
  "package_manifests": [],
  "deployment_configs": [],
  "source_signals": {
    "api_routes": [
      {
        "method": "ALL",
        "path": "/healthz",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/livez",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/health",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/status",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/readyz",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/api/internal/platform-connections/refresh-token",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/api/internal/ai/generate-image",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/version",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/test-public-simple",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "ALL",
        "path": "/api/auth/*",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/public/join-request",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/public/grok-raw",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/public/trends-debug",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/public/trends-test",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/public/trend/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/public/invite/:token",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/public/invite/:token/accept",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/integrations/:platform/callback",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/integrations/instagram/deauthorize",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/integrations/instagram/data-deletion",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/integrations/threads/deauthorize",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/integrations/threads/data-deletion",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "PUT",
        "path": "/api/media/upload/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "GET",
        "path": "/api/widget",
        "source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/generate-image",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/generate-programmatic-image",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/programmatic-config",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/update-image",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/config",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/images",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/generate-content",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/library",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/library",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/ai/library/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PATCH",
        "path": "/api/ai/library/:id/favorite",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/trends",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/trends/saved",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/trends/save",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/trends/health",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/x-research",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/trends",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/trends/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/ai/trends/:id/generate",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/ai/trends/saved/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/scheduler/drafts/from-trend",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand-voice/presets",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand-voice/presets/builtin",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand-voice/presets/default",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brand-voice/presets",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brand-voice/presets/:id/default",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brand-voice/presets/:id/duplicate",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand-voice/presets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/brand-voice/presets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/brand-voice/presets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand-voice/audit",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand/ctas",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brand/ctas",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/brand/ctas/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/brand/ctas/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brand/x-mentions",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brand/x-mentions",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/brand/x-mentions/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/brand/x-mentions/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/engagement-targets",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/engagement-targets",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/engagement-targets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/content-strategy/engagement-targets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/content-strategy/engagement-targets/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/topics",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/topics",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/content-strategy/topics/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/content-strategy/topics/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/pillars",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/pillars",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/content-strategy/pillars/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/content-strategy/pillars/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/platform-preferences",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/platform-preferences",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/usage",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/usage/history",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/usage/limits",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/ai/usage/limits",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/usage/check",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/ai/usage/events",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/generate",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/suggestions",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/suggestions/generate",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/suggestions/generate-batch",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/suggestions/generate-from-trends",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/seeds",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/seeds/share",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/engagement-feed",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/suggestions/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/content-strategy/suggestions/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/content-strategy/suggestions/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-strategy/feedback",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-strategy/feedback",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/content-strategy/feedback/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:id/publishing-readiness",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:brandId/voice-context",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brands/:brandId/voice-context",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brands/:brandId/voice-context/bulk",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brands/:brandId/voice-context/retrieve",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:brandId/voice-context/stats",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/brands/:brandId/voice-context/:contextId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/brands/:brandId/voice-context/:contextId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
      },
      {
        "method": "ALL",
        "path": "/api/auth/me",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "ALL",
        "path": "/api/debug/auth-context",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/posts",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/posts",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/posts/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/posts/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/posts/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/posts/:id/publish",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/posts/:id/archive",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PATCH",
        "path": "/api/posts/:id/reschedule",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PATCH",
        "path": "/api/posts/:id/toggle-pause",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-ops/queue",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-ops/daily",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-ops/events",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-ops/deck",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/content-ops/items/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PATCH",
        "path": "/api/content-ops/items/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-ops/items/:id/approve",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-ops/items/:id/reject",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-ops/items/:id/reschedule",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/content-ops/items/:id/retry",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/campaigns",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/campaigns/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/campaigns/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/campaigns/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/schedule",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/activate",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/complete",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/cancel",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/pause",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/campaigns/:id/resume",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/scheduler/process",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/scheduler/status",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/upload",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/media/list",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/bulk",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/media/tags",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/tags",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/media/tags/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/media/collections",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/collections",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/media/collections/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/media/:id/metadata",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/:id/complete",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/media/metadata",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/campaigns/:id/analytics",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/campaigns/:id/analytics/engine",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/campaigns/:id/analytics/variants/:variantId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/analytics/summary",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/flags",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/flags",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/flags/me",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/flags/user/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/flags/:flagId/users/:userId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/flags/:flagId/users/:userId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/flags/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PATCH",
        "path": "/api/flags/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/flags/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organization",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/organization/accept-invite",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/brands",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/workspaces/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/brands/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:id/members",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/brands/:id/join-requests",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/join-requests/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/join-requests/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organizations/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/organizations/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organizations/:id/members",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/organizations/:id/members",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/organizations/:id/members/:userId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/organizations/:id/members/:userId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organizations/:id/invites",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/organizations/:id/invites/:inviteId",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organizations/:id/activity",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/organizations/:id/data",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/organizations/:id/data",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/user/preferences",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/user/preferences",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "GET",
        "path": "/api/integrations",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "POST",
        "path": "/api/integrations/:platform/connect",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/integrations/linkedin/organization",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/integrations/linkedin_company/organization",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/integrations/facebook/page",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "PUT",
        "path": "/api/integrations/:id/nickname",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "DELETE",
        "path": "/api/integrations/:id",
        "source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
      },
      {
        "method": "LITERAL",
        "path": "/health",
        "source_path": "apps/TopoloSocialize/apps/scheduler/src/index.ts"
      },
      {
        "method": "LITERAL",
        "path": "/stats",
        "source_path": "apps/TopoloSocialize/apps/scheduler/src/index.ts"
      }
    ],
    "ui_routes": [
      {
        "path": "/feed",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/onboarding",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/dashboard",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/campaigns",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/campaigns/new",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/campaigns/:id",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/campaigns/:id/edit",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/posts",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/posts/new",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/posts/:id",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/posts/:id/edit",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/brands/new",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/calendar",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/analytics",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/billing",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/media",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/generate",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/designer",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/studio",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/library",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/trends",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/suggested",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/ai/feed",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/settings",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/settings/:section",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/referrals",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/admin",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/admin/flags",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/privacy",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/terms",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/design-system",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/pricing",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/brand/:slug",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/invites/accept",
        "source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
      },
      {
        "path": "/settings/integrations",
        "source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
      },
      {
        "path": "/settings/api-keys",
        "source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
      },
      {
        "path": "/settings/content-context",
        "source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
      },
      {
        "path": "/settings/content-strategy",
        "source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
      }
    ],
    "test_cases": [],
    "database_tables": []
  },
  "documentation": {
    "declared_paths": [
      "internal/apps/socialize",
      "applications/socialize"
    ],
    "present_paths": [
      "internal/apps/socialize",
      "applications/socialize"
    ],
    "missing_paths": [],
    "human_reference": "/systems/socialize",
    "machine_reference": "/machine/systems/socialize.json",
    "action_examples": 173,
    "action_schemas": 173
  },
  "source_findings": []
}