{
  "name": "SkedCast",
  "version": "1.0.0",
  "description": "Schedule and publish social posts, manage clients + connected accounts, and read analytics across 10 platforms, on behalf of a user.",
  "url": "https://skedcast.com",
  "documentationUrl": "https://skedcast.com/developers",
  "provider": {
    "organization": "SkedCast",
    "url": "https://skedcast.com"
  },
  "supportedInterfaces": [
    {
      "transport": "mcp-streamable-http",
      "url": "https://api.skedcast.com/mcp",
      "authentication": {
        "type": "oauth2",
        "protectedResourceMetadata": "https://api.skedcast.com/.well-known/oauth-protected-resource/mcp"
      }
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": true
  },
  "skills": [
    {
      "id": "list_scheduled_posts",
      "name": "list_scheduled_posts",
      "description": "List the workspace's posts (queue, drafts, published) newest-first, with optional status / client / platform filters."
    },
    {
      "id": "get_post",
      "name": "get_post",
      "description": "Get one post with its per-platform variants and fan-out targets."
    },
    {
      "id": "list_clients",
      "name": "list_clients",
      "description": "List the workspace's client groups (brands / influencers)."
    },
    {
      "id": "list_accounts",
      "name": "list_accounts",
      "description": "List connected social accounts, optionally filtered by client or platform."
    },
    {
      "id": "get_analytics_overview",
      "name": "get_analytics_overview",
      "description": "Reach / impressions / engagement plus a per-platform rollup over a date window."
    },
    {
      "id": "get_post_analytics",
      "name": "get_post_analytics",
      "description": "Per-post performance (complements get_analytics_overview): one post’s lifetime per-target breakdown by postId, or a keyset page of per-post rows with filters."
    },
    {
      "id": "list_library_assets",
      "name": "list_library_assets",
      "description": "List content-library (DAM) assets with optional kind / folder / client / search filters."
    },
    {
      "id": "get_agency",
      "name": "get_agency",
      "description": "The current workspace profile — name, plan, app mode, settings, and the caller’s role."
    },
    {
      "id": "list_reports",
      "name": "list_reports",
      "description": "List the workspace's saved analytics report definitions."
    },
    {
      "id": "get_best_times",
      "name": "get_best_times",
      "description": "Worker-derived best posting times (strongest-first), optionally by client / platform."
    },
    {
      "id": "list_approvals",
      "name": "list_approvals",
      "description": "List the workspace's approval queue (pending and decided requests), newest-first, with optional status / post filters."
    },
    {
      "id": "get_posting_limits",
      "name": "get_posting_limits",
      "description": "Anti-ban posting limits (cadence): one account by socialAccountId, or every active channel plus the tenant bypass flag when omitted."
    },
    {
      "id": "get_quota",
      "name": "get_quota",
      "description": "Adaptive quota pool: your scarce-bucket budget (guaranteed slice, used, burst headroom, tomorrow’s guarantee tonight, reset clock) — read before planning a batch."
    },
    {
      "id": "list_campaigns",
      "name": "list_campaigns",
      "description": "List the workspace's campaigns (named post groupings), optionally filtered by client / status."
    },
    {
      "id": "decide_approval",
      "name": "decide_approval",
      "description": "Approve, reject, or request changes on a pending approval request (approve releases the gated post for publishing). A write action — confirm with the user before calling."
    },
    {
      "id": "create_post",
      "name": "create_post",
      "description": "Compose a post and fan it out across the selected accounts (or save it as a draft). Retry-safe: retrying with identical arguments replays the original result instead of creating a duplicate. Note: two publish-now calls with byte-identical content and targets are treated as the same post and coalesced permanently — to intentionally publish the same content twice, vary the content or use distinct scheduled times. A write action — confirm with the user before calling."
    },
    {
      "id": "update_post",
      "name": "update_post",
      "description": "Replace a draft post in place — its content, media, targets, and schedule. Only draft posts can be updated. A write action — confirm with the user before calling."
    },
    {
      "id": "import_media",
      "name": "import_media",
      "description": "Ingest an external image / video into the content library by URL. A write action — confirm with the user before calling."
    },
    {
      "id": "reschedule_post",
      "name": "reschedule_post",
      "description": "Move a pending post target to a new time (absolute scheduledAt or relative shiftMinutes). A write action — confirm with the user before calling."
    },
    {
      "id": "cancel_post",
      "name": "cancel_post",
      "description": "Cancel a still-pending post target before it publishes. A write action — confirm with the user before calling."
    },
    {
      "id": "retry_post",
      "name": "retry_post",
      "description": "Re-queue a failed or rate-limited post target so it publishes again. A write action — confirm with the user before calling."
    },
    {
      "id": "set_post_recycle",
      "name": "set_post_recycle",
      "description": "Set, update, or disable a post's evergreen recycle settings (interval / times / end date / max recycles). A write action — confirm with the user before calling."
    },
    {
      "id": "shift_campaign",
      "name": "shift_campaign",
      "description": "Move a whole campaign's pending schedule by a relative number of minutes. A write action — confirm with the user before calling."
    },
    {
      "id": "list_webhooks",
      "name": "list_webhooks",
      "description": "List the workspace's outbound webhook endpoints (url, subscribed events, active flag; secret masked)."
    },
    {
      "id": "create_webhook",
      "name": "create_webhook",
      "description": "Register an outbound webhook endpoint for HMAC-signed event deliveries (post.scheduled, post.published, post.failed, target.rate_limited, account.disconnected, account.token_expiring, approval.requested, approval.decided, media.ready, report.completed). Returns the signing secret once. A write action — confirm with the user before calling."
    },
    {
      "id": "delete_webhook",
      "name": "delete_webhook",
      "description": "Delete an outbound webhook endpoint by id (deliveries cascade). A write action — confirm with the user before calling."
    },
    {
      "id": "create_client",
      "name": "create_client",
      "description": "Create a new client group (a brand or influencer whose accounts are managed together). A write action — confirm with the user before calling."
    },
    {
      "id": "create_connect_invite",
      "name": "create_connect_invite",
      "description": "Mint a shareable self-connect link so a client can connect the requested platforms themselves; returns the link and its expiry. A write action — confirm with the user before calling."
    }
  ]
}