{
  "$schema": "https://a2a-protocol.org/schemas/agent-card/0.2.json",
  "protocolVersion": "0.2",
  "name": "BibiGPT",
  "description": "AI 音视频知行助理 — Paste any video/audio URL (YouTube, Bilibili, podcasts, TikTok, X, Coursera, …) or upload a local file to get AI-powered summaries, transcripts, mind maps, chapter breakdowns, and visual content analysis. 30 + platforms supported, 5 languages, served by 1M+ users since 2023.",
  "version": "1.0.0",
  "url": "https://bibigpt.co/api/mcp",
  "homepage": "https://bibigpt.co",
  "documentationUrl": "https://docs.bibigpt.co",
  "iconUrl": "https://bibigpt.co/icons/icon_512x512.png",
  "preferredTransport": "streamable-http",
  "additionalInterfaces": [
    {
      "transport": "streamable-http",
      "url": "https://bibigpt.co/api/mcp",
      "protocol": "mcp",
      "description": "Hosted MCP endpoint with OAuth2 + Bearer token auth"
    },
    {
      "transport": "https",
      "url": "https://bibigpt.co/api/openapi.json",
      "protocol": "openapi",
      "description": "tRPC-derived OpenAPI 3 spec for direct REST integration"
    },
    {
      "transport": "https",
      "url": "https://bibigpt.co/api/ask",
      "protocol": "nlweb",
      "description": "Natural-language Q&A endpoint (NLWeb spec) with optional SSE streaming"
    }
  ],
  "provider": {
    "name": "JimmyLv (吕立青)",
    "url": "https://bibigpt.co",
    "contact": {
      "email": "support@bibigpt.co",
      "twitter": "https://x.com/Jimmy_JingLv",
      "github": "https://github.com/JimmyLv"
    }
  },
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": true
  },
  "defaultInputModes": ["text", "url"],
  "defaultOutputModes": ["text", "markdown", "json"],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://bibigpt.co/api/auth/authorize",
          "tokenUrl": "https://bibigpt.co/api/auth/token",
          "scopes": {
            "read": "Read user library, summaries, and content"
          }
        }
      }
    },
    "bearerToken": {
      "type": "http",
      "scheme": "bearer",
      "description": "Long-lived API token from https://bibigpt.co/dashboard/api"
    }
  },
  "security": [{ "oauth2": ["read"] }, { "bearerToken": [] }],
  "skills": [
    {
      "id": "summarize_video",
      "name": "Summarize Video / Audio",
      "description": "Generate a structured summary with timestamps, key points and chapters from any supported video or audio URL.",
      "inputModes": ["url"],
      "outputModes": ["markdown", "json"],
      "tags": ["summarization", "video", "audio", "podcast"],
      "examples": [
        { "input": "https://www.bilibili.com/video/BV1xx411c7mD", "output": "Markdown summary with timestamps" },
        { "input": "https://youtu.be/dQw4w9WgXcQ", "output": "Bullet-point key takeaways" }
      ]
    },
    {
      "id": "summarize_video_with_config",
      "name": "Summarize with Custom Config",
      "description": "Same as summarize_video but lets the agent specify prompt template, output language, model, length and persona.",
      "inputModes": ["url", "text"],
      "outputModes": ["markdown", "json"]
    },
    {
      "id": "summarize_by_chapter",
      "name": "Summarize by Chapter",
      "description": "Long-video chapter-by-chapter breakdown with timestamps and per-chapter summary blocks.",
      "inputModes": ["url"],
      "outputModes": ["markdown", "json"]
    },
    {
      "id": "get_subtitle",
      "name": "Get Full Transcript / Subtitles",
      "description": "Return full transcript with timestamps for any supported source. Auto-detects existing captions or transcribes via ASR.",
      "inputModes": ["url"],
      "outputModes": ["text", "json"]
    },
    {
      "id": "create_summary_task",
      "name": "Create Async Summary Task",
      "description": "For very long videos (>30 min), kick off an async job and return a task id. Pair with get_task_status.",
      "inputModes": ["url"],
      "outputModes": ["json"]
    },
    {
      "id": "get_task_status",
      "name": "Get Async Task Status",
      "description": "Poll status / retrieve result for an async summary task created via create_summary_task.",
      "inputModes": ["text"],
      "outputModes": ["json"]
    }
  ],
  "supportsAuthenticatedExtendedCard": true,
  "tags": ["video-summarization", "audio-transcription", "podcast", "knowledge-graph", "agent-native", "mcp", "oauth2"]
}
