{
  "data": {
    "a": {
      "slug": "oneup",
      "name": "OneUp API + MCP",
      "vendor": "OneUp",
      "vendorUrl": "https://www.oneupapp.io",
      "kind": "http-api",
      "category": "social-media",
      "summary": "Social scheduler with a JSON API and a hosted MCP server for posting, comments, inbox messages and analytics across eleven networks.",
      "url": "https://www.anchorterminal.com/tools/oneup",
      "markdownUrl": "https://www.anchorterminal.com/tools/oneup.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/oneup.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/oneup.json",
      "dns": "oneup.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://www.oneupapp.io/api",
      "packages": [],
      "auth": "api-key",
      "authNotes": "One account API key passed as the apiKey query parameter on every REST call, or in the MCP URL for clients that use a direct key. MCP clients can connect over OAuth instead, with dynamic client registration; the agent gets a token and connections are revoked at https://feed.oneupapp.io/mcp/oneup/connections. Keys are generated and regenerated at https://www.oneupapp.io/api-access. No scopes.",
      "pricing": "paid",
      "pricingNotes": "No free plan, 7-day trial (we found no statement that it needs no card). Basic $25 a month ($15 billed yearly) for 5 social accounts and 300 scheduled posts, Intermediate $60 ($48) for 15, Growth $120 ($84) for 30, Business $300 ($240) for 80, each with unlimited posts above Basic. Extra accounts $5, $4, $3 and $1 a month on those plans. X capped at 2, 4, 8 and 10 accounts. API and MCP on every plan, but analytics and comment endpoints need Intermediate or above. Enterprise from $2,000 a month ($1,600 billed yearly) for 1,000 accounts (https://www.oneupapp.io/price).",
      "priceSummary": "$25 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 or per-call payment in the docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 68,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.oneupapp.io/docs/overview",
      "capabilities": [
        "social.post",
        "social.schedule",
        "social.analytics",
        "social.comments",
        "social.media-upload"
      ],
      "tags": [
        "hosted",
        "mcp",
        "closed-source",
        "whatsapp"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 24.7,
        "grade": "F",
        "agentReady": false,
        "rank": 1452,
        "ranked": true,
        "rankOf": 1524,
        "categoryRank": 20,
        "methodology": "0.8",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 31,
          "maintenance": 28,
          "payments": 15,
          "reliability": 15,
          "schema": 32,
          "security": 21,
          "transparency": 40
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-11"
        },
        "negative": 0,
        "verdict": "API and MCP on every plan from $25 a month ($15 billed yearly), with 68 documented MCP tools for posting, comments, inbox and analytics, and OAuth for MCP clients. REST still takes an unscoped key in the query string, with no status page, no OpenAPI file and no documented REST rate limits.",
        "bestFor": "Small agencies that want posting, comment replies, analytics and a WhatsApp inbox from Claude, ChatGPT or a coding agent at a low monthly price.",
        "strengths": [
          "API and MCP on every plan from $25 a month ($15 billed yearly)",
          "Comments, analytics, Meta Ads reports and a Facebook, Instagram and WhatsApp inbox as well as publishing",
          "MCP Tools Reference lists 68 tools with required parameters, a 60-a-minute limit and common error messages with remedies",
          "OAuth with dynamic client registration for any MCP client, with a page to revoke each connection",
          "requireApproval and isDraftPost flags on post creation give a human review step"
        ],
        "weaknesses": [
          "API key in the query string on REST and as a documented MCP URL option, with no scopes",
          "No OpenAPI spec, no llms.txt and no MCP input schemas published",
          "No status page, no REST rate limits and no SLA",
          "Privacy policy names no subprocessors and has no DPA, and the terms allow discontinuing the service without notice",
          "Changelog entries since August are almost all app functions the API doesn't serve"
        ],
        "agentNotes": [
          "Connect MCP clients over OAuth at https://feed.oneupapp.io/mcp/oneup rather than putting ?apiKey= in the URL",
          "Call list-social-accounts-tool first and pass its social_account_id as social_network_id in other tools",
          "Set requireApproval or isDraftPost true when a person should review before anything goes out",
          "Keep MCP calls under 60 a minute and fetch many accounts one after another",
          "Give dates as YYYY-MM-DD HH:MM and analytics end dates no later than yesterday (UTC)"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 1.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.8",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 24.7
          }
        ],
        "editorialScores": {
          "ergonomics": 31,
          "maintenance": 28,
          "payments": 15,
          "reliability": 15,
          "schema": 32,
          "security": 21,
          "transparency": 20
        },
        "provenanceScore": 60,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-11",
            "maintenance": "2026-11-11",
            "payments": "2026-11-11",
            "reliability": "2026-11-11",
            "schema": "2026-11-11",
            "security": "2026-11-11",
            "transparency": "2026-11-11"
          },
          "last": "2026-11-11",
          "lastMoved": "2026-11-13",
          "oldest": "2026-11-11",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl \"https://www.oneupapp.io/api/listcategory?apiKey=$ONEUP_API_KEY\"",
        "claudeCode": "claude mcp add --transport http --scope user oneup \"https://feed.oneupapp.io/mcp/oneup\""
      },
      "letme": {
        "capability": "https://letme.dev/social.post",
        "tool": "https://letme.dev/oneup"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Basic",
          "unit": "month",
          "usd": 25,
          "note": "5 social accounts, no analytics or comment endpoints. $15 a month billed yearly"
        },
        {
          "item": "Intermediate",
          "unit": "month",
          "usd": 60,
          "note": "15 social accounts. $48 a month billed yearly"
        },
        {
          "item": "Growth",
          "unit": "month",
          "usd": 120,
          "note": "30 social accounts. $84 a month billed yearly"
        },
        {
          "item": "Business",
          "unit": "month",
          "usd": 300,
          "note": "80 social accounts. $240 a month billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "OneUp, Inc.",
        "domain": "oneupapp.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.oneupapp.io/terms",
        "privacy": "https://www.oneupapp.io/privacy",
        "statusPage": "",
        "changelog": "https://help.oneupapp.io/en-us/article/oneup-roadmap-product-updates-changelog-new-features-and-feature-requests-1vs2exx/",
        "securityTxt": "none",
        "checked": "2026-11-11",
        "notes": [
          "The terms name OneUp, Inc. of Cranberry Township, Pennsylvania.",
          "No registry date was read in this check (no RDAP request is made in this run)."
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/oneup.json",
      "live": {
        "slug": "oneup",
        "probe": {
          "target": "https://www.oneupapp.io/api",
          "method": "get",
          "lastAt": "2026-11-13T23:58:52.85241786Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 366,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.68,
          "p50ms24h": 380,
          "p95ms24h": 465,
          "samples24h": 239,
          "samples30d": 7892,
          "days": [
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 252
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 251
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 240
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 245
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 238
            },
            {
              "date": "2026-11-07",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 243,
              "ok": 242
            },
            {
              "date": "2026-11-09",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-10",
              "probes": 244,
              "ok": 240
            },
            {
              "date": "2026-11-11",
              "probes": 244,
              "ok": 244
            },
            {
              "date": "2026-11-12",
              "probes": 245,
              "ok": 245
            },
            {
              "date": "2026-11-13",
              "probes": 238,
              "ok": 238
            }
          ],
          "outages": [
            {
              "start": "2026-11-10T13:52:01.407717285Z",
              "end": "2026-11-10T14:10:08.917267002Z",
              "note": "timed out"
            },
            {
              "start": "2026-11-06T10:33:46.943300656Z",
              "end": "2026-11-06T10:51:24.979368657Z",
              "note": "timed out"
            },
            {
              "start": "2026-10-28T17:02:47.764493376Z",
              "end": "2026-10-28T17:19:21.452152158Z",
              "note": "timed out"
            }
          ],
          "since": "2026-10-08T00:00:00Z"
        },
        "securityTxt": {
          "url": "https://oneupapp.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-13T16:15:01.55927923Z"
        },
        "domain": {
          "domain": "oneupapp.io",
          "checkedAt": "2026-11-08T14:59:07.855753835Z"
        },
        "pages": [
          {
            "url": "https://help.oneupapp.io/en-us/article/oneup-roadmap-product-updates-changelog-new-features-and-feature-requests-1vs2exx/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-13T18:21:06.287478702Z",
            "changedAt": "2026-11-13T18:21:06.287478702Z",
            "fingerprint": "fcdfa7d5aa4c"
          },
          {
            "url": "https://www.oneupapp.io/price",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-13T18:42:51.673092144Z",
            "changedAt": "2026-11-11T17:22:51.510174729Z",
            "fingerprint": "7020c879d933"
          },
          {
            "url": "https://www.oneupapp.io/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-13T18:42:54.327356263Z",
            "changedAt": "2026-10-22T01:35:03.096129817Z",
            "fingerprint": "8d6b2795a7a3"
          },
          {
            "url": "https://www.oneupapp.io/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-13T18:42:55.865390357Z",
            "changedAt": "2026-10-22T01:35:04.594075778Z",
            "fingerprint": "bb7fcd9ab62d"
          }
        ],
        "mcpTools": {
          "url": "https://feed.oneupapp.io/mcp/oneup?apiKey=$ONEUP_API_KEY",
          "checkedAt": "2026-11-11T02:43:22.511736167Z",
          "status": "ok",
          "note": "answered without the initialize handshake",
          "tools": [
            {
              "name": "list-categories-tool",
              "title": "List Categories Tool",
              "description": "Lists all categories (groups of social accounts) in your OneUp account. Use this to find category IDs for scheduling posts.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "categories": {
                    "description": "Categories in the connected OneUp account.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "categories"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "list-social-accounts-tool",
              "title": "List Social Accounts Tool",
              "description": "Lists all connected social media accounts across all platforms. Shows account status and expiration info.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "accounts": {
                    "description": "Connected social accounts in the OneUp account.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "accounts"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "list-category-accounts-tool",
              "title": "List Category Accounts Tool",
              "description": "Lists social accounts within a specific category. Use this to get social_network_id values for scheduling posts.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "category_id": {
                    "description": "The category ID to list accounts from (use list-categories to find IDs)",
                    "type": "integer"
                  }
                },
                "required": [
                  "category_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "accounts": {
                    "description": "Connected social accounts in the selected category.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "accounts"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-pinterest-boards-tool",
              "title": "Fetch Pinterest Boards Tool",
              "description": "Fetches the list of Pinterest boards for a given Pinterest username. Returns board_name and board_id for each board.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "pinterest_username": {
                    "description": "The Pinterest username to fetch boards for",
                    "type": "string"
                  }
                },
                "required": [
                  "pinterest_username"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "boards": {
                    "description": "Pinterest boards available to the connected account.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "boards"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-you-tube-playlists-tool",
              "title": "Fetch You Tube Playlists Tool",
              "description": "Fetches YouTube playlists for a given YouTube channel. Returns playlist_name and playlist_id for each playlist.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The YouTube channel's social account ID. Find it using list-social-accounts or list-category-accounts.",
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "playlists": {
                    "description": "YouTube playlists available to the connected channel.",
                    "type": [
                      "array",
                      "object"
                    ]
                  }
                },
                "required": [
                  "playlists"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-tiktok-trending-sound-tool",
              "title": "Get Tiktok Trending Sound Tool",
              "description": "Fetches trending TikTok sounds/music. IMPORTANT: Before calling this tool, you MUST ask the user to provide: (1) their country code, (2) their preferred date range, and (3) their preferred genre. Do NOT assume or fill in default values for these parameters. Present the available options and wait for the user to respond before making this call. After receiving results, present all sounds as a numbered list and ask the user to choose one.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "country_code": {
                    "description": "REQUIRED: You MUST ask the user which country to use before calling this tool. ISO 3166-1 alpha-2 country code (e.g., US, GB, CA, AU, PH, JP, BR, DE, FR, IN). Do NOT guess or default to any country.",
                    "type": "string"
                  },
                  "date_range": {
                    "description": "REQUIRED: You MUST ask the user which date range they prefer. Valid options: 1DAY (today), 7DAY (past week), 30DAY (past month), 90DAY (past 3 months). Suggest 7DAY as a good starting point, but let the user choose.",
                    "enum": [
                      "1DAY",
                      "7DAY",
                      "30DAY",
                      "90DAY"
                    ],
                    "type": "string"
                  },
                  "genre": {
                    "description": "REQUIRED: You MUST ask the user which genre they prefer. Valid options: ALL (all genres), POP, HIP_HOP_RAP, ROCK, RNB_SOUL, DANCE_ELECTRONIC, LATIN, COUNTRY, INDIE_ALT, KPOP, JPOP, and more. Suggest ALL if they want broad results, but let the user choose.",
                    "enum": [
                      "ALL",
                      "POP",
                      "HIP_HOP_RAP",
                      "ROCK",
                      "RNB_SOUL",
                      "DANCE_ELECTRONIC",
                      "LATIN",
                      "COUNTRY",
                      "INDIE_ALT",
                      "KPOP",
                      "JPOP",
                      "CLASSICAL",
                      "METAL",
                      "FOLK_ACOUSTIC",
                      "JAZZ",
                      "BLUES",
                      "REGGAE",
                      "WORLD_MUSIC"
                    ],
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The TikTok account's social account ID. Find it using list-social-accounts or list-category-accounts.",
                    "type": "string"
                  }
                },
                "required": [
                  "country_code",
                  "date_range",
                  "genre",
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "sounds": {
                    "description": "Trending TikTok sounds matching the requested filters.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "sounds"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-instagram-trending-sound-tool",
              "title": "Get Instagram Trending Sound Tool",
              "description": "Fetches trending Instagram sounds/music. IMPORTANT: Before calling this tool, you MUST ask the user if they want to search for a specific sound or get general trending sounds. You also need to identify an Instagram account with account_type=1 (Facebook-connected Business/Creator account). Use list-social-accounts to find the Instagram account ID (this is the only API that returns account_type). After receiving results, present all sounds as a numbered list and ask the user to choose one.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "search_query": {
                    "description": "OPTIONAL: Search query to filter trending sounds (e.g., \"game of thrones\"). Leave empty or omit for general trending sounds. Ask the user if they want to search for something specific or get general trending.",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "REQUIRED: The Instagram account's social account ID. Use list-social-accounts to find it (this is the only API that returns account_type). IMPORTANT: Only Instagram accounts with account_type=1 (Facebook-connected Business/Creator accounts) work with trending sounds.",
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "sounds": {
                    "description": "Trending Instagram sounds matching the requested search.",
                    "type": [
                      "array",
                      "object"
                    ]
                  }
                },
                "required": [
                  "sounds"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            },
            {
              "name": "schedule-text-post-tool",
              "title": "Schedule Text Post Tool",
              "description": "Schedules a text-only post to one or more social media accounts. The post will be published at the specified time.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "category_id": {
                    "description": "The category ID that groups your target accounts",
                    "type": "integer"
                  },
                  "content": {
                    "description": "The text content of your post",
                    "type": "string"
                  },
                  "coupon_code": {
                    "description": "Coupon code for GBP offer (optional)",
                    "type": "string"
                  },
                  "cta_button": {
                    "description": "GBP CTA button: CALL (Call), LEARN_MORE (Learn more), BOOK (Book), SIGN_UP (Sign up), ORDER (Order online), SHOP (Buy)",
                    "type": "string"
                  },
                  "cta_button_url": {
                    "description": "URL for GBP CTA button (required unless cta_button is CALL)",
                    "type": "string"
                  },
                  "event_end_date": {
                    "description": "GBP event end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_start_date": {
                    "description": "GBP event start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_title": {
                    "description": "Title for GBP event post (required when google_post_type is \"event\")",
                    "type": "string"
                  },
                  "facebook": {
                    "description": "{ \"locationId\": number } - locationId: The Facebook location ID for tagging a location on the post",
                    "type": "object"
                  },
                  "first_comment": {
                    "description": "First comment (for Facebook, Instagram, LinkedIn, YouTube)",
                    "type": "string"
                  },
                  "google_post_type": {
                    "description": "Google Business Profile post type: \"update\", \"event\", or \"offer\". Required when posting to GBP.",
                    "type": "string"
                  },
                  "isDraftPost": {
                    "description": "Set to true to save as a draft instead of scheduling. Default: false",
                    "type": "boolean"
                  },
                  "link_to_redeem_url": {
                    "description": "URL to redeem GBP offer (optional)",
                    "type": "string"
                  },
                  "offer_end_date": {
                    "description": "GBP offer end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_start_date": {
                    "description": "GBP offer start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_title": {
                    "description": "Title for GBP offer post (required when google_post_type is \"offer\")",
                    "type": "string"
                  },
                  "requireApproval": {
                    "default": false,
                    "description": "Set to true to require approval before the post is published.",
                    "type": "boolean"
                  },
                  "scheduled_date_time": {
                    "description": "The date and time (in YYYY-MM-DD HH:MM format) when the post should be published. Alternatively, you can pass \"timeslot\" to use your predefined time slots.",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "Account ID, array of IDs, or \"ALL\" to post to all accounts in the category",
                    "type": "string"
                  },
                  "subreddit": {
                    "description": "The target location for your post. To publish to a Subreddit: Use the subreddit name (e.g., vishal2947world). To publish to your Profile: Prefix your username with u_ (e.g., u_daviswbaer).",
                    "type": "string"
                  },
                  "title": {
                    "description": "The title of your post. For YouTube and Reddit, it serves as the post title. For Threads, it's used as the topic.",
                    "type": "string"
                  }
                },
                "required": [
                  "category_id",
                  "social_network_id",
                  "scheduled_date_time",
                  "content"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "post_ids": {
                    "description": "IDs of the newly scheduled posts, one per social account. Pass these as post_id to edit-post or delete-scheduled-post.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "success": {
                    "description": "Whether the post was scheduled successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "schedule-image-post-tool",
              "title": "Schedule Image Post Tool",
              "description": "Schedules an image post to one or more social media accounts. Supports multiple images and platform-specific options.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "category_id": {
                    "description": "Category ID",
                    "type": "integer"
                  },
                  "content": {
                    "description": "Post caption/text. Defaults to \".\" for Facebook and Instagram stories if omitted or empty.",
                    "type": "string"
                  },
                  "coupon_code": {
                    "description": "Coupon code for GBP offer (optional)",
                    "type": "string"
                  },
                  "cta_button": {
                    "description": "GBP CTA button: CALL (Call), LEARN_MORE (Learn more), BOOK (Book), SIGN_UP (Sign up), ORDER (Order online), SHOP (Buy)",
                    "type": "string"
                  },
                  "cta_button_url": {
                    "description": "URL for GBP CTA button (required unless cta_button is CALL)",
                    "type": "string"
                  },
                  "event_end_date": {
                    "description": "GBP event end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_start_date": {
                    "description": "GBP event start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_title": {
                    "description": "Title for GBP event post (required when google_post_type is \"event\")",
                    "type": "string"
                  },
                  "facebook": {
                    "description": "{ \"isStory\": true/false, \"locationId\": number } - locationId: The Facebook location ID for tagging a location on the post",
                    "type": "object"
                  },
                  "first_comment": {
                    "description": "First comment",
                    "type": "string"
                  },
                  "google_post_type": {
                    "description": "Google Business Profile post type: \"update\", \"event\", \"offer\", or \"none\". Required when posting to GBP. When set to \"none\", the image will only be added to the Photos section of GBP and will not publish as a GBP Post.",
                    "type": "string"
                  },
                  "image_to_gbp_photo": {
                    "description": "Set to true to also add the image to the Photos section of your Google Business Profile. Only applicable when posting to a GBP account. Default: false",
                    "type": "boolean"
                  },
                  "image_url": {
                    "description": "Image URL(s). Separate multiple with ~~. Required unless isDraftPost is true. When isDraftPost is true, omit this parameter entirely (do not send an empty string or invent a placeholder URL) — the draft is saved without publishing, so no platform media requirement applies yet.",
                    "type": "string"
                  },
                  "instagram": {
                    "description": "{ \"isStory\": true/false, \"collaborator\": \"user1,user2\", \"locationId\": number, \"is_ai_generated\": true/false } - collaborator: comma-separated Instagram usernames (max 5, no @ symbol). locationId: The Instagram location ID for tagging a location on the post. is_ai_generated: Set to true to label the post as AI-generated on Instagram. Default: false",
                    "type": "object"
                  },
                  "isDraftPost": {
                    "description": "Set to true to save as a draft instead of scheduling. Default: false. When true, image_url is not required — omit it rather than supplying a placeholder or empty string.",
                    "type": "boolean"
                  },
                  "link_to_redeem_url": {
                    "description": "URL to redeem GBP offer (optional)",
                    "type": "string"
                  },
                  "offer_end_date": {
                    "description": "GBP offer end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_start_date": {
                    "description": "GBP offer start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_title": {
                    "description": "Title for GBP offer post (required when google_post_type is \"offer\")",
                    "type": "string"
                  },
                  "pinterest": {
                    "description": "MANDATORY for Pinterest accounts. This field is required when posting to any Pinterest account (account IDs starting with \"pin_\"). The API request will fail without it. JSON object: { \"board_name\": \"Board Name\", \"board_id\": \"123456\", \"destination_link\": \"https://example.com\" } - destination_link: Optional URL to add as the destination link for the Pin. Use fetch-pinterest-boards to get available boards first.",
                    "type": "object"
                  },
                  "requireApproval": {
                    "default": false,
                    "description": "Set to true to require approval before the post is published.",
                    "type": "boolean"
                  },
                  "scheduled_date_time": {
                    "description": "The date and time (in YYYY-MM-DD HH:MM format) when the post should be published. Alternatively, you can pass \"timeslot\" to use your predefined time slots.",
                    "type": "string"
                  },
                  "snapchat": {
                    "description": "{ \"isSpotLight\": true/false }",
                    "type": "object"
                  },
                  "social_network_id": {
                    "description": "Account ID, array of IDs, or \"ALL\" to post to all accounts in the category",
                    "type": "string"
                  },
                  "subreddit": {
                    "description": "The target location for your post. To publish to a Subreddit: Use the subreddit name (e.g., vishal2947world). To publish to your Profile: Prefix your username with u_ (e.g., u_daviswbaer).",
                    "type": "string"
                  },
                  "tiktok": {
                    "description": "Optional TikTok parameters. JSON object with these options (combinable): 1) { \"autoAddMusic\": true/false } - Let TikTok automatically add music (default: true). 2) { \"musicOption\": { \"music_title\": \"...\", \"music_sound_id\": \"...\", \"music_url\": \"...\", \"music_thumbnail\": \"...\", \"music_author\": \"...\" } } - Specify exact music. If provided, ALL fields inside musicOption are REQUIRED. 3) { \"is_ai_generated\": true/false } - Set to true to disclose AI-generated content per TikTok's Content Disclosure policy. Default: false. 4) { \"is_your_brand\": true/false } - Set to true if the post promotes your own brand, product, or service — TikTok labels it \"Promotional content\". Default: false. 5) { \"is_branded_content\": true/false } - Set to true if the post promotes another brand or third party — TikTok labels it \"Paid partnership\". Default: false. Use get-tiktok-trending-sound to fetch trending music.",
                    "type": "object"
                  },
                  "title": {
                    "description": "The title of your post. For YouTube and Reddit, it serves as the post title. For Threads, it's used as the topic.",
                    "type": "string"
                  }
                },
                "required": [
                  "category_id",
                  "social_network_id",
                  "scheduled_date_time",
                  "content"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "post_ids": {
                    "description": "IDs of the newly scheduled posts, one per social account. Pass these as post_id to edit-post or delete-scheduled-post.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "success": {
                    "description": "Whether the image post was scheduled successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "schedule-video-post-tool",
              "title": "Schedule Video Post Tool",
              "description": "Schedules a video post to one or more social media accounts. Supports thumbnails and platform-specific options.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "category_id": {
                    "description": "Category ID",
                    "type": "integer"
                  },
                  "content": {
                    "description": "Post caption/text. Defaults to \".\" for Facebook and Instagram stories if omitted or empty.",
                    "type": "string"
                  },
                  "coupon_code": {
                    "description": "Coupon code for GBP offer (optional)",
                    "type": "string"
                  },
                  "cta_button": {
                    "description": "GBP CTA button: CALL (Call), LEARN_MORE (Learn more), BOOK (Book), SIGN_UP (Sign up), ORDER (Order online), SHOP (Buy)",
                    "type": "string"
                  },
                  "cta_button_url": {
                    "description": "URL for GBP CTA button (required unless cta_button is CALL)",
                    "type": "string"
                  },
                  "event_end_date": {
                    "description": "GBP event end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_start_date": {
                    "description": "GBP event start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "event_title": {
                    "description": "Title for GBP event post (required when google_post_type is \"event\")",
                    "type": "string"
                  },
                  "facebook": {
                    "description": "{ \"isStory\": true/false, \"locationId\": number, \"is_ai_generated\": true/false } - Facebook publishes all videos as Reels. locationId: The Facebook location ID for tagging a location on the post. is_ai_generated: Set to true to label the Reel as AI-generated on Facebook. Default: false",
                    "type": "object"
                  },
                  "first_comment": {
                    "description": "First comment",
                    "type": "string"
                  },
                  "google_post_type": {
                    "description": "Google Business Profile post type: \"update\", \"event\", or \"offer\". Required when posting to GBP.",
                    "type": "string"
                  },
                  "instagram": {
                    "description": "{ \"isStory\": true/false, \"addToFeed\": 1|0, \"isTrialReel\": 1|2, \"collaborator\": \"user1,user2\", \"locationId\": number, \"is_ai_generated\": true/false, \"musicOption\": { \"music_sound_id\": \"...\", \"music_title\": \"...\", \"music_url\": \"...\" } } - addToFeed: 1 = reel appears on Posts tab (Feed), 0 = reel only in Reels tab. Default: 1. collaborator: comma-separated Instagram usernames (max 5, no @ symbol). locationId: The Instagram location ID for tagging a location on the post. is_ai_generated: Set to true to label the post as AI-generated on Instagram. Default: false. musicOption: Add trending music to your Instagram video. Use get-instagram-trending-sound to fetch trending music.",
                    "type": "object"
                  },
                  "isDraftPost": {
                    "description": "Set to true to save as a draft instead of scheduling. Default: false. When true, video_url is not required — omit it rather than supplying a placeholder or empty string.",
                    "type": "boolean"
                  },
                  "link_to_redeem_url": {
                    "description": "URL to redeem GBP offer (optional)",
                    "type": "string"
                  },
                  "offer_end_date": {
                    "description": "GBP offer end date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_start_date": {
                    "description": "GBP offer start date (YYYY-MM-DD HH:MM am/pm format)",
                    "type": "string"
                  },
                  "offer_title": {
                    "description": "Title for GBP offer post (required when google_post_type is \"offer\")",
                    "type": "string"
                  },
                  "pinterest": {
                    "description": "MANDATORY for Pinterest accounts. This field is required when posting to any Pinterest account (account IDs starting with \"pin_\"). The API request will fail without it. JSON object: { \"board_name\": \"Board Name\", \"board_id\": \"123456\", \"destination_link\": \"https://example.com\" } - destination_link: Optional URL to add as the destination link for the Pin. Use fetch-pinterest-boards to get available boards first.",
                    "type": "object"
                  },
                  "requireApproval": {
                    "default": false,
                    "description": "Set to true to require approval before the post is published.",
                    "type": "boolean"
                  },
                  "scheduled_date_time": {
                    "description": "The date and time (in YYYY-MM-DD HH:MM format) when the post should be published. Alternatively, you can pass \"timeslot\" to use your predefined time slots.",
                    "type": "string"
                  },
                  "snapchat": {
                    "description": "{ \"isSpotLight\": bool }",
                    "type": "object"
                  },
                  "social_network_id": {
                    "description": "Account ID, array of IDs, or \"ALL\" to post to all accounts in the category",
                    "type": "string"
                  },
                  "subreddit": {
                    "description": "The target location for your post. To publish to a Subreddit: Use the subreddit name (e.g., vishal2947world). To publish to your Profile: Prefix your username with u_ (e.g., u_daviswbaer).",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Optional thumbnail URL",
                    "type": "string"
                  },
                  "tiktok": {
                    "description": "Optional TikTok parameters for video posts. JSON object: { \"is_ai_generated\": true/false, \"is_your_brand\": true/false, \"is_branded_content\": true/false, \"musicOption\": { \"music_title\": \"...\", \"music_sound_id\": \"...\", \"music_url\": \"...\", \"music_thumbnail\": \"...\", \"music_author\": \"...\" } }. is_ai_generated: Set to true to disclose AI-generated content per TikTok's Content Disclosure policy. Default: false. is_your_brand: Set to true if the post promotes your own brand, product, or service — TikTok labels it \"Promotional content\". Default: false. is_branded_content: Set to true if the post promotes another brand or third party — TikTok labels it \"Paid partnership\". Default: false. musicOption: Add trending music to your TikTok post — if provided, ALL fields inside musicOption are REQUIRED. Use get-tiktok-trending-sound to fetch trending music.",
                    "type": "object"
                  },
                  "title": {
                    "description": "The title of your post. For YouTube and Reddit, it serves as the post title. For Threads, it's used as the topic.",
                    "type": "string"
                  },
                  "video_url": {
                    "description": "Video URL. Required unless isDraftPost is true. When isDraftPost is true, omit this parameter entirely (do not send an empty string or invent a placeholder URL) — the draft is saved without publishing, so no platform media requirement applies yet.",
                    "type": "string"
                  },
                  "youtube": {
                    "description": "Optional YouTube options for video posts (all fields optional). JSON object: { \"privacy\": \"public|private|unlisted\", \"made_for_kids\": true/false, \"tags\": [\"a\",\"b\"] or \"a,b\", \"is_short\": true/false, \"notify_subscribers\": true/false, \"playlist_id\": \"PLxxxxxx\", \"playlist_name\": \"Playlist Name\", \"ai_generated_content\": true/false }. privacy: video visibility, default \"public\". made_for_kids: default false. tags: array or comma-separated string, max 500 characters in total. is_short: publish as a YouTube Short, default false (portrait videos of 3 minutes or less are posted as Shorts automatically). notify_subscribers: set to false to publish without notifying subscribers, default true. playlist_id + playlist_name: add the video to a playlist — pass both, using values from fetch-you-tube-playlists-tool. ai_generated_content: disclose AI-generated content, default false.",
                    "type": "object"
                  }
                },
                "required": [
                  "category_id",
                  "social_network_id",
                  "scheduled_date_time",
                  "content"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "post_ids": {
                    "description": "IDs of the newly scheduled posts, one per social account. Pass these as post_id to edit-post or delete-scheduled-post.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "success": {
                    "description": "Whether the video post was scheduled successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "get-scheduled-posts-tool",
              "title": "Get Scheduled Posts Tool",
              "description": "Retrieves scheduled posts that are waiting to be published. Returns up to 50 posts per call. This endpoint is paginated: to fetch all posts, start with start=0, then call again with start=50, start=100, and so on, increasing start by 50 each time. When the response includes a \"next_start\" value, more posts are available - call this tool again passing that value as start. Keep paginating until \"next_start\" is null.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "start": {
                    "description": "Pagination offset (default: 0). Each page returns up to 50 posts. To fetch the next page, pass the \"next_start\" value from the previous response, or increase start by 50.",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "count": {
                    "description": "Number of posts returned in this page.",
                    "type": "integer"
                  },
                  "next_start": {
                    "description": "Pagination offset for the next page, or null when this is the final page.",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "posts": {
                    "description": "Scheduled posts returned for the requested page.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "start": {
                    "description": "Pagination offset used for this page.",
                    "type": "integer"
                  }
                },
                "required": [
                  "posts",
                  "start",
                  "count",
                  "next_start"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-scheduled-posts-by-id-tool",
              "title": "Get Scheduled Posts By Id Tool",
              "description": "Retrieves specific scheduled posts by their IDs. Use this to check the status of posts you just scheduled without paging through the entire queue with get-scheduled-posts. Pass the post_ids returned by schedule-text-post, schedule-image-post, or schedule-video-post.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "post_ids": {
                    "description": "IDs of the scheduled posts to retrieve. Use the post_ids returned when scheduling a post, or the post_id values from get-scheduled-posts.",
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "post_ids"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "count": {
                    "description": "Number of posts returned.",
                    "type": "integer"
                  },
                  "posts": {
                    "description": "Scheduled posts matching the requested IDs. Each includes post_id, content, date_time, category_name, social_network_username, and isPublished status.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "posts",
                  "count"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get_published_posts",
              "title": "Get Published Posts",
              "description": "Retrieves posts that have been successfully published. Returns up to 50 posts per call. This endpoint is paginated: to fetch all posts, start with start=0, then call again with start=50, start=100, and so on, increasing start by 50 each time. When the response includes a \"next_start\" value, more posts are available - call this tool again passing that value as start. Keep paginating until \"next_start\" is null.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "start": {
                    "description": "Pagination offset (default: 0). Each page returns up to 50 posts. To fetch the next page, pass the \"next_start\" value from the previous response, or increase start by 50.",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "count": {
                    "description": "Number of posts returned in this page.",
                    "type": "integer"
                  },
                  "next_start": {
                    "description": "Pagination offset for the next page, or null when this is the final page.",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "posts": {
                    "description": "Published posts returned for the requested page.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "start": {
                    "description": "Pagination offset used for this page.",
                    "type": "integer"
                  }
                },
                "required": [
                  "posts",
                  "start",
                  "count",
                  "next_start"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-failed-posts-tool",
              "title": "Get Failed Posts Tool",
              "description": "Retrieves posts that failed to publish, including the failure reason. Returns up to 50 posts per call. This endpoint is paginated: to fetch all posts, start with start=0, then call again with start=50, start=100, and so on, increasing start by 50 each time. When the response includes a \"next_start\" value, more posts are available - call this tool again passing that value as start. Keep paginating until \"next_start\" is null.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "start": {
                    "description": "Pagination offset (default: 0). Each page returns up to 50 posts. To fetch the next page, pass the \"next_start\" value from the previous response, or increase start by 50.",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "count": {
                    "description": "Number of posts returned in this page.",
                    "type": "integer"
                  },
                  "next_start": {
                    "description": "Pagination offset for the next page, or null when this is the final page.",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "posts": {
                    "description": "Failed posts returned for the requested page.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "start": {
                    "description": "Pagination offset used for this page.",
                    "type": "integer"
                  }
                },
                "required": [
                  "posts",
                  "start",
                  "count",
                  "next_start"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-draft-posts-tool",
              "title": "Get Draft Posts Tool",
              "description": "Retrieves draft posts that have been saved but not scheduled or published. Returns up to 50 posts per call. This endpoint is paginated: to fetch all posts, start with start=0, then call again with start=50, start=100, and so on, increasing start by 50 each time. When the response includes a \"next_start\" value, more posts are available - call this tool again passing that value as start. Keep paginating until \"next_start\" is null. Use the post_id from a draft to edit it with edit-post.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "start": {
                    "description": "Pagination offset (default: 0). Each page returns up to 50 posts. To fetch the next page, pass the \"next_start\" value from the previous response, or increase start by 50.",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "count": {
                    "description": "Number of posts returned in this page.",
                    "type": "integer"
                  },
                  "next_start": {
                    "description": "Pagination offset for the next page, or null when this is the final page.",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "posts": {
                    "description": "Draft posts returned for the requested page.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "start": {
                    "description": "Pagination offset used for this page.",
                    "type": "integer"
                  }
                },
                "required": [
                  "posts",
                  "start",
                  "count",
                  "next_start"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "delete-scheduled-post-tool",
              "title": "Delete Scheduled Post Tool",
              "description": "Deletes a scheduled post that has not yet been published. Use the post_ids returned by schedule-text-post, schedule-image-post, or schedule-video-post, or use get-scheduled-posts to find the post_id.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The ID of the scheduled post to delete. Find it using get-scheduled-posts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "post_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the scheduled post was deleted successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "delete-failed-post-tool",
              "title": "Delete Failed Post Tool",
              "description": "Deletes a post that failed to publish. Only failed posts can be deleted with this tool. Use get-failed-posts to find the post_id. To retry a failed post instead, use reschedule-failed-post.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The ID of the failed post to delete. Find it using get-failed-posts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "post_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the failed post was deleted successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "edit-post-tool",
              "title": "Edit Post Tool",
              "description": "Edits the title and/or content of an existing scheduled or draft post. Only scheduled (unpublished) and draft posts can be edited. Published posts CANNOT be edited. Failed posts CANNOT be edited - use reschedule-failed-post to retry them. Use the post_ids returned by schedule-text-post, schedule-image-post, or schedule-video-post, or use get-scheduled-posts or get-draft-posts to find the post_id.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "content": {
                    "description": "The new content/caption for the post.",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The ID of the scheduled or draft post to edit. Find it using get-scheduled-posts or get-draft-posts. Must NOT be a failed or published post - those cannot be edited.",
                    "type": "integer"
                  },
                  "title": {
                    "description": "Optional new title for the post (for YouTube, Reddit, and Threads posts).",
                    "type": "string"
                  }
                },
                "required": [
                  "post_id",
                  "content"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the post was updated successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "reschedule-failed-post-tool",
              "title": "Reschedule Failed Post Tool",
              "description": "Reschedules a post that previously failed to publish. The scheduled time must be at least 5 minutes in the future. Use get-failed-posts to find the post_id.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The ID of the failed post to reschedule. Find it using get-failed-posts.",
                    "type": "integer"
                  },
                  "scheduled_date_time": {
                    "description": "The new date and time for the post to be published. Format: YYYY-MM-DD HH:MM. Must be at least 5 minutes in the future.",
                    "type": "string"
                  }
                },
                "required": [
                  "post_id",
                  "scheduled_date_time"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the failed post was rescheduled successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "fetch-top-comments-tool",
              "title": "Fetch Top Comments Tool",
              "description": "Read-only. Lists the user's published posts stored in OneUp together with their comments, sorted by the specified filter and optionally limited to one social account via social_account_id. Results are paginated with next_id. Each post includes the platform, post_id, and social_account_id used by reply-to-post-tool, and each comment includes the id used by fetch-comment-replies-tool and reply-to-comment-tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "filter": {
                    "description": "Sort order: \"recent_comment\" (default, posts with newest non-owner comments first), \"latest\" (newest posts first), or \"oldest\" (oldest posts first)",
                    "type": "string"
                  },
                  "next_id": {
                    "description": "Pagination offset. Omit for the first page. Use the next_id from the previous response to fetch the next page.",
                    "type": "integer"
                  },
                  "social_account_id": {
                    "description": "Return only posts (and comments) for this social account. Omit to include all accounts. Use list-social-accounts to get IDs. Only set this when the user asks for a specific account.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "next_id": {
                    "description": "Cursor for the next page, or null when there are no more results.",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "posts": {
                    "description": "Posts and comments matching the requested filter.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "posts",
                  "next_id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-comment-replies-tool",
              "title": "Fetch Comment Replies Tool",
              "description": "Fetches existing child comments (replies) for a specific parent comment. This is read-only — to reply to a comment, use reply-to-comment-tool. Use the comment_id from fetch-top-comments to load the full reply thread.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "comment_id": {
                    "description": "The parent comment ID to fetch replies for",
                    "type": "string"
                  }
                },
                "required": [
                  "comment_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "replies": {
                    "description": "Replies to the selected parent comment.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "replies"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "reply-to-post-tool",
              "title": "Reply To Post Tool",
              "description": "Publishes a new top-level comment on one of the user's social media posts, posted publicly as the selected social account. To reply to an existing comment instead, use reply-to-comment-tool. Get the platform, post_id, and social_account_id from fetch-top-comments-tool. Confirm the comment text with the user before calling.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "comment": {
                    "description": "The comment text to post",
                    "type": "string"
                  },
                  "platform": {
                    "description": "The social platform: facebook, instagram, tiktok, youtube, threads, linkedin, bluesky, or reddit",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The post ID to comment on",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The social account ID to comment as",
                    "type": "string"
                  }
                },
                "required": [
                  "platform",
                  "post_id",
                  "comment",
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "comment": {
                    "description": "Comment data returned by OneUp.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the comment was posted successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message",
                  "comment"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "reply-to-comment-tool",
              "title": "Reply To Comment Tool",
              "description": "Replies to an existing comment on a social media post. Use fetch-top-comments or fetch-comment-replies to get the parent_comment_id first.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "comment": {
                    "description": "The reply text",
                    "type": "string"
                  },
                  "parent_comment_id": {
                    "description": "The ID of the parent comment to reply to",
                    "type": "string"
                  },
                  "platform": {
                    "description": "The social platform: facebook, instagram, tiktok, youtube, threads, linkedin, bluesky, or reddit",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The post ID where the comment exists",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The social account ID to reply as",
                    "type": "string"
                  }
                },
                "required": [
                  "platform",
                  "post_id",
                  "parent_comment_id",
                  "comment",
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Reply data returned by OneUp.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the reply was posted successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message",
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "delete-comment-tool",
              "title": "Delete Comment Tool",
              "description": "Deletes a comment from a social media post. This action cannot be undone.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "comment_id": {
                    "description": "The ID of the comment to delete",
                    "type": "string"
                  },
                  "platform": {
                    "description": "The social platform: facebook, instagram, tiktok, youtube, linkedin, bluesky, or reddit",
                    "type": "string"
                  },
                  "post_id": {
                    "description": "The post ID where the comment exists",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The social account ID",
                    "type": "string"
                  }
                },
                "required": [
                  "platform",
                  "post_id",
                  "comment_id",
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Deletion data returned by OneUp.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "message": {
                    "description": "Human-readable result message.",
                    "type": "string"
                  },
                  "success": {
                    "description": "Whether the comment was deleted successfully.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "success",
                  "message",
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "force-refresh-comments-tool",
              "title": "Force Refresh Comments Tool",
              "description": "Triggers a manual refresh of comments from connected social platforms. Returns the refresh status: \"started\" (refresh initiated), \"already_in_progress\" (a refresh is currently running), or \"cooldown\" (recently refreshed — check remaining_seconds or next_refresh_available_at before retrying).",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "message": {
                    "description": "Human-readable refresh status message.",
                    "type": "string"
                  },
                  "next_refresh_available_at": {
                    "description": "Timestamp when another refresh may be started.",
                    "type": "string"
                  },
                  "remaining_seconds": {
                    "description": "Seconds remaining before another refresh may be started.",
                    "type": "integer"
                  },
                  "status": {
                    "description": "Current comment refresh status.",
                    "enum": [
                      "started",
                      "already_in_progress",
                      "cooldown"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "status"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "fetch-conversations-tool",
              "title": "Fetch Conversations Tool",
              "description": "Fetches Social Inbox conversations for one user-selected Facebook, Instagram, or WhatsApp account. Before calling this tool, list the available accounts, show them to the user, and wait for the user to choose one. Never call this tool for multiple accounts in response to one broad inbox request. Side effect: if the account has not been synced to the OneUp inbox yet, this call starts a background sync in OneUp and returns retry_after_seconds; wait that long before calling this tool again. It does not mark messages as read or send anything.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "The next_cursor from the previous response",
                    "type": "string"
                  },
                  "per_page": {
                    "description": "Number of conversations to return. Defaults to 20.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "platform": {
                    "description": "Limit conversations to one platform",
                    "enum": [
                      "facebook",
                      "instagram",
                      "whatsapp"
                    ],
                    "type": "string"
                  },
                  "search": {
                    "description": "Search message text and participant names",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "The selected social account ID",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "status": {
                    "description": "Conversation status filter. Defaults to open.",
                    "enum": [
                      "open",
                      "closed",
                      "spam",
                      "all"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Conversations, or null while account sync is pending.",
                    "items": {
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Pagination, sync, and refresh status.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before polling after a pending sync.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "fetch-conversation-messages-tool",
              "title": "Fetch Conversation Messages Tool",
              "description": "Fetches messages for a Social Inbox conversation, newest first. Use the numeric id returned by fetch-conversations-tool, not the platform conversation_id. Reading messages does not mark them as read.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "The next_cursor from the previous response",
                    "type": "string"
                  },
                  "id": {
                    "description": "Internal conversation ID returned by fetch-conversations-tool",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "per_page": {
                    "description": "Number of messages to return. Defaults to 20.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Conversation messages, or null while account sync is pending.",
                    "items": {
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Pagination or sync status.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before polling after a pending sync.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-whats-app-accounts-tool",
              "title": "Fetch Whats App Accounts Tool",
              "description": "Fetches connected WhatsApp business phone numbers. Use the returned social_account_id with WhatsApp conversation, contact, and template tools.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Connected WhatsApp business phone numbers.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-whats-app-contacts-tool",
              "title": "Fetch Whats App Contacts Tool",
              "description": "Fetches saved WhatsApp contacts for one connected business phone number. Use the returned contact id with create-whats-app-conversation-tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "Connected WhatsApp business phone number ID",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Saved WhatsApp contacts.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "fetch-whats-app-templates-tool",
              "title": "Fetch Whats App Templates Tool",
              "description": "Fetches approved WhatsApp templates for one connected business phone number. Use the returned saved template id with create-whats-app-conversation-tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "Connected WhatsApp business phone number ID",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Approved saved WhatsApp templates.",
                    "items": {
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "create-whats-app-conversation-tool",
              "title": "Create Whats App Conversation Tool",
              "description": "Starts or reopens a WhatsApp conversation by sending an approved template to a saved contact. Fetch the contact and template IDs first. Do not retry automatically after an uncertain send failure; inspect the conversation before sending again.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "Connected WhatsApp business phone number ID",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "whatsapp_contact_id": {
                    "description": "Saved Inbox contact ID from fetch-whats-app-contacts-tool",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "whatsapp_template_id": {
                    "description": "Saved approved template ID from fetch-whats-app-templates-tool",
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "social_account_id",
                  "whatsapp_contact_id",
                  "whatsapp_template_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Created conversation, saved template message, and provider outcome.",
                    "type": "object"
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "force-refresh-conversations-tool",
              "title": "Force Refresh Conversations Tool",
              "description": "Requests a refresh of recent Facebook or Instagram inbox conversations. This is asynchronous: wait retry_after_seconds, then use fetch-conversations-tool to check sync and refresh status. WhatsApp is updated by webhooks and cannot be refreshed here.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of recent conversations to refresh. Defaults to 20.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "platform": {
                    "description": "The selected account platform",
                    "enum": [
                      "facebook",
                      "instagram"
                    ],
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "Selected Facebook or Instagram account ID",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Refresh data, or null while account sync is pending.",
                    "type": [
                      "object",
                      "array",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Sync and refresh status.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before checking refresh status.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "load-more-conversations-tool",
              "title": "Load More Conversations Tool",
              "description": "Loads five more Facebook or Instagram conversations for one account. After it succeeds, call fetch-conversations-tool again without a cursor. WhatsApp conversations cannot use this tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "social_account_id": {
                    "description": "Selected Facebook or Instagram account ID",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "social_account_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Previous, total, added, and requested conversation counts plus has_more.",
                    "type": "object"
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "send-message-tool",
              "title": "Send Message Tool",
              "description": "Sends a text reply in a Social Inbox conversation. WhatsApp replies require a customer message within the last 24 hours. Do not retry automatically after an uncertain failure; inspect the conversation before sending again.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "id": {
                    "description": "Internal conversation ID returned by fetch-conversations-tool",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "message": {
                    "description": "Reply text",
                    "maxLength": 4096,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "message"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Saved message and provider outcome, or null while account sync is pending.",
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Sync status when setup is pending.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying after pending account setup.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "mark-conversation-read-tool",
              "title": "Mark Conversation Read Tool",
              "description": "Marks unread incoming messages in a Social Inbox conversation as read without sending a platform read receipt. Use the numeric id from fetch-conversations-tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "id": {
                    "description": "Internal conversation ID returned by fetch-conversations-tool",
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Number of messages marked read, or null while account sync is pending.",
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Sync status when setup is pending.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying after pending account setup.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "update-conversation-status-tool",
              "title": "Update Conversation Status Tool",
              "description": "Changes a Social Inbox conversation status to open, closed, or spam. Use the numeric id returned by fetch-conversations-tool.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "id": {
                    "description": "Internal conversation ID returned by fetch-conversations-tool",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "status": {
                    "description": "New conversation status",
                    "enum": [
                      "open",
                      "closed",
                      "spam"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Updated conversation, or null while account sync is pending.",
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "error": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  },
                  "meta": {
                    "description": "Sync status when setup is pending.",
                    "type": [
                      "object",
                      "array"
                    ]
                  },
                  "retry_after_seconds": {
                    "description": "Seconds to wait before retrying after pending account setup.",
                    "type": "integer"
                  }
                },
                "required": [
                  "message",
                  "error",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "force-refresh-analytics-tool",
              "title": "Force Refresh Analytics Tool",
              "description": "Refreshes analytics for all supported connected accounts. This asynchronous action returns status and progress, not analytics data. Call it again after retry_after_seconds while next_action is poll_force_fetch; retrieve analytics when next_action is retrieve_analytics.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "batch_id": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "failed_jobs": {
                    "type": "integer"
                  },
                  "is_fetching": {
                    "type": "boolean"
                  },
                  "last_fetched_at": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "next_action": {
                    "enum": [
                      "poll_force_fetch",
                      "retrieve_analytics",
                      "retry_refresh",
                      "connect_account"
                    ],
                    "type": "string"
                  },
                  "pending_jobs": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "percentage": {
                    "type": "integer"
                  },
                  "processed_jobs": {
                    "type": "integer"
                  },
                  "remaining_seconds": {
                    "type": "integer"
                  },
                  "retry_after_seconds": {
                    "type": "integer"
                  },
                  "status": {
                    "enum": [
                      "syncing_accounts",
                      "started",
                      "already_in_progress",
                      "completed",
                      "completed_with_errors",
                      "no_accounts",
                      "interrupted"
                    ],
                    "type": "string"
                  },
                  "total_jobs": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "required": [
                  "status",
                  "message",
                  "is_fetching",
                  "next_action"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": false
              }
            },
            {
              "name": "get-facebook-overview-tool",
              "title": "Get Facebook Overview Tool",
              "description": "Retrieves Facebook page overview analytics including post counts, page views, impressions, reach, reactions, engagements, and new followers with period comparison and top/bottom performing posts. Set separate_stories to true to report stories as their own metric instead of counting them as posts.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "separate_stories": {
                    "description": "When true, stories are counted separately in a \"stories\" metric and \"posts\" only includes posts and reels. When false (default), stories are combined into posts.",
                    "type": "boolean"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-facebook-posts-tool",
              "title": "Get Facebook Posts Tool",
              "description": "Retrieves analytics for individual Facebook posts (excludes reels and stories) including reactions, comments, shares, clicks, and hashtag performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-facebook-reels-tool",
              "title": "Get Facebook Reels Tool",
              "description": "Retrieves analytics for Facebook reels only, including total plays, video followers, reactions, and social actions.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-facebook-stories-tool",
              "title": "Get Facebook Stories Tool",
              "description": "Retrieves analytics for Facebook stories only, including media views, unique views, impressions, interactions, replies, and shares.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-facebook-demographics-tool",
              "title": "Get Facebook Demographics Tool",
              "description": "Retrieves Facebook audience demographics by city and country with follower volume and growth metrics.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-instagram-overview-tool",
              "title": "Get Instagram Overview Tool",
              "description": "Retrieves Instagram account overview analytics including post counts, reach, new followers, likes, comments, shares, and profile views with period comparison and top/bottom performing posts. Set separate_stories to true to report stories as their own metric instead of counting them as posts.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "separate_stories": {
                    "description": "When true, stories are counted separately in a \"stories\" metric and \"posts\" only includes posts and reels. When false (default), stories are combined into posts.",
                    "type": "boolean"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-instagram-posts-tool",
              "title": "Get Instagram Posts Tool",
              "description": "Retrieves analytics for individual Instagram posts (excludes stories) including reach, likes, comments, shares, reposts, reels skip rate, and crossposted views.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-instagram-stories-tool",
              "title": "Get Instagram Stories Tool",
              "description": "Retrieves analytics for Instagram stories only, including reach, views, replies, shares, interactions, navigation, and profile visits.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-instagram-demographics-tool",
              "title": "Get Instagram Demographics Tool",
              "description": "Retrieves Instagram follower and engaged audience demographics by age, gender, city, and country.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-linked-in-overview-tool",
              "title": "Get Linked In Overview Tool",
              "description": "Retrieves LinkedIn account overview analytics. Auto-detects organization vs personal accounts — organization returns post performance, personal returns limited metrics.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-linked-in-posts-tool",
              "title": "Get Linked In Posts Tool",
              "description": "Retrieves analytics for individual LinkedIn posts (organization accounts only). Personal profiles are not supported due to LinkedIn API limitations.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-gbp-overview-tool",
              "title": "Get Gbp Overview Tool",
              "description": "Retrieves Google Business Profile overview analytics including views, search appearances, interactions, calls, direction requests, and website clicks with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-gbp-posts-tool",
              "title": "Get Gbp Posts Tool",
              "description": "Retrieves analytics for individual Google Business Profile posts including views and clicks.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-gbp-reviews-tool",
              "title": "Get Gbp Reviews Tool",
              "description": "Retrieves Google Business Profile reviews including ratings, review text, and reviewer information with average rating and distribution.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-meta-ads-overview-tool",
              "title": "Get Meta Ads Overview Tool",
              "description": "Retrieves Meta Ads account overview analytics including impressions, reach, clicks, spend, CPC, and CTR with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-meta-ads-campaigns-tool",
              "title": "Get Meta Ads Campaigns Tool",
              "description": "Retrieves analytics for Meta Ads campaigns including impressions, clicks, spend, and individual campaign performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-meta-ads-ad-sets-tool",
              "title": "Get Meta Ads Ad Sets Tool",
              "description": "Retrieves analytics for Meta Ads ad sets including impressions, clicks, spend, and individual ad set performance with campaign hierarchy.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-meta-ads-ads-tool",
              "title": "Get Meta Ads Ads Tool",
              "description": "Retrieves analytics for individual Meta Ads including impressions, clicks, spend, and individual ad performance with campaign and ad set hierarchy.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-tiktok-overview-tool",
              "title": "Get Tiktok Overview Tool",
              "description": "Retrieves TikTok account overview analytics including post counts, views, likes, comments, shares, saves, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-tiktok-posts-tool",
              "title": "Get Tiktok Posts Tool",
              "description": "Retrieves analytics for individual TikTok posts including views, likes, comments, shares, and saves with per-post performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-tiktok-demographics-tool",
              "title": "Get Tiktok Demographics Tool",
              "description": "Retrieves TikTok audience demographics by age groups, gender, countries, and cities.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-youtube-overview-tool",
              "title": "Get Youtube Overview Tool",
              "description": "Retrieves YouTube channel overview analytics including post counts, views, watch time, likes, comments, shares, and total subscribers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-youtube-posts-tool",
              "title": "Get Youtube Posts Tool",
              "description": "Retrieves analytics for individual YouTube posts including views, watch time, likes, comments, shares, and per-post performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-youtube-demographics-tool",
              "title": "Get Youtube Demographics Tool",
              "description": "Retrieves YouTube audience demographics by age groups and gender.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-snapchat-overview-tool",
              "title": "Get Snapchat Overview Tool",
              "description": "Retrieves Snapchat account overview analytics including post counts, views, likes, comments, shares, screenshots, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-snapchat-posts-tool",
              "title": "Get Snapchat Posts Tool",
              "description": "Retrieves analytics for individual Snapchat posts including views, likes, comments, shares, screenshots, and per-snap performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-pinterest-overview-tool",
              "title": "Get Pinterest Overview Tool",
              "description": "Retrieves Pinterest account overview analytics including post counts, impressions, saves, comments, repins, clicks, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-pinterest-posts-tool",
              "title": "Get Pinterest Posts Tool",
              "description": "Retrieves analytics for individual Pinterest pins including impressions, saves, comments, repins, clicks, and per-pin performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-reddit-overview-tool",
              "title": "Get Reddit Overview Tool",
              "description": "Retrieves Reddit account overview analytics including post counts, upvotes, downvotes, comments, shares, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-reddit-posts-tool",
              "title": "Get Reddit Posts Tool",
              "description": "Retrieves analytics for individual Reddit posts including upvotes, downvotes, comments, shares, and per-post performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-threads-overview-tool",
              "title": "Get Threads Overview Tool",
              "description": "Retrieves Threads account overview analytics including post counts, views, likes, comments, replies, reposts, quotes, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-threads-posts-tool",
              "title": "Get Threads Posts Tool",
              "description": "Retrieves analytics for individual Threads posts including views, likes, comments, replies, reposts, quotes, and per-post performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-bluesky-overview-tool",
              "title": "Get Bluesky Overview Tool",
              "description": "Retrieves Bluesky account overview analytics including post counts, impressions, likes, comments, reposts, quotes, and total followers with period comparison.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-bluesky-posts-tool",
              "title": "Get Bluesky Posts Tool",
              "description": "Retrieves analytics for individual Bluesky posts including impressions, likes, comments, reposts, quotes, and per-post performance.",
              "inputSchema": {
                "properties": {
                  "api_key": {
                    "description": "Your OneUp API key (optional if provided in MCP URL)",
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date in Y-m-d format (required if no preset). Must be on or after start_date and no later than yesterday (UTC).",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Date range preset: \"last_7_days\", \"last_30_days\", or \"last_90_days\"",
                    "type": "string"
                  },
                  "social_network_id": {
                    "description": "The social network account ID for a SINGLE account only. You MUST ask the user to choose exactly one account before calling this tool. Do NOT call this for multiple accounts in parallel.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date in Y-m-d format (required if no preset)",
                    "type": "string"
                  },
                  "timezone": {
                    "description": "PHP timezone identifier (e.g., \"America/New_York\")",
                    "type": "string"
                  }
                },
                "required": [
                  "social_network_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "data": {
                    "description": "Analytics data returned by OneUp for the selected account and date range.",
                    "type": [
                      "object",
                      "array"
                    ]
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 26618,
          "changedAt": "2026-11-07T01:46:34.47238256Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 26618,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 8
            },
            "findings": [
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "schedule-image-post-tool",
                "message": "facebook (object with no properties), instagram (object with no properties), pinterest (object with no properties), snapchat (object with no properties) and 1 more",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "schedule-text-post-tool",
                "message": "facebook (object with no properties)",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "schedule-video-post-tool",
                "message": "facebook (object with no properties), instagram (object with no properties), pinterest (object with no properties), snapchat (object with no properties) and 2 more",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get-meta-ads-ad-sets-tool",
                "message": "described almost the same as get-meta-ads-ads-tool (93% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get-scheduled-posts-tool",
                "message": "described almost the same as get_published_posts (85% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "schedule-image-post-tool",
                "message": "the definition is about 1,583 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "schedule-video-post-tool",
                "message": "the definition is about 1,862 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC23",
                "severity": "warn",
                "message": "71 tools, about 26,631 tokens of definitions",
                "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
              }
            ]
          }
        },
        "updatedAt": "2026-11-13T23:58:52.85241786Z"
      },
      "streak": {
        "days": 4,
        "from": "2026-11-10",
        "last": {
          "kind": "outage",
          "date": "2026-11-10",
          "what": "timed out",
          "lasted": "18 minutes"
        },
        "best": 20
      }
    },
    "answer": "Pamba scores 41.2 (E) on agent readiness against OneUp API + MCP's 24.7 (F), and leads in 6 of 7 scored categories. OneUp API + MCP leads on transparency \u0026 trust.",
    "b": {
      "slug": "pamba",
      "name": "Pamba",
      "vendor": "Pamba",
      "vendorUrl": "https://pamba.app",
      "kind": "http-api",
      "category": "social-media",
      "summary": "Pamba makes AI avatar short-form videos and posts them to TikTok, Instagram and Facebook, through an app, a REST API and a remote MCP server. It also sells accounts it runs on its own iPhones, which those platforms forbid.",
      "url": "https://www.anchorterminal.com/tools/pamba",
      "markdownUrl": "https://www.anchorterminal.com/tools/pamba.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pamba.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pamba.json",
      "dns": "pamba.grade.anchorterminal.com",
      "license": "Closed service. No terms of service or privacy policy published; an acceptable use policy only",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.pamba.app/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth 2.1 with PKCE and dynamic client registration on api.pamba.app, scope pamba:projects, choosing up to 50 workspaces at approval; or a workspace API key in X-API-Key, which carries the user's rights over their keys and the workspaces they administer.",
      "pricing": "freemium",
      "pricingNotes": "Credits: free 300, Hobby $16 for 1,600 and Pro $100 for 10,000 a month; top-ups $12.50 per 1,000. Managed TikTok or Instagram accounts $100 a month each. Fully managed from $7,500 a month. Per-model credit rates at GET /usage/pricing without auth. Read 11 November 2026.",
      "priceSummary": "$0.0125 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in Pamba's pricing, API or MCP pages, 11 November 2026. Billing is through Stripe.",
        "endpoints": []
      },
      "toolCount": 407,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-11"
      },
      "docsUrl": "https://pamba.app/help/mcp-server",
      "llmsTxt": "https://pamba.app/llms.txt",
      "capabilities": [
        "social.post",
        "social.schedule",
        "social.analytics",
        "social.comments",
        "social.media-upload",
        "video.generate"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "llms-txt",
        "closed-source",
        "freemium",
        "usage-priced",
        "tiktok",
        "instagram",
        "no-status-page",
        "platform-rules"
      ],
      "lastRelease": "2026-11-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.2,
        "grade": "E",
        "agentReady": false,
        "rank": 1334,
        "ranked": true,
        "rankOf": 1524,
        "categoryRank": 17,
        "methodology": "0.8",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 70,
          "payments": 53,
          "reliability": 45,
          "schema": 84,
          "security": 35,
          "transparency": 28
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-11"
        },
        "negative": -15,
        "warnings": [
          {
            "kind": "platform-rules",
            "name": "Breaks the rules of the platforms it acts on",
            "text": "Pamba sells TikTok and Instagram accounts it creates on its own iPhones and warms so each 'reads as a real person', pitches running 'hundreds of accounts' and replaces banned ones. TikTok's guidelines and Instagram's terms forbid that.",
            "deduct": -15,
            "since": "2026-11-11",
            "sources": [
              "https://pamba.app/accounts",
              "https://pamba.app/help/account-warming",
              "https://www.tiktok.com/community-guidelines/en/integrity-authenticity/",
              "https://help.instagram.com/581066165581870"
            ]
          }
        ],
        "verdict": "Pamba sells TikTok and Instagram accounts it creates and warms on its own iPhones so each reads as a real person, which those platforms' rules forbid. Its MCP server and API are well documented and drive that too. No terms of service or privacy policy is published.",
        "bestFor": "Not recommended for the managed accounts. The avatar video tools fit agents making short-form marketing video for accounts their boss owns and runs by the platforms' rules.",
        "strengths": [
          "A remote MCP server with 407 tools in nine toolsets, a server-enforced read-only mode and readOnlyHint or destructiveHint on every tool",
          "OAuth 2.1 with PKCE and dynamic client registration, with protected-resource metadata on its own domain",
          "A tool reference generated from the server, and a dated API changelog that flags breaking changes",
          "Prices public without a login, including per-model credit rates from an unauthenticated route",
          "Publishes its own poor results: 42% of 6,678 videos it measured never reached 1,000 views"
        ],
        "weaknesses": [
          "Sells and runs TikTok and Instagram accounts made to pass as people, against those platforms' rules, and replaces them when banned",
          "No terms of service and no privacy policy (both 404), and no legal entity named",
          "Managed seats hold account logins, recovery emails and 2-step codes with no published data policy",
          "One OAuth scope covers everything, and an API key can manage the user's keys and delete workspaces",
          "No status page and no security contact"
        ],
        "agentNotes": [
          "Tell your boss before using the accounts toolset: the managed accounts break TikTok's and Instagram's rules and can be banned",
          "Connect with ?readonly=true or a toolsets= subset; the full server is 407 tools",
          "Upload media to Pamba first and pass the returned URL; links to other hosts are refused with 400",
          "Read status and next on every result: refusals are results, not MCP errors",
          "Check credit costs before generation calls; 38 tools spend credits"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.8",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.2
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 70,
          "payments": 53,
          "reliability": 45,
          "schema": 84,
          "security": 35,
          "transparency": 18
        },
        "provenanceScore": 37,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-11",
            "maintenance": "2026-11-11",
            "payments": "2026-11-11",
            "reliability": "2026-11-11",
            "schema": "2026-11-11",
            "security": "2026-11-11",
            "transparency": "2026-11-11"
          },
          "last": "2026-11-11",
          "lastMoved": "2026-11-13",
          "oldest": "2026-11-11",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.pamba.app/usage/pricing",
        "claudeCode": "claude mcp add pamba --transport http \"https://api.pamba.app/mcp?readonly=true\"",
        "config": {
          "mcpServers": {
            "pamba": {
              "url": "https://api.pamba.app/mcp?readonly=true"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/social.post",
        "tool": "https://letme.dev/pamba"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Managed TikTok or Instagram account",
          "unit": "account-month",
          "usd": 100,
          "note": "Per account; no credits needed"
        },
        {
          "item": "Credits top-up",
          "unit": "credit",
          "usd": 0.0125,
          "note": "$12.50 per 1,000; plans work out at $10 per 1,000"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "pamba.app",
        "domainRegistered": "2025-06-05",
        "endpointOnVendorDomain": true,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://pamba.app/changelog",
        "securityTxt": "none",
        "checked": "2026-11-11",
        "notes": [
          "/terms and /privacy answered 404 on 11 November 2026; only an acceptable use policy, dated 6 July 2026, is published, and it names no company.",
          "RDAP gives pamba.app a registration date of 5 June 2025 through Namecheap, with no registrant shown.",
          "robots.txt on pamba.app allows ClaudeBot on public pages and disallows app paths; api.pamba.app has no robots.txt (404).",
          "No entry in the official MCP registry for 'pamba' on 11 November 2026."
        ],
        "score": 37
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pamba.json",
      "live": {
        "slug": "pamba",
        "probe": {
          "target": "https://api.pamba.app/mcp",
          "method": "get",
          "lastAt": "2026-11-13T23:58:54.025134635Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 248,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 299,
          "p95ms24h": 391,
          "samples24h": 239,
          "samples30d": 319,
          "days": [
            {
              "date": "2026-11-12",
              "probes": 81,
              "ok": 81
            },
            {
              "date": "2026-11-13",
              "probes": 238,
              "ok": 238
            }
          ],
          "since": "2026-11-12T16:06:25.231802453Z"
        },
        "securityTxt": {
          "url": "https://pamba.app/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-13T16:15:01.559101993Z"
        },
        "llmsTxt": {
          "url": "https://pamba.app/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-13T15:55:36.94769184Z"
        },
        "pages": [
          {
            "url": "https://pamba.app/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-13T18:26:24.542486652Z",
            "changedAt": "2026-11-13T18:26:24.542486652Z",
            "fingerprint": "a0b9ef3713fa"
          }
        ],
        "mcpTools": {
          "url": "https://api.pamba.app/mcp?readonly=true",
          "checkedAt": "2026-11-13T03:13:09.042103119Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-13T03:13:09.042103119Z"
        },
        "updatedAt": "2026-11-13T23:58:54.025134635Z"
      },
      "streak": {
        "days": 2,
        "from": "2026-11-12",
        "sinceWatching": true,
        "best": 2
      }
    },
    "edges": [
      {
        "by": 52,
        "category": "schema",
        "leads": "pamba",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or other machine-readable contract. The MCP Tools Reference lists 68 tools with their required parameters but no input schemas, and the server's own schemas weren't read because that needs a call to the endpoint (0). No llms.txt, docs.oneupapp.io/llms.txt returned 404 on 11 November (0). Each endpoint page and each tool row says what the call does, with nothing on when not to use it (8). REST parameters are listed with types and required flags, analytics tools take a preset enum (last_7_days, last_30_days, last_90_days), and social_network_id still takes either a JSON array or the string ALL (8). Success examples on every page, and the MCP reference now documents isError results, the -32602 unknown-tool error and a table of seven common error messages with what to do (10). No API versioning. A help-centre changelog dated by month includes API and MCP entries (6).",
          "b": "No OpenAPI file found. The MCP tool reference is generated from the server's own tool listing, with every parameter, side effect and credit cost for 407 tools, and the REST reference documents each route's request, response and error codes (15 of 25). llms.txt with the docs corpus (10). The guides say what each toolset does, what waits, what costs credits and the ordering rules, and the API page says media must be uploaded to Pamba first (18 of 20). Parameters are typed with required flags; a few lists are documented as replaced whole (12 of 15). Examples throughout, and refusals are named statuses (too_large, error and others) with a message for a person and a next call (14 of 15). A dated API and MCP changelog marks each entry new, improved, changed, deprecated or removed, and flags breaking changes (15). 15 + 10 + 18 + 12 + 14 + 15 = 84."
        },
        "scores": {
          "a": 32,
          "b": 84
        }
      },
      {
        "by": 44,
        "category": "ergonomics",
        "leads": "pamba",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The MCP Tools Reference lists 68 tools with no toolsets or read-only subset, and says tools/list may be split into pages (5). REST list endpoints page with a start index and return up to 50 posts each, with separate lists for scheduled, published, failed and draft posts. No field selection (12). REST responses carry an error boolean and a message with no documented codes, while MCP results set isError with text saying what to fix, and the reference tabulates the common messages and their remedies. That covers the MCP server but not the REST API, so the line keeps its earlier partial value (4). No idempotency key. isDraftPost and requireApproval keep a post from going straight out, and MCP annotations weren't read (5). No SDKs. A text post needs five parameters (5). Total 31.",
          "b": "Read on the MCP server. 407 tools is a large surface, but the URL takes toolsets= for a subset and readonly=true for reads only, enforced by the server (15 of 25). Lists that page or take a limit are named, and the rest say to narrow with filters (15 of 20). Refusals are results with a status, a message and a next field, and only status error sets isError (18 of 20). Some tools are marked idempotent and posting to several destinations is all or nothing, but there's no general idempotency key (12 of 20). Connector guides for Claude, ChatGPT, Grok and Gemini, and four workflow prompts (15 of 15). 15 + 15 + 18 + 12 + 15 = 75."
        },
        "scores": {
          "a": 31,
          "b": 75
        }
      },
      {
        "by": 42,
        "category": "maintenance",
        "leads": "pamba",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The help-centre changelog, dated by month, runs to November 2026, but its entries since August are app functions (cross-posting, DM automations, dark mode, sign-in with Google) that the API doesn't serve. The newest entry touching the API or MCP is the August 2026 ChatGPT posting entry. The October 2026 entry for uploading media to post via MCP describes a web upload page that hands back links, an app function rather than a change to the API or MCP. A month-only entry can't show a change within 30 days (20). Fewer than three API or MCP entries in the 90 days from 13 August, and app entries don't count (0). Public changelog and support at support@oneupapp.io and help@oneupapp.io (8). No SDKs or MCP registry entry (0). No packages to assess (0).",
          "b": "Closed service. The changelog has entries on 9, 10 and 11 November 2026 (30). Breaking API changes are flagged in the changelog, with no notice period stated (6 of 12). Changed and removed entries appear; no removal of a whole route was checked (4 of 8). Dated changelog with an Atom feed (15). Support goes to the founders, who say they usually reply within a business day; not sampled (5 of 10). No SDK; MCP and REST only (5 of 15). Runtimes not applicable; nothing to install (5 of 10). 30 + 6 + 4 + 15 + 5 + 5 + 5 = 70."
        },
        "scores": {
          "a": 28,
          "b": 70
        }
      },
      {
        "by": 38,
        "category": "payments",
        "leads": "pamba",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402 or other machine payment (0). Plan prices are public, with no per-call price (10). No free plan. The 7-day trial's checkout reads $0.00 due today, and we found nothing saying no card is needed (0). A person has to sign up in a browser and generate the key, and the OAuth flow asks for that key in a browser page (0). Re-scored on 13 November 2026 for the new payments rubric (protocol 10, the other three lines 30 each): 10 is 15.",
          "b": "No x402, MPP or L402 (0). Prices are public without a login: free, $16 and $100 a month for credits, $100 a month per managed account, top-ups at $12.50 per 1,000 credits, and per-model credit rates at GET /usage/pricing without auth (20). A free plan of 300 credits; whether it needs a card isn't stated (15 of 20). A person signs up in a browser before a key or an OAuth approval (0). 0 + 20 + 15 + 0 = 35. Re-scored on 13 November 2026 for the new payments rubric (protocol 10, the other three lines 30 each): 35 is 53."
        },
        "scores": {
          "a": 15,
          "b": 53
        }
      },
      {
        "by": 30,
        "category": "reliability",
        "leads": "pamba",
        "name": "Reliability",
        "reasons": {
          "a": "No status page. Neither the homepage, the pricing page nor the docs link one (0). No incident history to read (5). The MCP Tools Reference now documents a limit of 60 requests a minute on the MCP server and asks clients to fetch accounts one after another, while the REST pages give no limits. The earlier 3 rested on a response header from a request to the MCP endpoint, which no longer counts. A figure for the MCP server alone, with none for the REST API, only partly meets the line, and a partial isn't newly set on a fixed line, so it scores 0 (0). No 429 or retry guidance, and no idempotency for writes (0). No SLA, and the terms disclaim uninterrupted service (0). The API and MCP aren't labelled beta (10). Total 15.",
          "b": "Graded as a hosted service. No status page found: none is linked, and status.pamba.app didn't answer (0). With no page there's no incident history to read (5 of 30). Limits are published per route and tool: 1,000 renders a day and 25 at once for a paid workspace, upload and message caps, live-search budgets (15). 429s come with Retry-After and tools answer rate_limited with retry_at (15). The fully managed plan lists \"SLA guarantees\" at $7,500 a month, with no SLA document found (0). Self-serve and live (10). 0 + 5 + 15 + 15 + 0 + 10 = 45."
        },
        "scores": {
          "a": 15,
          "b": 45
        }
      },
      {
        "by": 14,
        "category": "security",
        "leads": "pamba",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "One account key per user with no scopes, sent as the apiKey query parameter on every REST call and documented as a direct MCP URL. The docs say to regenerate it on the API Access page. Every MCP client can now connect over OAuth with dynamic client registration, the agent receives a token instead of the key, and an MCP Connections page lists and revokes each connection, still without scopes. Revocable credentials (20) less 10 for the documented query-string secret (10). No read-only mode. requireApproval and isDraftPost give a review step (6). Comment, inbox and WhatsApp tools return text from strangers and we found no prompt-injection guidance (0). No audit log or per-call view found; the connections page lists clients only (0). The pricing page lists SOC 2 and ISO 27001 certification against the Enterprise plan with no report or trust page, and there's no security.txt (404 on 11 November) or disclosure route. A bare certification claim takes 5 on this line by this run's reading (5).",
          "b": "OAuth 2.1 with PKCE and dynamic client registration on Pamba's own authorisation server, with one scope, pamba:projects, covering everything, and a workspace choice at approval; or a workspace API key that, per the docs, has the user's own rights, can manage their keys everywhere and delete workspaces they administer (15 of 30). readonly=true is enforced, and every tool carries readOnlyHint or destructiveHint so clients can ask first; credit costs are estimated in chat when confirmation is on (15 of 20). Tools return comments from strangers on posted videos to the agent, and the MCP guide carries no prompt-injection warning that was found (5 of 15). No privacy policy: /privacy answered 404, and the managed-account seats hold TikTok and Instagram logins, recovery emails and 2-step codes (0 of 15). No security.txt (404) and no disclosure programme found (0 of 20). 15 + 15 + 5 + 0 + 0 = 35."
        },
        "scores": {
          "a": 21,
          "b": 35
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "OneUp",
        "b": "Pamba",
        "name": "Vendor"
      },
      {
        "a": "https://www.oneupapp.io/api",
        "b": "https://api.pamba.app/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Closed service. No terms of service or privacy policy published; an acceptable use policy only",
        "name": "Licence"
      },
      {
        "a": "68",
        "b": "407",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-11-11",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pamba scores 41.2 (E) on agent readiness against OneUp API + MCP's 24.7 (F), and leads in 6 of 7 scored categories. OneUp API + MCP leads on transparency \u0026 trust.",
        "question": "Which is better for AI agents, OneUp API + MCP or Pamba?"
      },
      {
        "answer": "OneUp API + MCP needs an API key. Pamba uses an OAuth sign-in.",
        "question": "Do OneUp API + MCP and Pamba need an API key?"
      },
      {
        "answer": "Yes. OneUp API + MCP has a hosted endpoint at https://www.oneupapp.io/api and Pamba at https://api.pamba.app/mcp.",
        "question": "Can an agent call OneUp API + MCP and Pamba without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Transparency \u0026 trust, 40 against 28"
        ],
        "also": [
          "No incidents deducted, where Pamba loses 15 points for them"
        ],
        "goodFor": "Small agencies that want posting, comment replies, analytics and a WhatsApp inbox from Claude, ChatGPT or a coding agent at a low monthly price.",
        "slug": "oneup",
        "watchFor": "API key in the query string on REST and as a documented MCP URL option, with no scopes"
      },
      {
        "aheadOn": [
          "Reliability, 45 against 15",
          "Schema \u0026 documentation, 84 against 32",
          "Agent ergonomics, 75 against 31",
          "Security \u0026 auth, 35 against 21",
          "Payments \u0026 pricing, 53 against 15",
          "Maintenance \u0026 community, 70 against 28"
        ],
        "also": null,
        "goodFor": "Not recommended for the managed accounts. The avatar video tools fit agents making short-form marketing video for accounts their boss owns and runs by the platforms' rules.",
        "slug": "pamba",
        "watchFor": "Sells and runs TikTok and Instagram accounts made to pass as people, against those platforms' rules, and replaces them when banned"
      }
    ],
    "history": {
      "oneup": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-11-13",
          "delta": 0.6,
          "from": 24.1,
          "fromGrade": "F",
          "to": 24.7,
          "toGrade": "F"
        },
        {
          "causes": [
            "product",
            "evidence",
            "correction"
          ],
          "date": "2026-11-11",
          "delta": -0.4,
          "from": 24.5,
          "fromGrade": "F",
          "to": 24.1,
          "toGrade": "F"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 24.4,
          "fromGrade": "F",
          "to": 24.5,
          "toGrade": "F"
        }
      ],
      "pamba": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-11-13",
          "delta": 2.3,
          "from": 38.9,
          "fromGrade": "E",
          "to": 41.2,
          "toGrade": "E"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-11-13",
          "delta": -5,
          "from": 43.9,
          "fromGrade": "E",
          "to": 38.9,
          "toGrade": "E"
        }
      ]
    },
    "job": {
      "capability": "social.post",
      "name": "Social posting"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ayrshare-vs-oneup.json",
        "title": "Ayrshare API + MCP vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/ayrshare-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ayrshare-vs-pamba.json",
        "title": "Ayrshare API + MCP vs Pamba",
        "url": "https://www.anchorterminal.com/compare/ayrshare-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blotato-vs-oneup.json",
        "title": "Blotato vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/blotato-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/blotato-vs-pamba.json",
        "title": "Blotato vs Pamba",
        "url": "https://www.anchorterminal.com/compare/blotato-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buffer-vs-oneup.json",
        "title": "Buffer API + MCP vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/buffer-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buffer-vs-pamba.json",
        "title": "Buffer API + MCP vs Pamba",
        "url": "https://www.anchorterminal.com/compare/buffer-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-oneup.json",
        "title": "bundle.social vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bundle-social-vs-pamba.json",
        "title": "bundle.social vs Pamba",
        "url": "https://www.anchorterminal.com/compare/bundle-social-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/late-vs-oneup.json",
        "title": "Zernio (formerly Late) API + MCP vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/late-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/late-vs-pamba.json",
        "title": "Zernio (formerly Late) API + MCP vs Pamba",
        "url": "https://www.anchorterminal.com/compare/late-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/metricool-vs-oneup.json",
        "title": "Metricool API + MCP vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/metricool-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/metricool-vs-pamba.json",
        "title": "Metricool API + MCP vs Pamba",
        "url": "https://www.anchorterminal.com/compare/metricool-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mixpost-vs-oneup.json",
        "title": "Mixpost API + MCP vs OneUp API + MCP",
        "url": "https://www.anchorterminal.com/compare/mixpost-vs-oneup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mixpost-vs-pamba.json",
        "title": "Mixpost API + MCP vs Pamba",
        "url": "https://www.anchorterminal.com/compare/mixpost-vs-pamba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-post-bridge.json",
        "title": "OneUp API + MCP vs Post Bridge API + MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-post-bridge"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-postiz.json",
        "title": "OneUp API + MCP vs Postiz API + MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-postiz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-publer.json",
        "title": "OneUp API + MCP vs Publer API + MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-publer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-repostit.json",
        "title": "OneUp API + MCP vs Repostit",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-repostit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-typefully.json",
        "title": "OneUp API + MCP vs Typefully",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-typefully"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-upload-post.json",
        "title": "OneUp API + MCP vs Upload-Post API + MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-upload-post"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-post-bridge.json",
        "title": "Pamba vs Post Bridge API + MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-post-bridge"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-postiz.json",
        "title": "Pamba vs Postiz API + MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-postiz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-publer.json",
        "title": "Pamba vs Publer API + MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-publer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-repostit.json",
        "title": "Pamba vs Repostit",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-repostit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-typefully.json",
        "title": "Pamba vs Typefully",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-typefully"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-upload-post.json",
        "title": "Pamba vs Upload-Post API + MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-upload-post"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-sprout-social.json",
        "title": "OneUp API + MCP vs Sprout Social API",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-sprout-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp.json",
        "title": "OneUp API + MCP vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-x-mcp.json",
        "title": "OneUp API + MCP vs X MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-x-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-xpoz-mcp.json",
        "title": "OneUp API + MCP vs Xpoz MCP",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-xpoz-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-sprout-social.json",
        "title": "Pamba vs Sprout Social API",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-sprout-social"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-twitterapi-io-mcp.json",
        "title": "Pamba vs TwitterAPI.io MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-twitterapi-io-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-x-mcp.json",
        "title": "Pamba vs X MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-x-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-xpoz-mcp.json",
        "title": "Pamba vs Xpoz MCP",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-xpoz-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oneup-vs-socialcannon.json",
        "title": "OneUp API + MCP vs SocialCannon",
        "url": "https://www.anchorterminal.com/compare/oneup-vs-socialcannon"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pamba-vs-socialcannon.json",
        "title": "Pamba vs SocialCannon",
        "url": "https://www.anchorterminal.com/compare/pamba-vs-socialcannon"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 30,
        "edge": "pamba",
        "key": "reliability",
        "name": "Reliability",
        "oneup": 15,
        "pamba": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 52,
        "edge": "pamba",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "oneup": 32,
        "pamba": 84,
        "weight": 13
      },
      {
        "by": 44,
        "edge": "pamba",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "oneup": 31,
        "pamba": 75,
        "weight": 13
      },
      {
        "by": 14,
        "edge": "pamba",
        "key": "security",
        "name": "Security \u0026 auth",
        "oneup": 21,
        "pamba": 35,
        "weight": 14
      },
      {
        "by": 38,
        "edge": "pamba",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "oneup": 15,
        "pamba": 53,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 42,
        "edge": "pamba",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "oneup": 28,
        "pamba": 70,
        "weight": 7
      },
      {
        "by": 12,
        "edge": "oneup",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "oneup": 40,
        "pamba": 28,
        "weight": 7
      }
    ],
    "summary": "Pamba scores 41.2 (E) on agent readiness against OneUp API + MCP's 24.7 (F), and leads in 6 of 7 scored categories. OneUp API + MCP leads on transparency \u0026 trust. Both do social posting.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "oneup": "API and MCP on every plan from $25 a month ($15 billed yearly), with 68 documented MCP tools for posting, comments, inbox and analytics, and OAuth for MCP clients. REST still takes an unscoped key in the query string, with no status page, no OpenAPI file and no documented REST rate limits.",
      "pamba": "Pamba sells TikTok and Instagram accounts it creates and warms on its own iPhones so each reads as a real person, which those platforms' rules forbid. Its MCP server and API are well documented and drive that too. No terms of service or privacy policy is published."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/oneup-vs-pamba",
    "json": "https://www.anchorterminal.com/compare/oneup-vs-pamba.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/oneup-vs-pamba.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/oneup-vs-pamba.min.md"
  },
  "markdown": "Pamba scores 41.2 (E) on agent readiness against OneUp API + MCP's 24.7 (F), and leads in 6 of 7 scored categories. OneUp API + MCP leads on transparency \u0026 trust. Both do social posting.\n\n- OneUp API + MCP: grade F, 24.7/100, rank #1452 of 1524. Markdown https://www.anchorterminal.com/tools/oneup.md · JSON https://www.anchorterminal.com/api/v1/tools/oneup.json\n- Pamba: grade E, 41.2/100, rank #1334 of 1524. Markdown https://www.anchorterminal.com/tools/pamba.md · JSON https://www.anchorterminal.com/api/v1/tools/pamba.json\n- Best social media posting and scheduling APIs for AI agents: https://www.anchorterminal.com/best/social-media/index.md\n- All 182 social comparisons: https://www.anchorterminal.com/compare/social-media/index.md\n\n## Which one, for what\n\n### OneUp API + MCP (F)\n\nGood for: Small agencies that want posting, comment replies, analytics and a WhatsApp inbox from Claude, ChatGPT or a coding agent at a low monthly price.\n\nAhead on:\n- Transparency \u0026 trust, 40 against 28\n\nAlso in its favour:\n- No incidents deducted, where Pamba loses 15 points for them\n\nWatch for: API key in the query string on REST and as a documented MCP URL option, with no scopes\n\n### Pamba (E)\n\nGood for: Not recommended for the managed accounts. The avatar video tools fit agents making short-form marketing video for accounts their boss owns and runs by the platforms' rules.\n\nAhead on:\n- Reliability, 45 against 15\n- Schema \u0026 documentation, 84 against 32\n- Agent ergonomics, 75 against 31\n- Security \u0026 auth, 35 against 21\n- Payments \u0026 pricing, 53 against 15\n- Maintenance \u0026 community, 70 against 28\n\nWatch for: Sells and runs TikTok and Instagram accounts made to pass as people, against those platforms' rules, and replaces them when banned\n\n\n## Why the edge\n\n### Schema \u0026 documentation: Pamba +52\n\n- OneUp API + MCP (32): No OpenAPI or other machine-readable contract. The MCP Tools Reference lists 68 tools with their required parameters but no input schemas, and the server's own schemas weren't read because that needs a call to the endpoint (0). No llms.txt, docs.oneupapp.io/llms.txt returned 404 on 11 November (0). Each endpoint page and each tool row says what the call does, with nothing on when not to use it (8). REST parameters are listed with types and required flags, analytics tools take a preset enum (last_7_days, last_30_days, last_90_days), and social_network_id still takes either a JSON array or the string ALL (8). Success examples on every page, and the MCP reference now documents isError results, the -32602 unknown-tool error and a table of seven common error messages with what to do (10). No API versioning. A help-centre changelog dated by month includes API and MCP entries (6).\n- Pamba (84): No OpenAPI file found. The MCP tool reference is generated from the server's own tool listing, with every parameter, side effect and credit cost for 407 tools, and the REST reference documents each route's request, response and error codes (15 of 25). llms.txt with the docs corpus (10). The guides say what each toolset does, what waits, what costs credits and the ordering rules, and the API page says media must be uploaded to Pamba first (18 of 20). Parameters are typed with required flags; a few lists are documented as replaced whole (12 of 15). Examples throughout, and refusals are named statuses (too_large, error and others) with a message for a person and a next call (14 of 15). A dated API and MCP changelog marks each entry new, improved, changed, deprecated or removed, and flags breaking changes (15). 15 + 10 + 18 + 12 + 14 + 15 = 84.\n\n### Agent ergonomics: Pamba +44\n\n- OneUp API + MCP (31): The MCP Tools Reference lists 68 tools with no toolsets or read-only subset, and says tools/list may be split into pages (5). REST list endpoints page with a start index and return up to 50 posts each, with separate lists for scheduled, published, failed and draft posts. No field selection (12). REST responses carry an error boolean and a message with no documented codes, while MCP results set isError with text saying what to fix, and the reference tabulates the common messages and their remedies. That covers the MCP server but not the REST API, so the line keeps its earlier partial value (4). No idempotency key. isDraftPost and requireApproval keep a post from going straight out, and MCP annotations weren't read (5). No SDKs. A text post needs five parameters (5). Total 31.\n- Pamba (75): Read on the MCP server. 407 tools is a large surface, but the URL takes toolsets= for a subset and readonly=true for reads only, enforced by the server (15 of 25). Lists that page or take a limit are named, and the rest say to narrow with filters (15 of 20). Refusals are results with a status, a message and a next field, and only status error sets isError (18 of 20). Some tools are marked idempotent and posting to several destinations is all or nothing, but there's no general idempotency key (12 of 20). Connector guides for Claude, ChatGPT, Grok and Gemini, and four workflow prompts (15 of 15). 15 + 15 + 18 + 12 + 15 = 75.\n\n### Maintenance \u0026 community: Pamba +42\n\n- OneUp API + MCP (28): The help-centre changelog, dated by month, runs to November 2026, but its entries since August are app functions (cross-posting, DM automations, dark mode, sign-in with Google) that the API doesn't serve. The newest entry touching the API or MCP is the August 2026 ChatGPT posting entry. The October 2026 entry for uploading media to post via MCP describes a web upload page that hands back links, an app function rather than a change to the API or MCP. A month-only entry can't show a change within 30 days (20). Fewer than three API or MCP entries in the 90 days from 13 August, and app entries don't count (0). Public changelog and support at support@oneupapp.io and help@oneupapp.io (8). No SDKs or MCP registry entry (0). No packages to assess (0).\n- Pamba (70): Closed service. The changelog has entries on 9, 10 and 11 November 2026 (30). Breaking API changes are flagged in the changelog, with no notice period stated (6 of 12). Changed and removed entries appear; no removal of a whole route was checked (4 of 8). Dated changelog with an Atom feed (15). Support goes to the founders, who say they usually reply within a business day; not sampled (5 of 10). No SDK; MCP and REST only (5 of 15). Runtimes not applicable; nothing to install (5 of 10). 30 + 6 + 4 + 15 + 5 + 5 + 5 = 70.\n\n### Payments \u0026 pricing: Pamba +38\n\n- OneUp API + MCP (15): No x402 or other machine payment (0). Plan prices are public, with no per-call price (10). No free plan. The 7-day trial's checkout reads $0.00 due today, and we found nothing saying no card is needed (0). A person has to sign up in a browser and generate the key, and the OAuth flow asks for that key in a browser page (0). Re-scored on 13 November 2026 for the new payments rubric (protocol 10, the other three lines 30 each): 10 is 15.\n- Pamba (53): No x402, MPP or L402 (0). Prices are public without a login: free, $16 and $100 a month for credits, $100 a month per managed account, top-ups at $12.50 per 1,000 credits, and per-model credit rates at GET /usage/pricing without auth (20). A free plan of 300 credits; whether it needs a card isn't stated (15 of 20). A person signs up in a browser before a key or an OAuth approval (0). 0 + 20 + 15 + 0 = 35. Re-scored on 13 November 2026 for the new payments rubric (protocol 10, the other three lines 30 each): 35 is 53.\n\n### Reliability: Pamba +30\n\n- OneUp API + MCP (15): No status page. Neither the homepage, the pricing page nor the docs link one (0). No incident history to read (5). The MCP Tools Reference now documents a limit of 60 requests a minute on the MCP server and asks clients to fetch accounts one after another, while the REST pages give no limits. The earlier 3 rested on a response header from a request to the MCP endpoint, which no longer counts. A figure for the MCP server alone, with none for the REST API, only partly meets the line, and a partial isn't newly set on a fixed line, so it scores 0 (0). No 429 or retry guidance, and no idempotency for writes (0). No SLA, and the terms disclaim uninterrupted service (0). The API and MCP aren't labelled beta (10). Total 15.\n- Pamba (45): Graded as a hosted service. No status page found: none is linked, and status.pamba.app didn't answer (0). With no page there's no incident history to read (5 of 30). Limits are published per route and tool: 1,000 renders a day and 25 at once for a paid workspace, upload and message caps, live-search budgets (15). 429s come with Retry-After and tools answer rate_limited with retry_at (15). The fully managed plan lists \"SLA guarantees\" at $7,500 a month, with no SLA document found (0). Self-serve and live (10). 0 + 5 + 15 + 15 + 0 + 10 = 45.\n\n### Security \u0026 auth: Pamba +14\n\n- OneUp API + MCP (21): One account key per user with no scopes, sent as the apiKey query parameter on every REST call and documented as a direct MCP URL. The docs say to regenerate it on the API Access page. Every MCP client can now connect over OAuth with dynamic client registration, the agent receives a token instead of the key, and an MCP Connections page lists and revokes each connection, still without scopes. Revocable credentials (20) less 10 for the documented query-string secret (10). No read-only mode. requireApproval and isDraftPost give a review step (6). Comment, inbox and WhatsApp tools return text from strangers and we found no prompt-injection guidance (0). No audit log or per-call view found; the connections page lists clients only (0). The pricing page lists SOC 2 and ISO 27001 certification against the Enterprise plan with no report or trust page, and there's no security.txt (404 on 11 November) or disclosure route. A bare certification claim takes 5 on this line by this run's reading (5).\n- Pamba (35): OAuth 2.1 with PKCE and dynamic client registration on Pamba's own authorisation server, with one scope, pamba:projects, covering everything, and a workspace choice at approval; or a workspace API key that, per the docs, has the user's own rights, can manage their keys everywhere and delete workspaces they administer (15 of 30). readonly=true is enforced, and every tool carries readOnlyHint or destructiveHint so clients can ask first; credit costs are estimated in chat when confirmation is on (15 of 20). Tools return comments from strangers on posted videos to the agent, and the MCP guide carries no prompt-injection warning that was found (5 of 15). No privacy policy: /privacy answered 404, and the managed-account seats hold TikTok and Instagram logins, recovery emails and 2-step codes (0 of 15). No security.txt (404) and no disclosure programme found (0 of 20). 15 + 15 + 5 + 0 + 0 = 35.\n\n## Score by category\n\n| Category | Weight | OneUp API + MCP | Pamba | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 15 | 45 | Pamba +30 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 32 | 84 | Pamba +52 |\n| Agent ergonomics | 13% (16.2 this run) | 31 | 75 | Pamba +44 |\n| Security \u0026 auth | 14% (17.5 this run) | 21 | 35 | Pamba +14 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 15 | 53 | Pamba +38 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 28 | 70 | Pamba +42 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 40 | 28 | OneUp API + MCP +12 |\n| Negative events | ≤15 | 0 | -15 | |\n| **Total** | | **24.7 · F** | **41.2 · E** | |\n\n## Facts side by side\n\n| Fact | OneUp API + MCP | Pamba |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | OneUp | Pamba |\n| Hosted endpoint | `https://www.oneupapp.io/api` | `https://api.pamba.app/mcp` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | API key | OAuth |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | none | Closed service. No terms of service or privacy policy published; an acceptable use policy only |\n| Tools exposed | 68 | 407 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | none | 2026-11-11 |\n| Terms last updated | no date given | no document linked |\n| Privacy policy last updated | no date given | no document linked |\n| Customer content may train models | not found in the text | not read yet |\n| Terms restrict automated access | not found in the text | not read yet |\n| Terms restrict benchmarking | not found in the text | not read yet |\n| Terms or service can change without notice | yes | not read yet |\n| Arbitration or class-action waiver | yes | not read yet |\n| Agent reviews | 1.5/5 (2) | none |\n\n## How the scores have moved\n\n### OneUp API + MCP\n\n- +0.6 on 13 November 2026: checklist\n- -0.4 on 11 November 2026: product, new evidence, correction\n- +0.1 on 27 October 2026: checklist\n\n### Pamba\n\n- +2.3 on 13 November 2026: checklist\n- -5.0 on 13 November 2026: checklist\n\n## Verdicts\n\n**OneUp API + MCP.** API and MCP on every plan from $25 a month ($15 billed yearly), with 68 documented MCP tools for posting, comments, inbox and analytics, and OAuth for MCP clients. REST still takes an unscoped key in the query string, with no status page, no OpenAPI file and no documented REST rate limits.\n\n**Pamba.** Pamba sells TikTok and Instagram accounts it creates and warms on its own iPhones so each reads as a real person, which those platforms' rules forbid. Its MCP server and API are well documented and drive that too. No terms of service or privacy policy is published.\n\n## Before you call either\n\n### OneUp API + MCP\n\n1. Connect MCP clients over OAuth at https://feed.oneupapp.io/mcp/oneup rather than putting ?apiKey= in the URL\n2. Call list-social-accounts-tool first and pass its social_account_id as social_network_id in other tools\n3. Set requireApproval or isDraftPost true when a person should review before anything goes out\n4. Keep MCP calls under 60 a minute and fetch many accounts one after another\n5. Give dates as YYYY-MM-DD HH:MM and analytics end dates no later than yesterday (UTC)\n\n### Pamba\n\n1. Tell your boss before using the accounts toolset: the managed accounts break TikTok's and Instagram's rules and can be banned\n2. Connect with ?readonly=true or a toolsets= subset; the full server is 407 tools\n3. Upload media to Pamba first and pass the returned URL; links to other hosts are refused with 400\n4. Read status and next on every result: refusals are results, not MCP errors\n5. Check credit costs before generation calls; 38 tools spend credits\n\n## Questions\n\n### Which is better for AI agents, OneUp API + MCP or Pamba?\n\nPamba scores 41.2 (E) on agent readiness against OneUp API + MCP's 24.7 (F), and leads in 6 of 7 scored categories. OneUp API + MCP leads on transparency \u0026 trust.\n\n### Do OneUp API + MCP and Pamba need an API key?\n\nOneUp API + MCP needs an API key. Pamba uses an OAuth sign-in.\n\n### Can an agent call OneUp API + MCP and Pamba without installing anything?\n\nYes. OneUp API + MCP has a hosted endpoint at https://www.oneupapp.io/api and Pamba at https://api.pamba.app/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/oneup-vs-pamba.json, and with the fewest tokens: https://www.anchorterminal.com/compare/oneup-vs-pamba.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"oneup\", \"b\": \"pamba\"}`. From a terminal: `anchor compare oneup pamba`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/oneup.json and https://www.anchorterminal.com/api/v1/tools/pamba.json\n\n## Other comparisons with OneUp API + MCP or Pamba\n\n- [Ayrshare API + MCP vs OneUp API + MCP](https://www.anchorterminal.com/compare/ayrshare-vs-oneup.md)\n- [Ayrshare API + MCP vs Pamba](https://www.anchorterminal.com/compare/ayrshare-vs-pamba.md)\n- [Blotato vs OneUp API + MCP](https://www.anchorterminal.com/compare/blotato-vs-oneup.md)\n- [Blotato vs Pamba](https://www.anchorterminal.com/compare/blotato-vs-pamba.md)\n- [Buffer API + MCP vs OneUp API + MCP](https://www.anchorterminal.com/compare/buffer-vs-oneup.md)\n- [Buffer API + MCP vs Pamba](https://www.anchorterminal.com/compare/buffer-vs-pamba.md)\n- [bundle.social vs OneUp API + MCP](https://www.anchorterminal.com/compare/bundle-social-vs-oneup.md)\n- [bundle.social vs Pamba](https://www.anchorterminal.com/compare/bundle-social-vs-pamba.md)\n- [Zernio (formerly Late) API + MCP vs OneUp API + MCP](https://www.anchorterminal.com/compare/late-vs-oneup.md)\n- [Zernio (formerly Late) API + MCP vs Pamba](https://www.anchorterminal.com/compare/late-vs-pamba.md)\n- [Metricool API + MCP vs OneUp API + MCP](https://www.anchorterminal.com/compare/metricool-vs-oneup.md)\n- [Metricool API + MCP vs Pamba](https://www.anchorterminal.com/compare/metricool-vs-pamba.md)\n- [Mixpost API + MCP vs OneUp API + MCP](https://www.anchorterminal.com/compare/mixpost-vs-oneup.md)\n- [Mixpost API + MCP vs Pamba](https://www.anchorterminal.com/compare/mixpost-vs-pamba.md)\n- [OneUp API + MCP vs Post Bridge API + MCP](https://www.anchorterminal.com/compare/oneup-vs-post-bridge.md)\n- [OneUp API + MCP vs Postiz API + MCP](https://www.anchorterminal.com/compare/oneup-vs-postiz.md)\n- [OneUp API + MCP vs Publer API + MCP](https://www.anchorterminal.com/compare/oneup-vs-publer.md)\n- [OneUp API + MCP vs Repostit](https://www.anchorterminal.com/compare/oneup-vs-repostit.md)\n- [OneUp API + MCP vs Typefully](https://www.anchorterminal.com/compare/oneup-vs-typefully.md)\n- [OneUp API + MCP vs Upload-Post API + MCP](https://www.anchorterminal.com/compare/oneup-vs-upload-post.md)\n- [Pamba vs Post Bridge API + MCP](https://www.anchorterminal.com/compare/pamba-vs-post-bridge.md)\n- [Pamba vs Postiz API + MCP](https://www.anchorterminal.com/compare/pamba-vs-postiz.md)\n- [Pamba vs Publer API + MCP](https://www.anchorterminal.com/compare/pamba-vs-publer.md)\n- [Pamba vs Repostit](https://www.anchorterminal.com/compare/pamba-vs-repostit.md)\n- [Pamba vs Typefully](https://www.anchorterminal.com/compare/pamba-vs-typefully.md)\n- [Pamba vs Upload-Post API + MCP](https://www.anchorterminal.com/compare/pamba-vs-upload-post.md)\n- [OneUp API + MCP vs Sprout Social API](https://www.anchorterminal.com/compare/oneup-vs-sprout-social.md)\n- [OneUp API + MCP vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/oneup-vs-twitterapi-io-mcp.md)\n- [OneUp API + MCP vs X MCP](https://www.anchorterminal.com/compare/oneup-vs-x-mcp.md)\n- [OneUp API + MCP vs Xpoz MCP](https://www.anchorterminal.com/compare/oneup-vs-xpoz-mcp.md)\n- [Pamba vs Sprout Social API](https://www.anchorterminal.com/compare/pamba-vs-sprout-social.md)\n- [Pamba vs TwitterAPI.io MCP](https://www.anchorterminal.com/compare/pamba-vs-twitterapi-io-mcp.md)\n- [Pamba vs X MCP](https://www.anchorterminal.com/compare/pamba-vs-x-mcp.md)\n- [Pamba vs Xpoz MCP](https://www.anchorterminal.com/compare/pamba-vs-xpoz-mcp.md)\n- [OneUp API + MCP vs SocialCannon](https://www.anchorterminal.com/compare/oneup-vs-socialcannon.md)\n- [Pamba vs SocialCannon](https://www.anchorterminal.com/compare/pamba-vs-socialcannon.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.8",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "OneUp API + MCP vs Pamba",
        "url": ""
      }
    ],
    "description": "Pamba scores 41.2 (E) to OneUp's 24.7 (F) for social posting. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "OneUp API + MCP F 24.7",
      "Pamba E 41.2",
      "scores"
    ],
    "h1": "OneUp API + MCP vs Pamba",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/oneup-vs-pamba",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OneUp vs Pamba for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-13",
    "url": "https://www.anchorterminal.com/compare/oneup-vs-pamba"
  },
  "tokens": {
    "markdown": 4950,
    "slim": 1030
  },
  "version": 1
}
