{
  "tools": [
    {
      "name": "validate_post",
      "description": "Validate post content against target platform constraints and return repair hints.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["text", "targets"],
        "properties": {
          "text": {
            "type": "string"
          },
          "media_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targets": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["platform"],
              "properties": {
                "platform": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    {
      "name": "list_connected_accounts",
      "description": "List connected social accounts available to a PostMCP workspace.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id"],
        "properties": {
          "workspace_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "get_account_status",
      "description": "Fetch connection and authorization status for a connected social account.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["connected_account_id"],
        "properties": {
          "connected_account_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "get_platform_capabilities",
      "description": "Fetch posting and media capabilities for a connected account's platform.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["connected_account_id"],
        "properties": {
          "connected_account_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "publish_post",
      "description": "Publish a post immediately through PostMCP. Supports media_ids, dry_run, idempotency_key, auto_fix, sandbox, and target sandbox_behavior.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id", "text", "targets"],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "media_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targets": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["platform", "connected_account_id"],
              "properties": {
                "platform": {
                  "type": "string"
                },
                "connected_account_id": {
                  "type": "string"
                },
                "sandbox_behavior": {
                  "oneOf": [
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_succeed"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_fail"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "fail_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "needs_reauth"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "rate_limit_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "delayMs"],
                      "properties": {
                        "mode": {
                          "const": "slow_response_ms"
                        },
                        "delayMs": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "media_too_large"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "text_too_long"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "sandbox": {
            "type": "boolean"
          },
          "dry_run": {
            "type": "boolean"
          },
          "auto_fix": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "idempotency_key": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "schedule_post",
      "description": "Schedule a post through PostMCP. Supports media_ids, dry_run, idempotency_key, auto_fix, sandbox, and target sandbox_behavior.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id", "text", "targets", "scheduled_at"],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "media_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targets": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["platform", "connected_account_id"],
              "properties": {
                "platform": {
                  "type": "string"
                },
                "connected_account_id": {
                  "type": "string"
                },
                "sandbox_behavior": {
                  "oneOf": [
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_succeed"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_fail"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "fail_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "needs_reauth"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "rate_limit_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "delayMs"],
                      "properties": {
                        "mode": {
                          "const": "slow_response_ms"
                        },
                        "delayMs": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "media_too_large"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "text_too_long"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "scheduled_at": {
            "type": "string",
            "format": "date-time"
          },
          "sandbox": {
            "type": "boolean"
          },
          "dry_run": {
            "type": "boolean"
          },
          "auto_fix": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "idempotency_key": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "create_draft",
      "description": "Create a draft post through PostMCP without publishing or scheduling it. Supports media_ids, dry_run, idempotency_key, auto_fix, sandbox, and target sandbox_behavior.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id", "text", "targets"],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "media_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targets": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["platform", "connected_account_id"],
              "properties": {
                "platform": {
                  "type": "string"
                },
                "connected_account_id": {
                  "type": "string"
                },
                "sandbox_behavior": {
                  "oneOf": [
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_succeed"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "always_fail"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "fail_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "needs_reauth"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "n"],
                      "properties": {
                        "mode": {
                          "const": "rate_limit_after_n"
                        },
                        "n": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode", "delayMs"],
                      "properties": {
                        "mode": {
                          "const": "slow_response_ms"
                        },
                        "delayMs": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "media_too_large"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": false,
                      "required": ["mode"],
                      "properties": {
                        "mode": {
                          "const": "text_too_long"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "sandbox": {
            "type": "boolean"
          },
          "dry_run": {
            "type": "boolean"
          },
          "auto_fix": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "idempotency_key": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "upload_media",
      "description": "Upload media and return a stable PostMCP media ID for later post attachment.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id", "filename", "mime_type", "content_base64"],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "content_base64": {
            "type": "string",
            "contentEncoding": "base64"
          },
          "sandbox": {
            "type": "boolean"
          }
        }
      }
    },
    {
      "name": "list_posts",
      "description": "List scheduled, published, failed, cancelled, and draft posts for a workspace date and timezone.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["workspace_id", "date", "timezone"],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "timezone": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "connected_account_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "get_post_status",
      "description": "Fetch status and per-platform targets for a PostMCP post group.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["post_group_id"],
        "properties": {
          "post_group_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "delete_scheduled_post",
      "description": "Cancel a scheduled PostMCP post group.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["post_group_id"],
        "properties": {
          "post_group_id": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "get_usage",
      "description": "Fetch workspace usage totals, sandbox totals, and spend cap state.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "workspace_id",
          "period_start",
          "workspace_monthly_spend_cap_cents"
        ],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "period_start": {
            "type": "string",
            "format": "date-time"
          },
          "workspace_monthly_spend_cap_cents": {
            "type": "integer",
            "minimum": 0
          }
        }
      }
    },
    {
      "name": "get_billing_warnings",
      "description": "Fetch current billing warning state for usage-sensitive agent actions.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "workspace_id",
          "period_start",
          "workspace_monthly_spend_cap_cents"
        ],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "period_start": {
            "type": "string",
            "format": "date-time"
          },
          "workspace_monthly_spend_cap_cents": {
            "type": "integer",
            "minimum": 0
          }
        }
      }
    }
  ]
}
