{
  "name": "Favorited Agency Dashboard",
  "description": "The Favorited Agency Dashboard for AI agents: roster, live streams, campaigns, payouts and members of a creator agency, acting as a signed-in member within their role. Reached over MCP (Streamable HTTP) — there is no A2A JSON-RPC binding; use the interface below with an MCP client.",
  "url": "https://mcp.agency.preprod.favorited.app/mcp",
  "version": "1.0.0",
  "protocolVersion": "0.3.0",
  "provider": {
    "organization": "Favorited",
    "url": "https://fav.com"
  },
  "documentationUrl": "https://mcp.agency.preprod.favorited.app/docs",
  "iconUrl": "https://id.fav.com/images/favorited-icon-logo.svg",
  "preferredTransport": "MCP",
  "supportedInterfaces": [
    {
      "url": "https://mcp.agency.preprod.favorited.app/mcp",
      "protocolBinding": "MCP",
      "protocolVersion": "2026-07-28",
      "transport": "streamable-http"
    }
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "description": "OAuth 2.1 at https://id.fav.com (PKCE S256, resource indicators; see https://mcp.agency.preprod.favorited.app/auth.md)",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://id.fav.com/oauth2/auth",
          "tokenUrl": "https://id.fav.com/oauth2/token",
          "refreshUrl": "https://id.fav.com/oauth2/token",
          "scopes": {
            "agency:mcp:read": "Read the agency as the signed-in member",
            "agency:mcp:write": "Make changes the member may make"
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agency:mcp:read"
      ]
    }
  ],
  "skills": [
    {
      "id": "whoami",
      "name": "Who am I",
      "description": "Report who this connection acts as: the member, the agency, the role, the effective permission ids, the token scopes and the features turned on. Call first when unsure what you may do.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "ping",
      "name": "Ping",
      "description": "Connectivity and authentication check: answers pong with the server version and the acting agency id.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "agency.overview",
      "name": "Agency overview",
      "description": "The Overview page in one call: today's highlights (revenue, active creators, streams, gifters, with the change vs the previous period) and the last-30-day series for one metric. Money carries units (usd or coins); usd is absent when the member may not see it.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "creators.list",
      "name": "List creators",
      "description": "The Creators page: the roster with revenue month-to-date, managers and join date. tab picks the view; filter matches name or handle; sort/dir order the page. Returns the page and a cursor.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "creators.get",
      "name": "Creator profile",
      "description": "One creator as the dashboard shows them: profile, roster context (on roster, since, managers), the stats for a window (7d, 30d, 90d) and the 24-month earning history.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "campaigns.list",
      "name": "List campaigns",
      "description": "Incentive campaigns the agency can see: status, dates, targets, whether the rules are accepted and (when the feature is on) live progress marked estimated.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "campaigns.get",
      "name": "Campaign detail",
      "description": "One campaign with its cohort: the creators it covers, their progress, and the projected award — always estimated until the grant pass. A campaign whose rules are not accepted returns rules_not_accepted: an owner must accept in the dashboard; agents never accept rules.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "payouts.summary",
      "name": "Payouts summary",
      "description": "The Payouts page in one call: the bank connection state, pending payouts and upcoming scheduled payouts with their statuses. Requires the financial permissions; otherwise insufficient_permission.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "invites.pending",
      "name": "Pending invites",
      "description": "Creator applications in process: who applied through the invite code, their stage (verified, streamed, decided) and what is waiting on the agency.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "agency.search",
      "name": "Search actions",
      "description": "Search the catalog of everything the dashboard can do (≈55 read, write and destructive actions). Lists only what the acting member may run. Use before agency.run (reads) or agency.execute (writes).",
      "tags": [
        "read"
      ]
    },
    {
      "id": "agency.describe",
      "name": "Describe an action",
      "description": "One catalog action in full: parameter schema, REST equivalent, examples, class, required permission and how to run it.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "agency.run",
      "name": "Run a read action",
      "description": "Run any read action from agency.search by address. Needs only the Read scope; a write or destructive action is refused here — use agency.execute.",
      "tags": [
        "read"
      ]
    },
    {
      "id": "agency.execute",
      "name": "Execute an action",
      "description": "Run a catalog action by address with its parameters. Writes and destructive actions need the Write scope, the member's permission, writes enabled for the account, and confirm: true — without it the tool asks first; never guess confirm: true for the user. Destructive actions run exactly once. Reads belong to agency.run.",
      "tags": [
        "write"
      ]
    },
    {
      "id": "agency.get",
      "name": "Read a documented route",
      "description": "Fetch a documented GET route of the dashboard API by path, for reads no other tool covers; a few routes are withheld by design. Query parameters go in query.",
      "tags": [
        "read"
      ]
    }
  ]
}