{"version":"1","baseUrl":"https://bibigpt.co","openApiUrl":"https://bibigpt.co/api/openapi.json","generatedAt":"2026-05-15T10:42:40.004Z","commands":[{"command":["channel-health"],"procedure":"channelHealth","method":"GET","path":"/v1/channel/health","summary":"Probe RSS health for every subscribed channel","description":"Check RSS reachability for every subscribed channel. Returns per-channel ok/error and the latest published_at when available. Reuses an in-process cache; calling shortly after get_latest_feed is essentially free.","mcpName":"get_channel_health","requiresAuth":true},{"command":["channels","list"],"procedure":"channels.list","method":"GET","path":"/v1/channels/list","summary":"List subscribed channels","description":"List the channels the user subscribes to, with last-summarized-at timestamps. Useful for the agent to surface recent activity.","mcpName":"list_channels","requiresAuth":true},{"command":["channels","subscribe"],"procedure":"channels.subscribe","method":"POST","path":"/v1/channels/subscribe","summary":"Subscribe to a channel by URL","description":"Subscribe to a YouTube/Bilibili/podcast channel by URL. Subject to subscription quota (Pro/Plus higher limits).","mcpName":"subscribe_channel","requiresAuth":true},{"command":["channels","unsubscribe"],"procedure":"channels.unsubscribe","method":"POST","path":"/v1/channels/unsubscribe","summary":"Unsubscribe from a channel","description":"Unsubscribe from a previously subscribed channel by its URL.","mcpName":"unsubscribe_channel","requiresAuth":true},{"command":["channels","videos"],"procedure":"channels.videos","method":"GET","path":"/v1/channels/videos","summary":"Latest videos from a channel","description":"Get the latest videos for a channel by URL (uses RSS / AIRSS). Use before subscribing to preview, or to refresh a channel's recent uploads.","mcpName":"get_channel_videos","requiresAuth":true},{"command":["collections","add-item"],"procedure":"collections.addItem","method":"POST","path":"/v1/collections/addItem","summary":"Add a saved video to a collection","description":"Add an item (saved video) to a collection by collectionId + sourceUrl or contentId.","mcpName":"add_to_collection","requiresAuth":true},{"command":["collections","chat-history"],"procedure":"collections.chatHistory","method":"GET","path":"/v1/collections/chatHistory","summary":"Get cached chat history for a collection","description":"Read prior chat messages and AI-suggested questions for a collection (cross-video RAG conversation). Returns empty arrays if the user has not chatted yet.","mcpName":"get_collection_chat_history","requiresAuth":true},{"command":["collections","create"],"procedure":"collections.create","method":"POST","path":"/v1/collections/create","summary":"Create a new collection","description":"Create a new collection. Pass `isPublic: true` to make it shareable.","mcpName":"create_collection","requiresAuth":true},{"command":["collections","get"],"procedure":"collections.get","method":"GET","path":"/v1/collections/get","summary":"Get a collection with its items","description":"Get a collection's details including its items (saved videos), aggregated summary, and citations if present.","mcpName":"get_collection","requiresAuth":true},{"command":["collections","list"],"procedure":"collections.list","method":"GET","path":"/v1/collections/list","summary":"List user collections (owned + purchased)","description":"List the user's collections. `scope` controls whether to return owned, purchased, or both.","mcpName":"list_collections","requiresAuth":true},{"command":["create-summary-task"],"procedure":"createSummaryTask","method":"GET","path":"/v1/createSummaryTask","summary":"Submit video summary processing task","description":"Create an async summary task for a video. Returns a taskId to poll with get_task_status. Use for long videos that take time to process.","mcpName":"create_summary_task","requiresAuth":true},{"command":["expand-url"],"procedure":"expandUrl","method":"GET","path":"/v1/expandUrl","summary":"Expand shortened video or audio URLs","requiresAuth":true},{"command":["express"],"procedure":"express","method":"GET","path":"/v1/express","summary":"Rewrite video subtitles as a polished article","requiresAuth":true},{"command":["feed"],"procedure":"feed","method":"GET","path":"/v1/feed","summary":"Latest videos across all subscribed channels (live RSS)","description":"Pull the user's personal feed by aggregating live RSS from every subscribed channel. Returns newest-first. Items the user has already summarized include a non-null contentId.","mcpName":"get_latest_feed","requiresAuth":true},{"command":["feed-mark-seen"],"procedure":"feedMarkSeen","method":"POST","path":"/v1/feed/markSeen","summary":"Bump last-seen cursor for one or all subscribed channels","description":"Mark the feed as \"read up to here\" by bumping the per-(user, channel) last_seen_at. Without channelUrl, bumps every subscription. Use after presenting feed items so the next get_latest_feed call returns only newer items.","mcpName":"mark_feed_seen","requiresAuth":true},{"command":["get-polished-text"],"procedure":"getPolishedText","method":"GET","path":"/v1/getPolishedText","summary":"Polish video subtitles into readable article segments","requiresAuth":true},{"command":["get-subtitle"],"procedure":"getSubtitle","method":"GET","path":"/v1/getSubtitle","summary":"Only returns the video subtitles array in detail","description":"Get the full transcript/subtitles of a video or podcast. Returns subtitle array with timestamps in the detail field.","mcpName":"get_subtitle","requiresAuth":true},{"command":["get-summary-task-status"],"procedure":"getSummaryTaskStatus","method":"GET","path":"/v1/getSummaryTaskStatus","summary":"Check task status and get result if completed","description":"Check the status of an async summary task. Returns the summary when completed, or current status if still processing.","mcpName":"get_task_status","requiresAuth":true},{"command":["library","get"],"procedure":"library.get","method":"GET","path":"/v1/library/get","summary":"Get a saved video with summary, chapters, subtitles, note","description":"Get a single saved video with everything attached: title, summary, user note, chapter summaries, subtitle array, source URL.","mcpName":"get_saved_video","requiresAuth":true},{"command":["library","list"],"procedure":"library.list","method":"GET","path":"/v1/library/list","summary":"List saved videos with pagination","description":"List the user's saved/summarized videos with pagination. Optional filters: channelId, tag, smartFolder, highlighted only, sort order.","mcpName":"list_saved_videos","requiresAuth":true},{"command":["library","search"],"procedure":"library.search","method":"GET","path":"/v1/library/search","summary":"Search across saved videos (title, subtitles, notes)","description":"Semantic + keyword search across the user's saved video library. Returns matched snippets with timestamps so the agent can deep-link into specific moments.","mcpName":"search_saved_videos","requiresAuth":true},{"command":["me"],"procedure":"me","method":"GET","path":"/v1/me","summary":"Get current account, plan and remaining minutes","description":"Return the current authenticated user's account info: userId, email, plan tier, member expiration, and remaining summarization minutes.","mcpName":"get_account_info","requiresAuth":true},{"command":["notes","get"],"procedure":"notes.get","method":"GET","path":"/v1/notes/get","summary":"Get a single note by content id","description":"Get the user's note (personalized summary) for a specific saved video by contentId.","mcpName":"get_note","requiresAuth":true},{"command":["notes","list"],"procedure":"notes.list","method":"GET","path":"/v1/notes/list","summary":"List user notes across all saved videos","description":"List all the user's saved notes (their personalized summaries) across content. Cursor-paginated by updated_at desc.","mcpName":"list_notes","requiresAuth":true},{"command":["notes","update"],"procedure":"notes.update","method":"POST","path":"/v1/notes/update","summary":"Create or update a note for a saved video","description":"Save or update the user's note (personalized summary) for a saved video. Overwrites any prior note for the same contentId.","mcpName":"update_note","requiresAuth":true},{"command":["notion","export-note"],"procedure":"notion.exportNote","method":"POST","path":"/v1/notion/exportNote","summary":"Export a saved video summary to Notion","description":"Export a saved video summary (note + video metadata) to the user's connected Notion workspace as a new page. Requires a prior Notion OAuth connection (see get_notion_status).","mcpName":"export_to_notion","requiresAuth":true},{"command":["notion","status"],"procedure":"notion.status","method":"GET","path":"/v1/notion/status","summary":"Check whether the user has connected Notion","description":"Check whether the user has connected their Notion workspace to BibiGPT. Returns connection state and workspace metadata; use before calling export_to_notion to give a clear error if not connected.","mcpName":"get_notion_status","requiresAuth":true},{"command":["summarize"],"procedure":"summarize","method":"GET","path":"/v1/summarize","summary":"Generate video or audio summary from url","description":"Summarize an online video or podcast. Supports YouTube, Bilibili, TikTok, Twitter/X, Xiaohongshu, podcasts, and more. Returns AI-generated summary text.","mcpName":"summarize_video","requiresAuth":true},{"command":["summarize-by-chapter"],"procedure":"summarizeByChapter","method":"GET","path":"/v1/summarizeByChapter","summary":"Generate chapter summary for url","description":"Summarize a video chapter by chapter. Returns structured summaries for each section/chapter of the video.","mcpName":"summarize_by_chapter","requiresAuth":true},{"command":["summarize-via-post"],"procedure":"summarizeViaPost","method":"POST","path":"/v1/summarize","summary":"Generate video or audio summary from url (POST variant for agent payment)","requiresAuth":true,"hidden":true},{"command":["summarize-with-config"],"procedure":"summarizeWithConfig","method":"POST","path":"/v1/summarizeWithConfig","summary":"Generate configurable summary from url based on prompt config","description":"Summarize a video with custom prompt, AI model, and output language. Use this when the user wants a specific summary style or language.","mcpName":"summarize_video_with_config","requiresAuth":true},{"command":["summary","by-prompt"],"procedure":"summary.byPrompt","method":"POST","path":"/v1/summary/byPrompt","summary":"Re-summarize a saved video with a custom prompt","description":"Generate a custom summary for a saved video using a user-provided prompt. Useful for re-angling existing content (e.g., \"extract top 3 actionable insights\"). Result is cached per (contentId, prompt) so repeats are free.","mcpName":"generate_summary_by_prompt","requiresAuth":true},{"command":["version"],"procedure":"version","method":"GET","path":"/version","summary":"Get the version of the API","requiresAuth":true},{"command":["video","mindmap"],"procedure":"video.mindmap","method":"POST","path":"/v1/video/mindmap","summary":"Generate XMind mindmap from a saved video summary","description":"Generate an XMind mindmap file (.xmind) from a saved video summary. Returns a downloadable file URL. Use after the video is summarized.","mcpName":"generate_video_mindmap","requiresAuth":true},{"command":["video","visuals"],"procedure":"video.visuals","method":"POST","path":"/v1/video/visuals","summary":"Create / look up a visual analysis task for a video","description":"Create an async visual-analysis task for a video URL: PPT slide extraction + subtitle OCR + scene markdown. Returns a taskId; poll vision.getVideoProcessingTask for status & artifacts (slides PDF, markdown, image URLs).","mcpName":"extract_video_visuals","requiresAuth":true}]}